MATLAB图形的透视、镂空和裁切实例

透视

MATLAB在采用默认设置画mesh图形时,对叠压在后面的图形采取了消隐措施,后面的图形会被遮住。但有时却需要透视效果。为此,有以下两个控制消隐效果的命令

hidden off   % 透视被叠压的图形
hidden on   %消隐被叠压的图形

实例:

%图形的透视
>> [XO,YO,ZO]=sphere(30);   %产生单位球面的三维坐标
>> X=2*XO;    %产生半径为2的球面三维坐标
>> Y=2*YO;
>> Z=2*ZO;
>> surf(XO,YO,ZO);    %画单位球面
>> hold on
>> mesh(X,Y,Z),colormap(hot)   %采用hot色图
>> hold off
>> hidden off      %产生透视效果
>> axis equal,axis off   %不显示坐标轴
透视效果如下:

MATLAB图形的透视、镂空和裁切实例_第1张图片

说明:1,hidden对surf命令绘制的表面图不发生任何影响;

           2,alpha命令可对透明度进行更细致的控制。


镂空


演示:如何利用“非数”NaN,对图形进行镂空处理

>> clear
>> P=peaks(30);   %从MATLAB提供的双变量正态分布曲面获取数据
>> P(18:20,9:15)=NaN;   %为镂空赋值
>> surfc(P);    %带等位线的曲面图
>> colormap(hot)
>> light('position',[50,-10,5])
>> material([0.9,0.9,0.6,15,0.4])
>> grid off
>> box on
MATLAB图形的透视、镂空和裁切实例_第2张图片

裁切

有时为了看清图形需要表现切面,应该把被切部分强制为0.

实例:

>> x=[-8:0.1:8];
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> ZZ=X.^2-Y.^2;
>> ii=find(abs(X)>6|abs(Y)>6);   %确定超出[-6,6]范围格点下标
>> ZZ(ii)=zeros(size(ii));    %强制为0
>> surf(X,Y,ZZ)
>> shading interp;
>> colormap(copper)
>> light('position',[0,-15,1]);
>> lighting phong 
>> material([0.8,0.8,0.5,10,0.5])
MATLAB图形的透视、镂空和裁切实例_第3张图片


你可能感兴趣的:(MATLAB图形的透视、镂空和裁切实例)