《维立体绘》PPT课件.ppt

上传人:牧羊曲112 文档编号:5641716 上传时间:2023-08-05 格式:PPT 页数:64 大小:3.16MB
返回 下载 相关 举报
《维立体绘》PPT课件.ppt_第1页
第1页 / 共64页
《维立体绘》PPT课件.ppt_第2页
第2页 / 共64页
《维立体绘》PPT课件.ppt_第3页
第3页 / 共64页
《维立体绘》PPT课件.ppt_第4页
第4页 / 共64页
《维立体绘》PPT课件.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《《维立体绘》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《维立体绘》PPT课件.ppt(64页珍藏版)》请在三一办公上搜索。

1、MATLAB 程序设计三维立体绘图,10-1 基本立体绘图指令,mesh 和 surf:mesh:可画出立体的网状图(Mesh Plots)surf:可画出立体的曲面图(Surface Plots),z=0 2 1;3 2 4;4 4 4;7 6 8;mesh(z);xlabel(X 轴=column index);%X 轴的说明文字ylabel(Y 轴=row index);%Y 轴的说明文字,10-1 基本立体绘图指令,10-1 基本立体绘图指令,若要将与曲面对应的 x 坐标和 y 坐标都一并画出来,还是可以使用 mesh 指令,z=0 2 1;3 2 4;4 4 4;7 6 8;mesh

2、(z);xlabel(X 轴=column index);%X 轴的说明文字ylabel(Y 轴=row index);%Y 轴的说明文字for i=1:size(z,1)for j=1:size(z,2)h=text(j,i,z(i,j),num2str(z(i,j);%标示曲面高度set(h,hori,center,vertical,bottom,color,r);%改变位置及颜色endend,10-1 基本立体绘图指令,10-1 基本立体绘图指令,meshgrid 的作用是产生 x 及 y(均为向量)为基准的格子点(Grid Points),其输出为 xx 及 yy(均为矩阵),分别代表

3、格子点的 x 坐标及 y 坐标。,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);axis tightsubplot(2,2,2);mesh(yy);title(yy);axis tightsubplot(2,2,3);mesh(xx,yy,zz);title(zz 对 xx 及 yy 作图);axis tight,10-1 基本立体绘图指令,使用 linspace 来产生较密集的数据,以便画出由函数 形成的

4、立体网状图,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 都是 2525 的矩阵 zz=xx.*exp(-xx.2-yy.2);%计算函数值,zz 也是 2525 的矩阵mesh(xx,yy,zz);%画出立体网状图,10-1 基本立体绘图指令,10-1 基本立体绘图指令,surf 和 mesh 指令的用法类似,x=linspace(-2,2,25);%在 x 轴-2,2 之间取 25 点 y=linspace(-2,2,2

5、5);%在 y 轴-2,2 之间取 25 点 xx,yy=meshgrid(x,y);%xx 和 yy 都是 2525 的矩阵 zz=xx.*exp(-xx.2-yy.2);%zz 也是 252 的矩阵 surf(xx,yy,zz);%画出三维曲面图,10-1 基本立体绘图指令,10-1 基本立体绘图指令,10-1 基本立体绘图指令,peaks:为了方便测试立体绘图,MATLAB 提供了一个 peaks 函数,可产生一个凹凸有致的曲面,包含了三个局部极大点(Local Maxima)及三个局部极小点(Local Minima)其方程式为:,10-1 基本立体绘图指令,画出此函数的最快方法,即是

6、在 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),10-1 基本立体绘图指令,peaks的图形,10-1 基本立体绘图指令,meshz:meshz 指令有将曲面加上围裙或舞台的效果,x,y,z=peaks;meshz(x,y,z);axis tight;,10-1 基本立体绘图指令,10-1 基本立体绘图指令,waterfall:waterfall 指令可在 x 方向或 y 方向产生水流效果,x,y,z

7、=peaks;waterfall(x,y,z);axis tight;,10-1 基本立体绘图指令,10-1 基本立体绘图指令,meshc:meshc 可同时画出网状图与等高线(Contours),x,y,z=peaks;meshc(x,y,z);axis tight;,10-1 基本立体绘图指令,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 的曲线,10-1 基本立

8、体绘图指令,10-1 基本立体绘图指令,plot3:亦可同时画出两条三度空间中的曲线,t=linspace(0,10*pi,501);plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);%同时画两条曲线,10-1 基本立体绘图指令,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);,10-1 基本立体绘图指令,10-1 基本立体绘图指令

9、,plot3:上例中,所有的数据点都必需是在格子点上,MATLAB 才能根据每点的高度来作图。如果所给的数据点不在格子点上,我们必需先用 griddata 指令来进行内插法以产生格子点,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);hold onplot3

10、(x,y,z,.,MarkerSize,16);%昼出 100 个取样 hold offaxis tight,10-1 基本立体绘图指令,10-1 基本立体绘图指令,整理:基本三维立体绘图指令的列表,10-1 基本立体绘图指令,整理:基本三维立体绘图指令的列表,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

11、);subplot(2,2,3);ezmeshc(sin(x)/x*sin(y)/y);subplot(2,2,4);ezsurfc(sin(x*y)/(x*y);,10-1 基本立体绘图指令,10-2 立体图形与图轴的基本技巧,hidden off:在绘制网状图时,MATLAB 会隐藏被遮盖的网线,若要使被遮盖的网线亦能呈现出来,可用 hidden off 指令若再键入 hidden on,则恢复原先的设定,x,y,z=peaks;mesh(x,y,z);hidden off axis tight,10-2 立体图形与图轴的基本技巧,10-2 立体图形与图轴的基本技巧,整理:以 on/off

12、 来切换的指令:,10-2 立体图形与图轴的基本技巧,rotate3d on:若要能够旋转立体图形,可已在产生 3D 图形之后(例如输入 peaks 之后),再输入rotate3d on,此时您可以压下鼠标左键来拖曳图轴,以选取最理想的观测角度。也可以点选图形窗口上面的 图标,就可以开始旋转立体图形。,10-2 立体图形与图轴的基本技巧,三维曲线的观测角度:一般而言,三维曲线的观测角度是由 Azimuth 及 Elevation 来决定,10-2 立体图形与图轴的基本技巧,对二维图形而言,默认值为 Azimuth=0,Elevation=90;对三维图形而言,默认值为 Azimuth=-37.

13、5,Elevation=30。若要改变观测角度,可用 view 指令,peaks;view(0,-30);,10-2 立体图形与图轴的基本技巧,10-2 立体图形与图轴的基本技巧,NaN:有时候我们希望将曲面图切掉一部份,以呈现不同的效果,此时可用 NaN 或 nan(Not a Number,即“非数值”)来取代矩阵某一部份的值,MATLAB 一碰到 NaN,就会“镂空”,X,Y,Z=peaks;Z(10:20,10:20)=nan;%将 Z 矩阵的一部分代换为 nansurf(X,Y,Z);axis tight,10-2 立体图形与图轴的基本技巧,10-3 曲面颜色的控制,colorbar

14、:利用 colorbar 指令,可显示 MATLAB 如何以不同颜色来代表曲面的高度例如先输入peaks,再输入colorbar,10-3 曲面颜色的控制,整理:常用颜色的 RGB 成分:,10-3 曲面颜色的控制,colormap:MATLAB 预设的颜色对应表可由 colormap 得知cm 是一个 643 的矩阵,因此 MATLAB 在画图时,会把 cm 第一列的颜色设定给曲面的最高点,把 cm 的最后一列的颜色设定给曲面的最低点,其余高度的颜色则依线性内插法来决定,cm=colormap;size(cm)ans=64 3,10-3 曲面颜色的控制,colormap:改变颜色对应表,可得

15、到不同颜色的曲面,欲改变颜色对应表,也是用 colormap 指令,peaks;colormap(rand(64,3);%以随机数生成颜色对应表colorbar;,10-3 曲面颜色的控制,10-3 曲面颜色的控制,整理:MATLAB 现成的颜色对照表:,10-3 曲面颜色的控制,cool:使您的曲面使用感觉较冷的颜色,peaks;colormap cool;colorbar,10-3 曲面颜色的控制,10-3 曲面颜色的控制,surf和mesh的颜色设定:除了以高度来设定颜色之外,surf 及 mesh 指令都可以接受第 4 个输入自变量来作为设定颜色的依据例如:以曲面的斜率来设定颜色,X,

16、Y,Z=peaks;surf(X,Y,Z,gradient(Z);axis tight;colormap hot,10-3 曲面颜色的控制,10-3 曲面颜色的控制,surf和mesh的颜色设定:例如:以曲面的曲率来设定颜色,X,Y,Z=peaks;surf(X,Y,Z,del2(Z);axis tight;colormap hot,10-3 曲面颜色的控制,10-3 曲面颜色的控制,brighten:我们可用 brighten 指令来使颜色对照表变亮或变暗,colormap coppersubplot(3,1,1);rgbplot(colormap);brighten(colormap,0.

17、5)subplot(3,1,2);rgbplot(colormap);brighten(colormap,-0.8)subplot(3,1,3);rgbplot(colormap);,10-3 曲面颜色的控制,10-3 曲面颜色的控制,True Color:前例MATLAB 决定颜色的方法称为索引颜色(Indexed Color)法,因为曲面上每个方块先对应至颜色对应表的索引如果您的显示器能支持 24 位全彩,则我们可以直接定义一千六百万(224)种颜色,而不需要再定义颜色对应表。此种方法称为真实颜色(True Color)法,10-3 曲面颜色的控制,Z=peaks(50);C(:,:,1)

18、=rand(50);%C(:,:,1)代表 R(Red,红色)的份量C(:,:,2)=rand(50);%C(:,:,2)代表 G(Green,绿色)的份量C(:,:,3)=rand(50);%C(:,:,3)代表 B(Blue,蓝色)的份量subplot(1,1,1);surf(Z,C);axis tight,10-3 曲面颜色的控制,10-3 曲面颜色的控制,shading:若要使表面的颜色产生连续性的变化,可使用 shading 指令 例如我们可以先输入peaks,再输入shading interp,就可以得到下列颜色渐进变化的图形,10-3 曲面颜色的控制,整理:,10-3 曲面颜色的控制,colormap和shading:使用 colormap 及 shading,可产生意想不到的结果,surfl(peaks);%曲面图加上光源 axis tightcolormap(pink);shading interp,10-3 曲面颜色的控制,是不是很像平滑无暇的丝缎呢?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号