用plot3 绘制的三维曲面实际上由三维曲线组合而成。可以分析plot(x’,y’,z’)所绘制的曲面的特征。
例 绘制两个直径相等的圆管相交的图形。
m=30; z=1.2*(0:m)/m; r=ones(size(z)); theta=(0:m)/m*2*pi; x1=r'*cos(theta);y1=r'*sin(theta);%生成第一个圆管的坐标矩阵 z1=z'*ones(1,m+1); x=(-m:2:m)/m; x2=x'*ones(1,m+1);y2=r'*cos(theta);%生成第一个圆管的坐标矩阵 z2=r'*sin(theta); surf(x1,y1,z1); %绘制竖立的圆管 axis equal ,axis off hold on surf(x2,y2,z2); %绘制平放的圆管 axis equal ,axis off title ('两个等直径圆管的交线'); hold off
例 分析由函数 构成的曲面形状与平面z=a的交线。
此外,还有两个和mesh函数相似的函数,即带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,其用法和mesh类似。不同的是,meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。
surf函数也有两个类似的函数,即具有等高线的曲面函数surfc和具有光照效果的曲面函数surfl。
例在xy平面内选择[-8, 8]×[-8, 8]绘制函数,
[x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1); meshc(x,y,z); title('meshc'); subplot(2,2,2); meshz(x,y,z); title('meshz'); subplot(2,2,3); surfc(x,y,z); title('surfc'); subplot(2,2,4); surfl(x,y,z); title('surfl');
3.标准三维曲面
Matlab提供了一些函数用于绘制标准三维曲面,这些函数可以产生相应的绘图数据,常用于三维图形的演示。如,sphere函数和cylind