第五章 三维图形绘制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
0.4 0.2
0.5 0 -0.2 0 -0.4 -0.6 -0.5 -0.8 -1 -1 8 6 6 8 4 2 2 0 0 0 0 4 6 2 2 4 8 4 6 8
结果:三维曲面图中z>0.25部分被裁减掉了
三维图形在平面光强分布绘制中的应用
发光二极管在接收平面的光强分布
画出
z
sin x y
2
2
x y
2
表示的三维曲面,x,y
2
取值范围[-8,8]
x=-8:.5:8; [X,Y]=meshgrid(x) R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; mesh(X,Y,Z)
1
z
sin x y
2
2
x y
2
z
2
0.5
0
-0.5 10 5 10 0 -5 -10 -10 -5 5 0
子图和多窗口也可以用到三维图形中
图形的裁减
NaN常数表示不可使用的数据,可以将图形中需要 裁剪部分对应的函数值设置成NaN,这样在绘制图 形时,函数值为NaN的部分将不显示出来,从而达 到对图形进行裁剪的目的。
x=0:0.1:2*pi; %定义x向量 [x,y]=meshgrid(x); %创建网格,y=x z=sin(y).*cos(x);%定义z变量 subplot(1,2,1), surf(x,y,z); [I,J]=find(z>0.25);%将z>0.25部分设置为NaN for k=1:length(I) z(I(k),J(k))=NaN; end subplot(1,2,2),surf(x,y,z);
三维网格图
以网格的形式显示三维图形。通常使用方形网格, 所以网格上的每一格点必需有一三维坐标(x,y,z)与 之相对应。绘图指令如下: mesh(Z)-以矩阵Z的列下标为x、行下标为y、矩阵的 元素为z组成三维网格数据绘制网线图;
mesh(X,Y,Z)
mesh(X,Y,Z,c) :绘制三维空间中的网格曲 面,曲面是由线条勾画成的; (X,Y,Z)组成了 三维空间的网格点;c用于控制网格点颜色。
X、Y、Z是n×m的矩阵,维数任意
三维网格图作图要领
• 生成网格点1—— [X,Y]=meshgrid(x,y) x— n个元素的数组 y— m个元素的数组 X、Y、Z是n×m的矩阵,维数任意 • 生成网格点2: x=x1:dx:x2;y=y1:dy:y2; X=ones(size(y'))*x; Y=y'*ones(size(x)); • 表达式运算—— Z=X.^2+Y.^2 • mesh 画网格图默认方位角:37.5o,俯角30o。
20 0 5 5 0 -5 -5 0
三维曲面图
• surf函数—— 三维曲面绘图函数,使用方法同 网格图 与三维网格图的区别: 网格图:线条有颜色,空挡是无色(背景色) 曲面图:线条是黑色的,空挡有颜色(把线条之 间的空挡填充颜色,沿z轴按每一网格变化
• 调用格式: surf(x,y,z) —— 绘制三维曲面图, X、Y、Z是n×m的矩阵 x=-5:5; y=x; [X,Y]=meshgrid(x,y) Z=X.^2+Y.^2 surf(X,Y,Z)
图形标注与坐标控制
二维图形的所有基本特性对三维图形均适用。 axis([xmin xmax ymin ymax zmin zmax ]) 定义三维坐标轴范围 grid on(off) 绘制三维网格 box on(off) text(x,y,z,‘string’) 三维图形标注 xlabel、ylabel 、 zlabel 坐标轴标注
矩阵 x=-5:5; y=x; 矩阵 [X,Y]=meshgrid(x,y) Z=X.^2+Y.^2 数组
mesh(X,Y,Z)
50Hale Waihona Puke Baidu40 30 20 10 0 5 0 -5 5 0 -5
view(60,50)
50 40 30 20 10 0 -5 -2.5 0 2.5 5 -5 -2.5 0 2.5 5
60 40 20 0 5 0 -5 -5 0
5
图形的透视
Matlab在绘三维网线图和曲面图时,一般 进行消隐处理。为得到透视效果,用以下命 令: hidden off -透视被遮挡的图形 hidden on -消隐被遮挡的图形
【例】透视效果演示
[X0,Y0,Z0]=sphere(30); % 产生单位球面的三维坐标 X=2*X0;Y=2*Y0;Z=2*Z0; % 产生半径为2的球面坐标 surf(X0,Y0,Z0); % 画单位球面 shading interp % 对球的着色进行浓淡细化处理 hold on; % 绘图保持 mesh(X,Y,Z) % 绘大球 colormap(hot); % 定义色表 hold off % 取消绘图保持 hidden off % 产生透视效果 axis equal,axis off % 坐标等轴并隐藏
三维数据可视化
三维绘图基本函数
1.平面网格坐标矩阵的生成 (1)利用meshgrid函数生成。 x=a:dx:b; y=c:dy:d; [X,Y]=meshgrid(x,y); x,y分别表示x轴和y轴的离散采样点,[X,Y]为网格点 坐标
x— n个元素的数组 y— m个元素的数组 X、Y是n×m的矩阵,n、m维数任意
视点,即观察点。 Matlab控制视点的命令为: Z y 视点 view([az,el]) -通过方位角az、 俯仰角el来设置 景物 视点,单位是度。 中心 O Elevation (二维图缺省为 俯仰角 X 0、90度。三维 Azimuth 缺省为37.5、30 方位角 度)
例:绘制z=x2+y2的三维网格图形
§调和色 [0.5 0.5 05] —灰色 [0.5 0 0] —暗红色 [1 0.62 0.4] —铜色 [0.49 1 0.8] —浅绿 [0.49 1 0.83] —宝石兰
x=-5:5; y=x; 60 [X,Y]=meshgrid(x,y) Z=X.^2+Y.^2 40mesh(X,Y,Z); Colormap([1,0,0]);
y
x
view(60,70)
1
z
0
-1 -10 -5 0 5 -5 x 10 -10 y 0 10 5
• colormap( [R,G,B])—— 色图设定函数
r,g,b在[0 1]区间连续取值,理论上颜色种类可达无穷多种, matlab使用三维数组表示一种颜色, 常用颜色数据见下表
§饱和色 [0 0 0] —黑色 [0 0 1] —兰色 [0 1 0] —绿色 [0 1 1] —浅兰 [1 0 0] —红色 [1 0 1] —粉红 [1 1 0] —黄色 [1 1 1] —白色