Changeset 21456


Ignore:
Timestamp:
12/31/16 17:55:07 (8 years ago)
Author:
Eric.Larour
Message:

CHG: attempt at making it compatible with mesh3dsurface types.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/plot/plot_contour.m

    r16592 r21456  
    1414
    1515%check is2d
    16 if ~is2d,
     16if ~is2d & ~isplanet,
    1717        error('plot_contour error message: contour not supported for 3d meshes, project on a layer');
    1818end
     
    115115        y1=zeros(numelems,1);
    116116        y2=zeros(numelems,1);
     117        z1=zeros(numelems,1);
     118        z2=zeros(numelems,1);
     119
    117120        edge_l=zeros(numelems,2);
    118121
     
    129132                        y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
    130133                        y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
     134                        z1(j)=z(Seg1(poselem(j),1))+weight1*(z(Seg1(poselem(j),2))-z(Seg1(poselem(j),1)));
     135                        z2(j)=z(Seg2(poselem(j),1))+weight2*(z(Seg2(poselem(j),2))-z(Seg2(poselem(j),1)));
    131136                        edge_l(j,1)=Seg1_num(poselem(j));
    132137                        edge_l(j,2)=Seg2_num(poselem(j));
     
    138143                        y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
    139144                        y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
     145                        z1(j)=z(Seg1(poselem(j),1))+weight1*(z(Seg1(poselem(j),2))-z(Seg1(poselem(j),1)));
     146                        z2(j)=z(Seg3(poselem(j),1))+weight3*(z(Seg3(poselem(j),2))-z(Seg3(poselem(j),1)));
     147
    140148                        edge_l(j,1)=Seg1_num(poselem(j));
    141149                        edge_l(j,2)=Seg3_num(poselem(j));
     
    147155                        y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
    148156                        y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
     157                        z1(j)=z(Seg2(poselem(j),1))+weight2*(z(Seg2(poselem(j),2))-z(Seg2(poselem(j),1)));
     158                        z2(j)=z(Seg3(poselem(j),1))+weight3*(z(Seg3(poselem(j),2))-z(Seg3(poselem(j),1)));
    149159                        edge_l(j,1)=Seg2_num(poselem(j));
    150160                        edge_l(j,2)=Seg3_num(poselem(j));
     
    161171                %take the right edge of the second segment and connect it to the next segments if any
    162172                e1=edge_l(1,1);   e2=edge_l(1,2);
    163                 xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)];
     173                xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)]; zc=[z1(1);z2(1)];
    164174
    165175                %erase the lines corresponding to this edge
     
    167177                x1(1)=[]; x2(1)=[];
    168178                y1(1)=[]; y2(1)=[];
     179                z1(1)=[]; z2(1)=[];
    169180
    170181                [ro1,co1]=find(edge_l==e1);
     
    173184
    174185                        if co1==1,
    175                                 xc=[x2(ro1);xc]; yc=[y2(ro1);yc];
     186                                xc=[x2(ro1);xc]; yc=[y2(ro1);yc]; zc=[z2(ro1);zc];
    176187
    177188                                %next edge:
     
    179190
    180191                        else
    181                                 xc=[x1(ro1);xc]; yc=[y1(ro1);yc];
     192                                xc=[x1(ro1);xc]; yc=[y1(ro1);yc]; zc=[z1(ro1);zc];
    182193
    183194                                %next edge:
     
    189200                        x1(ro1)=[]; x2(ro1)=[];
    190201                        y1(ro1)=[]; y2(ro1)=[];
     202                        z1(ro1)=[]; z2(ro1)=[];
    191203
    192204                        %next connection
     
    200212
    201213                        if co2==1,
    202                                 xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];
     214                                xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)]; zc=[zc;z2(ro2)];
    203215
    204216                                %next edge:
    205217                                e2=edge_l(ro2,2);
    206218                        else
    207                                 xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)];
     219                                xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)]; zc=[zc;z1(ro2)];
    208220
    209221                                %next edge:
     
    215227                        x1(ro2)=[]; x2(ro2)=[];
    216228                        y1(ro2)=[]; y2(ro2)=[];
     229                        z1(ro2)=[]; z2(ro2)=[];
    217230
    218231                        %next connection
     
    221234
    222235                %we now have one subcontour ready to be plotted
    223                 zc=level*ones(length(xc)+1,1);
    224236                if getfieldvalue(options,'contouronly',0),
    225                         h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat','linewidth',linewidth)];
     237                        if isplanet,
     238                                h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',[zc;NaN],'facecolor','none','linewidth',linewidth)];
     239                        else
     240                                h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat','linewidth',linewidth)];
     241                        end
    226242                        hold on     
    227243                else
    228244                        dist = 5000;
    229                         if (max(xc)-min(xc)+max(yc)-min(yc))<dist, continue; end
    230                         h=patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth);
    231                         c = horzcat([level, xc'; length(xc), yc']);
     245                        if isplanet,
     246                                if (max(xc)-min(xc)+max(yc)-min(yc)+max(zc)-min(zc))<dist, continue; end
     247                                h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',[zc;NaN],'facecolor','none','linewidth',linewidth)];
     248                                c = horzcat([level, xc'; length(xc), yc'; length(xc), zc']);
     249                        else
     250                                if (max(xc)-min(xc)+max(yc)-min(yc))<dist, continue; end
     251                                h=patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth);
     252                                c = horzcat([level, xc'; length(xc), yc']);
     253                        end
    232254                        %clabel(c,h,'FontSize',10,'labelspacing',20000,'color',color);
    233255                        hold on
     
    247269        else
    248270                %clabel(c,h,'color',color,'FontSize',10,'labelspacing',20000);
    249                 clabel(c,h,'FontSize',10,'labelspacing',20000);
    250         end
    251 end
     271                %clabel(c,h,'FontSize',10,'labelspacing',20000);
     272        end
     273end
Note: See TracChangeset for help on using the changeset viewer.