维立体绘课件

上传人:阳*** 文档编号:84008275 上传时间:2022-05-02 格式:PPT 页数:64 大小:3.17MB
返回 下载 相关 举报
维立体绘课件_第1页
第1页 / 共64页
维立体绘课件_第2页
第2页 / 共64页
维立体绘课件_第3页
第3页 / 共64页
点击查看更多>>
资源描述
维立体绘课件MATLAB 三维立体绘图MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nmesh 和 surf:nmesh:可画出立体的网状图(Mesh Plots)nsurf:可画出立体的曲面图(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 轴的说明文字 MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令11.522.53123402468X 軸 = column indexY 軸 = row indexMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令n若要将与曲面对应的 x 坐标和 y 坐标都一并画出来,还是可以使用 mesh 指令 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 轴的说明文字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); % 改变位置及颜色endendMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令11.522.531234024681424X 軸 = column index280436Y 軸 = row index47MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nmeshgrid 的作用是产生 x 及 y (均为向量) 为基准的格子点 (Grid Points),其输出为 xx 及 yy(均为矩阵),分别代表格子点的 x 坐标及 y 坐标。MATLAB 程序设计:三维立体绘图维立体绘课件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 tightMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令1234243456xx12342468yy3456682040zz 對 xx 及 yy 作 圖MATLAB 程序设计:三维立体绘图维立体绘课件使用 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 都是 2525 的矩阵 zz = xx.*exp(-xx.2-yy.2);% 计算函数值,zz 也是 2525 的矩阵mesh(xx, yy, zz);% 画出立体网状图 10-1 基本立体绘图指令22yxxezMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令 -2-1012-2-1012-0.500.5MATLAB 程序设计:三维立体绘图维立体绘课件nsurf 和 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 都是 2525 的矩阵 zz = xx.*exp(-xx.2-yy.2);% zz 也是 252 的矩阵 surf(xx, yy, zz);% 画出三维曲面图10-1 基本立体绘图指令MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令 -2-1012-2-1012-0.500.5MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令npeaks:n为了方便测试立体绘图,MATLAB 提供了一个 peaks 函数,可产生一个凹凸有致的曲面,包含了三个局部极大点(Local Maxima)及三个局部极小点(Local Minima)n其方程式为:222222153123151013yxyxyxeeyxxexzMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令n画出此函数的最快方法,即是在 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) MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令npeaks的图形-3-2-10123-202-505xPeaksyMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nmeshz:nmeshz 指令有将曲面加上围裙或舞台的效果x, y, z = peaks;meshz(x,y,z);axis tight;MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nwaterfall:nwaterfall 指令可在 x 方向或 y 方向产生水流效果x, y, z = peaks;waterfall(x,y,z);axis tight; MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nmeshc:nmeshc 可同时画出网状图与等高线(Contours) x, y, z = peaks;meshc(x, y, z);axis tight; MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-3-2-10123-202-10-505MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nplot3:nplot3 指令可画出三度空间中的曲线t = linspace(0,20*pi, 501);% 在 0 及 20*pi 中间取 501 点 plot3(t.*sin(t), t.*cos(t), t);% 画出 tsin(t),tcos(t),t 的曲线 MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-100-50050100-100-50050100020406080MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nplot3:n亦可同时画出两条三度空间中的曲线t = linspace(0, 10*pi, 501);plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t); % 同时画两条曲线MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-40-2002040-40-2002040-40-2002040MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nplot3:n如果输入自变量是三个大小相同的矩阵 x、y、z,那么 plot3 会依序画出每个行向量在三度空间所对应的曲线x, y = meshgrid(-2:0.1:2); z = y.*exp(-x.2-y.2); plot3(x, y, z);MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-2-1012-2-1012-0.500.5MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nplot3:n上例中,所有的数据点都必需是在格子点上,MATLAB 才能根据每点的高度来作图。如果所给的数据点不在格子点上,我们必需先用 griddata 指令来进行内插法以产生格子点MATLAB 程序设计:三维立体绘图维立体绘课件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(x, y, z, ., MarkerSize, 16);% 昼出 100 个取样 hold offaxis tightMATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-3-2-10123-202-20246MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令n整理:基本三维立体绘图指令的列表类别指令说明网状图mesh, ezmesh立体网状图meshc, ezmeshc网状图加上等高线meshz网状图加上“围裙”(或“舞台”)曲面图surf, ezsurf三维曲面图surfc, ezsurfc曲面图加上等高线surfl曲面图加上光源MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令n整理:基本三维立体绘图指令的列表类别指令说明曲线图plot3, ezplot3立体曲线图低阶函数surfaceSurf 用到的低阶指令line3Plot3 用到的低阶指令等高线contour, ezcontour平面上的等高线contour3空间中的等高线影像表示pcolor在二维平面中以颜色表示曲面的高度MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令nezmesh, ezsurf:n如果我们只是要很快地检视一个具有二个输入的函数的图形,就可以使用 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);MATLAB 程序设计:三维立体绘图维立体绘课件10-1 基本立体绘图指令-505-505-101xsin(x)/x sin(y)/yy-505-505-101xsin(x y)/(x y)y-505-505-101xsin(x)/x sin(y)/yy-505-505-101xsin(x y)/(x y)yMATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧n hidden off:n在绘制网状图时,MATLAB 会隐藏被遮盖的网线,若要使被遮盖的网线亦能呈现出来,可用 hidden off 指令n若再键入 hidden on,则恢复原先的设定 x,y,z = peaks;mesh(x,y,z);hidden off axis tightMATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧n 整理:以 on/off 来切换的指令:指令说明hidden on/off隐藏(on)或显示(off)被遮盖的网线。zoom on/off允许(on)或取消(off)以鼠标点选来放大图形。rotate3d on/off允许(on)或取消(off)以鼠标点选来旋转三维图轴。axis on/off显示(on)或不显示(off)图轴。box on/off显示(on)或不显示(off)图轴的外框。hold on/off在绘制新图时,保留(on)或消去(off)旧图。more on/off允许(on)或不允许(off)指令窗口的输出暂停。echo on/off允许(on)或不允许(off)指令在档案内执行时,逐一显示在窗口。MATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧n rotate3d on:n若要能够旋转立体图形,可已在产生 3D 图形之后(例如输入 peaks 之后),再输入rotate3d on,此时您可以压下鼠标左键来拖曳图轴,以选取最理想的观测角度。n也可以点选图形窗口上面的 图标,就可以开始旋转立体图形。MATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧n 三维曲线的观测角度:n一般而言,三维曲线的观测角度是由 Azimuth 及 Elevation 来决定ElevationAzimuth观测点原点xzyMATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧n对二维图形而言,默认值为 Azimuth = 0,Elevation = 90;对三维图形而言,默认值为 Azimuth = -37.5,Elevation = 30。若要改变观测角度,可用 view 指令peaks;view(0,-30);MATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧-3-2-10123-202-6-4-202468yxPeaksMATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧n NaN:n有时候我们希望将曲面图切掉一部份,以呈现不同的效果,此时可用 NaN 或 nan(Not a Number,即“非数值”)来取代矩阵某一部份的值,MATLAB 一碰到 NaN,就会“镂空”X, Y, Z = peaks;Z(10:20,10:20) = nan;% 将 Z 矩阵的一部分代换为 nansurf(X, Y, Z);axis tightMATLAB 程序设计:三维立体绘图维立体绘课件10-2 立体图形与图轴的基本技巧-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n colorbar:n利用 colorbar 指令,可显示 MATLAB 如何以不同颜色来代表曲面的高度n例如先输入peaks,再输入colorbar-202-202-505 Peaks -6-4-202468MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n 整理:常用颜色的 RGB 成分:颜色Red(红色)Green(绿色)Blue(蓝色)black(黑)000white(白)111red(红)100green(绿)010blue(蓝)001yellow(黄)110magenta(锰紫)101cyan(青蓝)011gray(灰)0.50.50.5dark red(暗红)0.500copper(铜色)10.620.4aquamarine(碧绿)0.4910.83MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n colormap:nMATLAB 预设的颜色对应表可由 colormap 得知ncm 是一个 643 的矩阵,因此 MATLAB 在画图时,会把 cm 第一列的颜色设定给曲面的最高点,把 cm 的最后一列的颜色设定给曲面的最低点,其余高度的颜色则依线性内插法来决定 cm = colormap; size(cm) ans = 64 3 MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n colormap:n改变颜色对应表,可得到不同颜色的曲面 ,欲改变颜色对应表,也是用 colormap 指令 peaks;colormap(rand(64,3);% 以随机数生成颜色对应表colorbar;MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制-202-202-505 xPeaksy -6-4-202468MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n 整理:MATLAB 现成的颜色对照表:指令 說明 colormap hsv HSV 的顏色對應表(預設值) colormap hot 代表“熱”的顏色對應表 colormap cool 代表“冷”的顏色對應表 colormap summer 代表“夏天”的顏色對應表 colormap gray 代表“灰階”的顏色對應表 colormap copper 代表“銅色”的顏色對應表 colormap autumn 代表“秋天”的顏色對應表 colormap winter 代表“冬天”的顏色對應表 colormap spring 代表“春天”的顏色對應表 colormap bone 代表“X 光片”的顏色對應表 colormap pink 代表“粉紅”的顏色對應表 colormap flag 代表“旗幟”的顏色對應表 MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n cool:n使您的曲面使用感觉较冷的颜色peaks;colormap cool; colorbarMATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制-202-202-505 xPeaksy -6-4-202468MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n surf和mesh的颜色设定:n除了以高度来设定颜色之外,surf 及 mesh 指令都可以接受第 4 个输入自变量来作为设定颜色的依据n例如:以曲面的斜率来设定颜色 X, Y, Z = peaks;surf(X, Y, Z, gradient(Z);axis tight;colormap hotMATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n surf和mesh的颜色设定:n例如:以曲面的曲率来设定颜色 X, Y, Z = peaks;surf(X, Y, Z, del2(Z);axis tight;colormap hotMATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n brighten:n我们可用 brighten 指令来使颜色对照表变亮或变暗colormap coppersubplot(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); MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制-3-2-10123-202-505MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n True Color:n前例MATLAB 决定颜色的方法称为索引颜色(Indexed Color)法,因为曲面上每个方块先对应至颜色对应表的索引n如果您的显示器能支持 24 位全彩,则我们可以直接定义一千六百万(224)种颜色,而不需要再定义颜色对应表。此种方法称为真实颜色(True Color)法MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制Z = peaks(50);C(:, :, 1) = 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 MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n shading:n若要使表面的颜色产生连续性的变化,可使用 shading 指令 n例如我们可以先输入peaks,再输入shading interp,就可以得到下列颜色渐进变化的图形MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n整理:指令功能shading interp使用 Bilinear Interpolation 来使瓷砖根据四顶点的颜色产生连续的变化shading flat瓷砖的颜色是单一的。shading faceted瓷砖的颜色是单一的,而且同时显色瓷砖交接的边。(此为默认值)MATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制n colormap和shading:n使用 colormap 及 shading,可产生意想不到的结果surfl(peaks);% 曲面图加上光源 axis tightcolormap(pink);shading interpMATLAB 程序设计:三维立体绘图维立体绘课件10-3 曲面颜色的控制是不是很像平滑无暇的丝缎呢?
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!