三维立体绘图_第1页
三维立体绘图_第2页
三维立体绘图_第3页
三维立体绘图_第4页
三维立体绘图_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

三维立体绘图第1页/共64页10-1基本立体绘图指令第2页/共64页10-1基本立体绘图指令若要将与曲面对应的x坐标和y坐标都一并画出来,还是可以使用mesh指令z=[021;324;444;768];mesh(z);xlabel('X轴=columnindex'); %X轴的说明文字ylabel('Y轴=rowindex'); %Y轴的说明文字fori=1:size(z,1) forj=1:size(z,2) h=text(j,i,z(i,j),num2str(z(i,j))); %标示曲面高度

set(h,'hori','center','vertical','bottom','color','r');%改变位置及颜色

endend第3页/共64页10-1基本立体绘图指令第4页/共64页10-1基本立体绘图指令meshgrid的作用是产生x及y(均为向量)为基准的格子点(GridPoints),其输出为xx及yy(均为矩阵),分别代表格子点的x坐标及y坐标。第5页/共64页10-1基本立体绘图指令

x=3:6;y=5:9;[xx,yy]=meshgrid(x,y); %xx和yy都是矩阵zz=xx.*yy; %计算函数值zz,也是矩阵subplot(2,2,1);mesh(xx);title('xx');axistightsubplot(2,2,2);mesh(yy);title('yy');axistightsubplot(2,2,3);mesh(xx,yy,zz);title('zz对xx及yy作图');axistight第6页/共64页10-1基本立体绘图指令第7页/共64页

使用linspace来产生较密集的数据,以便画出由函数形成的立体网状图x=linspace(-2,2,25); %在x轴[-2,2]之间取25点y=linspace(-2,2,25); %在y轴[-2,2]之间取25点[xx,yy]=meshgrid(x,y); %xx和yy都是25×25的矩阵zz=xx.*exp(-xx.^2-yy.^2); %计算函数值,zz也是25×25的矩阵mesh(xx,yy,zz); %画出立体网状图10-1基本立体绘图指令第8页/共64页10-1基本立体绘图指令

第9页/共64页surf和mesh指令的用法类似x=linspace(-2,2,25); %在x轴[-2,2]之间取25点y=linspace(-2,2,25); %在y轴[-2,2]之间取25点[xx,yy]=meshgrid(x,y); %xx和yy都是25×25的矩阵zz=xx.*exp(-xx.^2-yy.^2); %zz也是25×2的矩阵surf(xx,yy,zz); %画出三维曲面图10-1基本立体绘图指令第10页/共64页10-1基本立体绘图指令

第11页/共64页10-1基本立体绘图指令peaks:为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点(LocalMaxima)及三个局部极小点(LocalMinima)其方程式为:

第12页/共64页10-1基本立体绘图指令画出此函数的最快方法,即是在MATLAB命令窗口直接键入peaks,可得到下列方程式z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)...-1/3*exp(-(x+1).^2-y.^2)第13页/共64页10-1基本立体绘图指令peaks的图形第14页/共64页10-1基本立体绘图指令meshz:meshz指令有将曲面加上「围裙」或「舞台」的效果[x,y,z]=peaks;meshz(x,y,z);axistight;第15页/共64页10-1基本立体绘图指令第16页/共64页10-1基本立体绘图指令waterfall:waterfall指令可在x方向或y方向产生水流效果[x,y,z]=peaks;waterfall(x,y,z);axistight;第17页/共64页10-1基本立体绘图指令第18页/共64页10-1基本立体绘图指令meshc:meshc可同时画出网状图与「等高线」(Contours)[x,y,z]=peaks;meshc(x,y,z);axistight;第19页/共64页10-1基本立体绘图指令第20页/共64页10-1基本立体绘图指令plot3:plot3指令可画出三度空间中的曲线t=linspace(0,20*pi,501); %在0及20*pi中间取501点plot3(t.*sin(t),t.*cos(t),t); %画出tsin(t),tcos(t),t的曲线第21页/共64页10-1基本立体绘图指令第22页/共64页10-1基本立体绘图指令plot3:亦可同时画出两条三度空间中的曲线t=linspace(0,10*pi,501);plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t); %同时画两条曲线第23页/共64页10-1基本立体绘图指令第24页/共64页10-1基本立体绘图指令plot3:如果输入自变量是三个大小相同的矩阵x、y、z,那么plot3会依序画出每个行向量在三度空间所对应的曲线[x,y]=meshgrid(-2:0.1:2);z=y.*exp(-x.^2-y.^2);plot3(x,y,z);第25页/共64页10-1基本立体绘图指令第26页/共64页10-1基本立体绘图指令plot3:上例中,所有的数据点都必需是在格子点上,MATLAB才能根据每点的高度来作图。如果所给的数据点不在格子点上,我们必需先用griddata指令来进行内插法以产生格子点第27页/共64页10-1基本立体绘图指令x=6*rand(100,1)-3; %x为介于[-3,3]的100点随机数y=6*rand(100,1)-3; %y为介于[-3,3]的100点随机数z=peaks(x,y); %z为peaks指令产生的100点输出[X,Y]=meshgrid(-3:0.1:3);Z=griddata(x,y,z,X,Y,'cubic');mesh(X,Y,Z);holdonplot3(x,y,z,'.','MarkerSize',16); %昼出100个取样holdoffaxistight第28页/共64页10-1基本立体绘图指令第29页/共64页10-1基本立体绘图指令整理:基本三维立体绘图指令的列表类别指令说明网状图mesh,ezmesh立体网状图meshc,ezmeshc网状图加上等高线meshz网状图加上“围裙”(或“舞台”)曲面图surf,ezsurf三维曲面图surfc,ezsurfc曲面图加上等高线surfl曲面图加上光源第30页/共64页10-1基本立体绘图指令整理:基本三维立体绘图指令的列表类别指令说明曲线图plot3,ezplot3立体曲线图低阶函数surfaceSurf用到的低阶指令line3Plot3用到的低阶指令等高线contour,ezcontour平面上的等高线contour3空间中的等高线影像表示pcolor在二维平面中以颜色表示曲面的高度第31页/共64页10-1基本立体绘图指令ezmesh,ezsurf:如果我们只是要很快地检视一个具有二个输入的函数的图形,就可以使用ezmesh或是ezsurf等来快速地画出函数的曲面图形subplot(2,2,1); ezmesh('sin(x)/x*sin(y)/y');subplot(2,2,2); ezsurf('sin(x*y)/(x*y)');subplot(2,2,3); ezmeshc('sin(x)/x*sin(y)/y');subplot(2,2,4); ezsurfc('sin(x*y)/(x*y)');第32页/共64页10-1基本立体绘图指令第33页/共64页10-2立体图形与图轴的基本技巧hiddenoff:在绘制网状图时,MATLAB会隐藏被遮盖的网线,若要使被遮盖的网线亦能呈现出来,可用hiddenoff指令若再键入hiddenon,则恢复原先的设定

[x,y,z]=peaks;mesh(x,y,z);hiddenoffaxistight第34页/共64页10-2立体图形与图轴的基本技巧第35页/共64页10-2立体图形与图轴的基本技巧整理:以on/off来切换的指令:指令说明hiddenon/off隐藏(on)或显示(off)被遮盖的网线。zoomon/off允许(on)或取消(off)以鼠标点选来放大图形。rotate3don/off允许(on)或取消(off)以鼠标点选来旋转三维图轴。axison/off显示(on)或不显示(off)图轴。boxon/off显示(on)或不显示(off)图轴的外框。holdon/off在绘制新图时,保留(on)或消去(off)旧图。moreon/off允许(on)或不允许(off)指令窗口的输出暂停。echoon/off允许(on)或不允许(off)指令在档案内执行时,逐一显示在窗口。第36页/共64页10-2立体图形与图轴的基本技巧rotate3don:若要能够旋转立体图形,可已在产生3D图形之后(例如输入peaks之后),再输入「rotate3don」,此时您可以压下鼠标左键来拖曳图轴,以选取最理想的观测角度。也可以点选图形窗口上面的图标,就可以开始旋转立体图形。第37页/共64页10-2立体图形与图轴的基本技巧

三维曲线的观测角度:一般而言,三维曲线的观测角度是由Azimuth及Elevation来决定ElevationAzimuth观测点原点xzy第38页/共64页10-2立体图形与图轴的基本技巧对二维图形而言,默认值为Azimuth=0°,Elevation=90°;对三维图形而言,默认值为Azimuth=-37.5°,Elevation=30°。若要改变观测角度,可用view指令peaks;view([0,-30]);第39页/共64页10-2立体图形与图轴的基本技巧第40页/共64页10-2立体图形与图轴的基本技巧

NaN:有时候我们希望将曲面图切掉一部份,以呈现不同的效果,此时可用NaN或nan(NotaNumber,即“非数值”)来取代矩阵某一部份的值,MATLAB一碰到NaN,就会“镂空”[X,Y,Z]=peaks;Z(10:20,10:20)=nan; %将Z矩阵的一部分代换为nansurf(X,Y,Z);axistight第41页/共64页10-2立体图形与图轴的基本技巧第42页/共64页10-3曲面颜色的控制

colorbar:利用colorbar指令,可显示MATLAB如何以不同颜色来代表曲面的高度例如先输入「peaks」,再输入「colorbar」第43页/共64页10-3曲面颜色的控制

整理:常用颜色的RGB成分:颜色Red(红色)Green(绿色)Blue(蓝色)black(黑)000white(白)111red(红)100green(绿)010blue(蓝)001yellow(黄)110magenta(锰紫)101cyan(青蓝)011gray(灰)0.50.50.5darkred(暗红)0.500copper(铜色)10.620.4aquamarine(碧绿)0.4910.83第44页/共64页10-3曲面颜色的控制

colormap:MATLAB预设的颜色对应表可由colormap得知

cm是一个64×3的矩阵,因此MATLAB在画图时,会把cm第一列的颜色设定给曲面的最高点,把cm的最后一列的颜色设定给曲面的最低点,其余高度的颜色则依线性内插法来决定>>cm=colormap;>>size(cm)ans= 643第45页/共64页10-3曲面颜色的控制

colormap:改变颜色对应表,可得到不同颜色的曲面,

欲改变颜色对应表,也是用colormap指令peaks;colormap(rand(64,3)); %以随机数生成颜色对应表colorbar;第46页/共64页10-3曲面颜色的控制第47页/共64页10-3曲面颜色的控制

整理:MATLAB现成的颜色对照表:第48页/共64页10-3曲面颜色的控制

cool:使您的曲面使用感觉较冷的颜色peaks;colormapcool;colorbar第49页/共64页10-3曲面颜色的控制第50页/共64页10-3曲面颜色的控制

surf和mesh的颜色设定:除了以高度来设定颜色之外,surf及mesh指令都可以接受第4个输入自变量来作为设定颜色的依据例如:以曲面的斜率来设定颜色

[X,Y,Z]=peaks;surf(X,Y,Z,gradient(Z));axistight;colormaphot第51页/共64页10-3曲面颜色的控制第52页/共64页10-3曲面颜色的控制

surf和mesh的颜色设定:例如:以曲面的曲率来设定颜色

[X,Y,Z]=peaks;surf(X,Y,Z,del2(Z));axistight;colormaphot第53页/共64页10-3曲面颜色的控制第54页/共64页10-3曲面颜色的控制

brighten:我们可用brighten指令来使颜色对照表变亮或变暗colormapcoppersubplot(3,1,1);rgbplot(colormap);brighten(colormap,0.5)subplot(3,1,2);rgbplot(colormap);brighten(colormap,-0.8) subplot(3,1,3);rgbplot(colormap);第55页/共64页10-3曲面颜色的控制第56页/共64页10-3曲面颜色的控制

TrueColor:前例MATLAB决定颜色的方法称为「索引颜色」(IndexedColor)法,因为曲面上每个方块先对应至颜色对应表的索引如果您的显示器能支持24位全彩,则我们可以直接定义一千六百万(2^24)种颜色,而不需要再定义颜色对应表。此种方法称为「真实颜色」(TrueColor)法第57页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论