第五章 三维图形绘制
0 -5
-2.5
0 2.5
5 -5
0 -2.5
5 2.5
sin x2 y2
画出 z
表示的三维曲面,x,y
x2 y2
取值范围[-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)
sin x2 y2
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));
俯仰角
X
Azimuth
缺省为37.5、30
度)
方位角
例:绘制z=x2+y2的三维网格图形
x矩=-阵5:5;
数组
y矩=阵x; [X,Y]=meshgrid(x,y)
Z=X.^2+Y.^2
mesh(X,Y,Z)
50
40
30
20
10
0 5
0 -5 5
0
-5
view(60,50)
50 40 30 20 10
图形的裁减
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)
令: 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
axis([xmin xmax ymin ymax zmin zmax ]) 定义三维坐标轴范围
grid on(off) 绘制三维网格 box on(off)
text(x,y,z,‘string’) 三维图形标注
xlabel、ylabel 、 zlabel 坐标轴标注
子图和多窗口也可以用到三维图形中
[1 1 1] —白色
x=-5:5; y=x; 60[X,Y]=meshgrid(x,y) Z=X.^2+Y.^2 40mesh(X,Y,Z); Colormap([1,0,0]);
20
0 5
0
5 0
-5 -5
三维曲面图
• surf函数—— 三维曲面绘图函数,使用方法同 网格图 与三维网格图的区别: 网格图:线条有颜色,空挡是无色(背景色) 曲面图:线条是黑色的,空挡有颜色(把线条之 间的空挡填充颜色,沿z轴按每一网格变化
% 对球的着色进行浓淡细化处理
hold on;
% 绘图保持
mesh(X,Y,Z)
% 绘大球
colormap(hot);
% 定义色表
hold off
% 取消绘图保持
hidden off
% 产生透视效果
axis equal,axis off % 坐标等轴并隐藏
图形标注与坐标控制
二维图形的所有基本特性对三维图形均适用。
• 表达式运算—— Z=X.^2+Y.^2 • mesh 画网格图默认方位角:37.5o,俯角30o。
视点,即观察点。 Matlab控制视点的命令为: Z
y
view([az,el])-
视点
通过方位角az、
俯仰角el来设置 景物
视点,单位是度。 中心 O
Elevation
(二维图缺省为 0、90度。三维
z
1
x2 y2
0.5
z
0
-0.5 10
5
10
0
y
-5
-5
-10 -10
5
0
x
view(60,70)
z
Байду номын сангаас
1
0
-1 -10
-5
0
10
5
5
0
x 10 -10
-5 y
• colormap( [R,G,B])—— 色图设定函数
r,g,b在[0 1]区间连续取值,理论上颜色种类可达无穷多种,
matlab使用三维数组表示一种颜色,
• 调用格式:
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)
60
40
20
0 5
0
5 0
-5 -5
图形的透视
Matlab在绘三维网线图和曲面图时,一般 进行消隐处理。为得到透视效果,用以下命
三维网格图
以网格的形式显示三维图形。通常使用方形网格, 所以网格上的每一格点必需有一三维坐标(x,y,z)与 之相对应。绘图指令如下:
mesh(Z)-以矩阵Z的列下标为x、行下标为y、矩阵的 元素为z组成三维网格数据绘制网线图;
mesh(X,Y,Z)
mesh(X,Y,Z,c) :绘制三维空间中的网格曲 面,曲面是由线条勾画成的; (X,Y,Z)组成了三 维空间的网格点;c用于控制网格点颜色。
三维数据可视化
三维绘图基本函数
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维数任意
常用颜色数据见下表
§饱和色
[0 0 0] —黑色 [0 0 1] —兰色 [0 1 0] —绿色 [0 1 1] —浅兰 [1 0 0] —红色 [1 0 1] —粉红 [1 1 0] —黄色
§调和色 [0.5 0.5 05] —灰色 [0.5 0 0] —暗红色 [1 0.62 0.4] —铜色 [0.49 1 0.8] —浅绿 [0.49 1 0.83] —宝石兰
z(I(k),J(k))=NaN; end subplot(1,2,2),surf(x,y,z);
1
0.5
0
-0.5
-1 8
6
8 4
6
2
4