模块十三维图形绘制◆三维线图◆三维多边形◆三维网格图◆三维曲面图◆三维柱面绘图函数三维线图函数●plot3():主要用于绘制三维曲线,该函数的调用格式同plot()函数类似。●调用格式为:plot3(X,Y,Z,LineSpec,’PropertyName’,PropertyValue)调用该函数,绘制出通过一系列坐标为X,Y,Z指定点的一条曲线。其中,X,Y,Z为第一到第三维数据,可以是向量,也可以是矩阵,但必须尺寸相等。三维线图函数●例题:绘制三维的螺旋曲线图,其中x=sint,y=cos(2t),z=sint+cost,t的区间为[0,2π]。程序如下:t=0:pi/50:2*pi;plot3(sin(t),cos(2*t),sin(t)+cos(t),'r','Linewidth',2)xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维多边形●利用plot3()函数可以绘制任意空间多边形。例如:绘制任意一个五边形x=[-12459];y=[03069];z=[50249];%所有顶点的x、y、z坐标X=[x,x(1)];Y=[y,y(1)];Z=[z,z(1)];%为了形成闭合多变形plot3(X,Y,Z)%显示多变形xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维多边形●patch()和fill3()函数:产生一个或多个多边形的填充区域。若多边形没有封闭,则patch()自动对它封闭,其调用方式如下:patch(X,Y,Z,C):C用于指定填充颜色。●例题:利用patch()填充立方体的某几个面。X=[011000;110011;110011;011000];Y=[001100;011000;011011;001111];Z=[000001;000001;111101;111101];plot3(X,Y,Z)patch(X(:,1),Y(:,1),Z(:,1),'y')patch(X(:,4),Y(:,2),Z(:,1),'b')patch(X(:,1),Y(:,6),Z(:,6),'g')xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维网格图●所谓的网格图,是指把相邻的数据点连接起来形成的网状曲面。利用在x-y平面的矩形网格点上的z轴坐标值,MATLAB定义了一个网格曲面。三维网格图的形成原理为:在x-y平面上指定一个长方形区域,采用与坐标轴平行的直线将其分格;计算矩形网格点上的函数值,即z轴的值,得到三维空间的数据点;将这些数据点分别用于x-z或者平行面内的曲线和处于y-z或者平行面内的曲线连接起来,即形成网格图。网格图对显示大型的数值矩阵很有用处。三维网格图●mesh()函数,调用方式如下:⑴mesh(X,Y,Z):绘制由X,Y,Z指定的网格曲面,图像的颜色由Z确定,即图像的颜色与高度成正比。如果参数中,X和Y是向量,length(X)=n,length(Y)=m,size(Z)=[m,n],则绘制的图形中,X(j),Y(i),Z(i,j)为图像中的各个节点。⑵mesh(Z):默认使用X=[1:n]和Y=[1:m],[m,n]=size(Z),高度为Z,这是Z为定义在矩形区域的单值函数。即以Z的元素为z坐标,元素对应的矩阵的行和列分别为x坐标和y坐标,绘制图像。⑶mesh(X,Y,Z,C):C为矩阵,图像的颜色由C决定,MATLAB对C进行线性变换,得到颜色映射表。如果X,Y,Z为矩阵,则矩阵维数与C相同。一般情况下,C=Z,即图形颜色和网格高度成正比。三维网格图●meshgrid()函数:产生平面区域内大小相同的网格坐标矩阵。调用格式:[X,Y]=meshgrid(x,y)语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。三维网格图●例题:绘制sin(R)/R函数的三维网格图。程序如下:[X,Y]=meshgrid(-8:0.5:8);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;mesh(X,Y,Z)xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维网格图●meshc()和meshz()函数,调用方式和mesh()相同。⑴meshc():在mesh()的基础上增加了在x-y平面上绘制曲面在z轴方向的等高线。⑵meshz():在mesh()的基础上增加了边界面屏蔽。三维网格图●例题:程序如下:[x,y]=meshgrid([-4:.5:4]);z=sqrt(x.^2+y.^2);figure(1)meshc(z)figure(2)meshz(z)xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维曲面图●曲面图就是把网格图表面的网格围城的小片区域用不同的颜色填充形成的彩色表面。除了网格线条间的空档用颜色填充外,它和网格图看起来是一样的。surf()和mesh()函数的用法完全相同,所不同的地方就是着色,用surf()函数建立的图形更具立体感。三维曲面图●surf()函数,调用方式如下:⑴surf(X,Y,Z):绘制一个曲面图,图像的颜色由Z确定,即图像的颜色与高度成正比。如果参数中,X和Y是向量,length(X)=n,length(Y)=m,size(Z)=[m,n],则绘制的图形中,X(j),Y(i),Z(i,j)为图像中的各个节点。⑵surf(Z):默认使用X=[1:n]和Y=[1:m],[m,n]=size(Z),高度为Z,这是Z为定义在矩形区域的单值函数。即以Z的元素为z坐标,元素对应的矩阵的行和列分别为x坐标和y坐标,绘制图像。⑶surf(X,Y,Z,C):C为矩阵,图像的颜色由C决定,MATLAB对C进行线性变换,得到颜色映射表。如果X,Y,Z为矩阵,则矩阵维数与C相同。一般情况下,C=Z,即图形颜色和网格高度成正比。三维曲面图●例题:绘制sin(R)/R函数的三维曲面图。程序如下:[X,Y]=meshgrid(-8:0.5:8);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;surf(X,Y,Z)xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维曲面图●例题:绘制多个球体,各球的中心离原点的距离由x、y、z值决定。程序如下:[x,y,z]=sphere;surf(x,y,z)holdonsurf(x+3,y-2,z)surf(x,y+1,z-3)daspect([111])xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维曲面图●surfc()函数:画出具有基本等值线的曲线。●surfl()函数:画出一个有亮度的曲线图。两者不同之处:surfl()函数是根据光照模型进行着色的,其着色原理是将环境光、散射光、镜面反射光和漫射光混合在一起作为网格表面的颜色。三维曲面图●例题:程序如下:[X,Y,Z]=peaks(30);figure(1)surfc(X,Y,Z)figure(2)surfl(X,Y,Z)三维柱面绘图函数●cylinder():画柱面及旋转曲面。调用格式:⑴[X,Y,Z]=cylinder(r,n)其中,r为圆周半径,n为圆周点数。Z的范围是0~1,X,Y的范围由r决定,即在0~1的高度上半径为r的曲线绕Z轴旋转后得到的点构成X,Y。三维柱面绘图函数⑵[X,Y,Z]=cylinder(r)默认n=20。⑶[X,Y,Z]=cylinder()默认r=1,n=20。三维柱面绘图函数●例题:绘制r=5的圆柱面。程序如下:[x,y,z]=cylinder(5,50);surf(x,y,z);xlabel('X轴')ylabel('Y轴')zlabel('Z轴')三维柱面绘图函数●例题:绘制一个花瓶。程序如下:t=0:pi/20:2*pi;[x,y,z]=cylinder(2+sin(t),30);surf(x,y,z);xlabel('X轴')ylabel('Y轴')zlabel('Z轴')小结三维线图:plot3()三维多边形:patch()或fill3()三维网格图:mesh(),meshc(),meshz()三维曲面图:surf(),surfc(),surfl()三维柱面绘图函数:cylinder()