资源描述:
《matlab-三维曲面的自动绘制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、设计目的Matlab有两类绘图命令,一类是直接对图形句柄进行操作的低层绘图命令,另一类是在低层命令基础上建立起来的高层绘图命令。高层绘图命令简单明了、方便高效。利用高层绘图函数,用户不需过多考虑绘图细节,只需给出一些基本参数就能得到所需图形。在三维曲面的绘制中,Matlab提供了meshgrid函数、meshwaterfall、函数、surf函数、Surfl函数和patch函数。他们的使用方法基本相同。在Matlab中,为了表现图形的显示效果,提供了一些控制函数,有视角的控制、光度的控制、色彩的控制和透明度的控制等。在三维图形的
2、最佳视觉效果中,Matlab提供了两种方法:一是改变观看的角度(视角),二是旋转图形。视角由函数view控制,旋转有两个指令:rotate和rotate3d。光照的控制主要有camlight指令、lighting指令、material函数、light函数、lightangle函数。色彩控制包括颜色的向量表示、色图、三维表面图形的着色以及浓淡处理。图形的透明值用0和1之间的值表示,常用alpha来说明。二、设计思路绘制所代表的三维曲面图,先要在平面选定一矩形区域,假定矩形区域,然后将在方向分成份,将在方向分成份,由各划分点分别作平行于
3、两坐标轴的直线,将区域D分成个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数求对应网格坐标的Z矩阵。在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:x=a:d1:b;y=c:d2:d;[X,Y]=meshgrid(x,y);语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。当x=y时,meshgrid函数可写成meshgrid(x)。当函数不能简单表示出来时,便只能用for循环或while循环来计算z的元
4、素。不过在很多情况下,可以按行或按列计算z,优势必须一个一个地计算z中的元素,这是用嵌套循环进行计算。三、设计程序及说明绘制三维曲面MATLAB提供了mesh函数和surf函数来绘制三维曲面图。surf函数和mesh函数的调用格式为:mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。1.1绘制三维曲面图z=sin(x+sin(y
5、))-x/10。11程序如下:[x,y]=meshgrid(0:0.25:4*pi);%在[0,4pi]×[0,4pi]区域生成网格坐标z=sin(x+sin(y))-x/10;mesh(x,y,z);axis([04*pi04*pi-2.51]);图表一此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。1.2在xy平面内选择区域[-8,8]×[-8,8],绘制函数z=sin√x
6、2+y2√x2+y2的4种三维曲面图。程序如下:[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshc(x,y,z);11title('meshc(x,y,z)')subplot(2,2,3);meshz(x,y,z)title('meshz(x,y,z)')subplot(2,2,4);surf(x,y,z);tit
7、le('surf(x,y,z)')图表二标准三维曲面MATLAB提供了一些函数用于绘制标准三维曲面,还可以利用这些函数产生相应的绘图数据,常用于三维图形的演示。三维球面和柱面sphere函数和cylinder函数分别用与绘制三维球面和柱面。sphere函数的调用格式为:[x,y,z]=sphere(n)该函数将产生(n+1)×(n+1)矩阵x、y、z,采用这三个矩阵可以绘制出圆心位于远点、半径为1的单位球体。若在该调用函数是不带输出参数,将直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取得较小,则将绘制出多面体表面
8、图。11cylinder函数的调用格式为:[x,y,z]=cylinder(R,n)其中,R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,缺省时表示有20个间隔点。例如,cylinder(3)生成一个圆柱