Changeset 177 for trunk/src/plot_object.m
- Timestamp:
- Jan 7, 2011, 1:53:05 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/plot_object.m
r156 r177 92 92 93 93 %% default input parameters 94 if ~isfield(ObjectData,'ProjMode')| isempty(ObjectData.ProjMode)94 if ~isfield(ObjectData,'ProjMode')||isempty(ObjectData.ProjMode) 95 95 ObjectData.ProjMode='projection';%default 96 96 end 97 if ~isfield(ObjectData,'Coord')| isempty(ObjectData.Coord)97 if ~isfield(ObjectData,'Coord')||isempty(ObjectData.Coord) 98 98 ObjectData.Coord=[0 0 0];%default 99 99 end 100 if ~isfield(ObjectData,'Phi')| isempty(ObjectData.Phi)100 if ~isfield(ObjectData,'Phi')||isempty(ObjectData.Phi) 101 101 ObjectData.Phi=0;%default 102 102 end … … 131 131 YMax=max(XMax,YMax); 132 132 YMax=max(YMax,ZMax); 133 elseif isequal(ObjectData.Style,'rectangle')| isequal(ObjectData.Style,'ellipse')|isequal(ObjectData.Style,'volume')133 elseif isequal(ObjectData.Style,'rectangle')||isequal(ObjectData.Style,'ellipse')||isequal(ObjectData.Style,'volume') 134 134 if isequal(YMax,0) 135 135 ylim=get(haxes,'YLim'); … … 159 159 xline=ObjectData.Coord(:,1); 160 160 yline=ObjectData.Coord(:,2); 161 nbpoints=numel(xline); 161 162 if isequal(ObjectData.Style,'polygon') 162 163 xline=[xline; ObjectData.Coord(1,1)];%closing the line 163 164 yline=[yline; ObjectData.Coord(1,2)]; 164 elseif isequal(ObjectData.Style,'plane')| isequal(ObjectData.Style,'volume')165 elseif isequal(ObjectData.Style,'plane')|| isequal(ObjectData.Style,'volume') 165 166 phi=ObjectData.Phi*pi/180;%angle in radians 166 167 Xend_x=xline(1)+XMax*cos(phi); … … 180 181 SubLineStyle='--'; %range of projection marked by dash 181 182 if isfield (ObjectData,'DX') 182 rmfield(ObjectData,'DX');183 ObjectData=rmfield(ObjectData,'DX'); 183 184 end 184 185 if isfield (ObjectData,'DY') 185 rmfield(ObjectData,'DY');186 ObjectData=rmfield(ObjectData,'DY'); 186 187 end 187 188 elseif isequal(ObjectData.ProjMode,'filter') … … 189 190 end 190 191 end 191 if isequal(ObjectData.Style,'line')| isequal(ObjectData.Style,'polyline')|isequal(ObjectData.Style,'polygon')192 if isequal(ObjectData.Style,'line')||isequal(ObjectData.Style,'polyline')||isequal(ObjectData.Style,'polygon') 192 193 if length(xline)<2 193 194 theta=0; … … 223 224 scale_x=2*1.4*XMax/npMx; 224 225 scale_y=2*1.4*YMax/npMy; 225 xi= [0.5:npMx-0.5]*scale_x+xlim(1);226 yi= [0.5:npMy-0.5]*scale_y+ylim(1);226 xi=(0.5:npMx-0.5)*scale_x+xlim(1); 227 yi=(0.5:npMy-0.5)*scale_y+ylim(1); 227 228 [Xi,Yi]=meshgrid(xi,yi); 228 229 X2Max=XMax*XMax; … … 231 232 distY=(Yi-ObjectData.Coord(1,2)); 232 233 flag=(distX.*distX/X2Max+distY.*distY/Y2Max)<1; 233 elseif isequal(ObjectData.Style,'rectangle')| isequal(ObjectData.Style,'volume')234 elseif isequal(ObjectData.Style,'rectangle')||isequal(ObjectData.Style,'volume') 234 235 XimaMin=ObjectData.Coord(1,1)-XMax; 235 236 XimaMax=ObjectData.Coord(1,1)+XMax; … … 240 241 scale_x=2*1.4*XMax/npMx; 241 242 scale_y=2*1.4*YMax/npMy; 242 xi= [0.5:npMx-0.5]*scale_x+xlim(1);243 yi= [0.5:npMy-0.5]*scale_y+ylim(1);243 xi=(0.5:npMx-0.5)*scale_x+xlim(1); 244 yi=(0.5:npMy-0.5)*scale_y+ylim(1); 244 245 [Xi,Yi]=meshgrid(xi,yi); 245 246 distX=abs(Xi-ObjectData.Coord(1,1)); … … 270 271 271 272 PlotData=[];%default 273 272 274 %% MODIFY AN EXISTING OBJECT PLOT 273 275 if test_newobj==0; … … 301 303 for ipt=1:length(PlotData.DeformPoint) 302 304 if ishandle(PlotData.DeformPoint(ipt)) 303 if length(xline)>=ipt & length(yline)>=ipt305 if nbpoints>=ipt 304 306 set(PlotData.DeformPoint(ipt),'XData',xline(ipt),'YData',yline(ipt)); 305 307 end 306 308 end 307 309 end 308 if length(xline)>length(PlotData.DeformPoint)309 for ipt=length(PlotData.DeformPoint)+1: length(xline)310 if nbpoints>length(PlotData.DeformPoint) 311 for ipt=length(PlotData.DeformPoint)+1:nbpoints 310 312 PlotData.DeformPoint(ipt)=line(xline(ipt),yline(ipt),'Color',col,'LineStyle','.','Tag','DeformPoint',... 311 313 'SelectionHighlight','off','UserData',hplot); … … 314 316 end 315 317 end 316 elseif isequal(ObjectData.Style,'rectangle')| isequal(ObjectData.Style,'ellipse')318 elseif isequal(ObjectData.Style,'rectangle')||isequal(ObjectData.Style,'ellipse') 317 319 set(hplot,'Position',[ObjectData.Coord(1,1)-XMax ObjectData.Coord(1,2)-YMax 2*XMax 2*YMax]) 318 320 end … … 334 336 hother=findobj('Tag','proj_object');%find all the proj objects 335 337 for iobj=1:length(hother) 336 if isequal(get(hother(iobj),'Type'),'rectangle')|isequal(get(hother(iobj),'Type'),'patch')338 if strcmp(get(hother(iobj),'Type'),'rectangle')|| strcmp(get(hother(iobj),'Type'),'patch') 337 339 set(hother(iobj),'EdgeColor','b') 338 340 if isequal(get(hother(iobj),'FaceColor'),'m') … … 363 365 end 364 366 end 365 elseif isequal(ObjectData.Style,'line')|isequal(ObjectData.Style,'polyline')|...366 isequal(ObjectData.Style,'polygon') |isequal(ObjectData.Style,'plane')|isequal(ObjectData.Style,'volume')% (isequal(ObjectData.Style,'polygon') & ~test_patch) |isequal(ObjectData.Style,'plane')367 elseif strcmp(ObjectData.Style,'line')||strcmp(ObjectData.Style,'polyline')||... 368 strcmp(ObjectData.Style,'polygon') ||strcmp(ObjectData.Style,'plane')||strcmp(ObjectData.Style,'volume')% (isequal(ObjectData.Style,'polygon') & ~test_patch) |isequal(ObjectData.Style,'plane') 367 369 hh=line(xline,yline,'Color',col); 368 if ~isequal(ObjectData.Style,'plane')& ~isequal(ObjectData.Style,'volume') 370 if ~strcmp(ObjectData.Style,'plane') && ~strcmp(ObjectData.Style,'volume') 371 PlotData.SubObject(1)=line(xinf,yinf,'Color',col,'LineStyle',SubLineStyle,'Tag','proj_object');%draw sub-lines 372 PlotData.SubObject(2)=line(xsup,ysup,'Color',col,'LineStyle',SubLineStyle,'Tag','proj_object'); 369 373 for ipt=1:sizcoord(1) 370 374 PlotData.DeformPoint(ipt)=line(ObjectData.Coord(ipt,1),ObjectData.Coord(ipt,2),'Color',... 371 375 col,'LineStyle','none','Marker','.','Tag','DeformPoint','SelectionHighlight','off','UserData',hh); 372 376 end 373 PlotData.SubObject(1)=line(xinf,yinf,'Color',col,'LineStyle',SubLineStyle,'Tag','proj_object');%draw sub-lines374 PlotData.SubObject(2)=line(xsup,ysup,'Color',col,'LineStyle',SubLineStyle,'Tag','proj_object');375 377 end 376 378 377 elseif isequal(ObjectData.Style,'rectangle')379 elseif strcmp(ObjectData.Style,'rectangle') 378 380 hh=rectangle('Position',[ObjectData.Coord(1,1)-XMax ObjectData.Coord(1,2)-YMax 2*XMax 2*YMax],'EdgeColor',col); 379 elseif isequal(ObjectData.Style,'ellipse')381 elseif strcmp(ObjectData.Style,'ellipse') 380 382 hh=rectangle('Curvature',[1 1],'Position',[ObjectData.Coord(1,1)-XMax ObjectData.Coord(1,2)-YMax 2*XMax 2*YMax],'EdgeColor',col); 381 383 else … … 387 389 hold on 388 390 hhh=image([xlim(1)+dx/2 xlim(2)-dx/2],[ylim(1)+dy/2 ylim(2)-dy/2],imflag,'Tag','proj_object','HitTest','off'); 389 set(hhh,'AlphaData',(flag)*0.2) 391 set(hhh,'AlphaData',(flag)*0.2)% set partial transparency to the filling color 390 392 PlotData.SubObject=hhh; 391 393 end
Note: See TracChangeset
for help on using the changeset viewer.