第六讲 三维作图 (2)
先画点,后连线,构成曲面网格图
点: ( xij , yij , zij )
x11 x X 21 xm 1 x12 x22 xm 2
i 1,, m, j 1,, n
y11 y Y 21 ym1 y12 y22 ym 2 y1n y2 n ymn
空间曲面其它作图函数
surf(X,Y,Z) 绘制由矩阵 X,Y,Z 所确定的曲面图,参数含义同 mesh mesh 绘制网格图,surf 绘制表面着色的曲面图
24
surf 作图举例
>> >> >> >> [X,Y]=meshgrid(-8:0.5:8); r=sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; surf(X,Y,Z)
2
plot3 的用法与 plot 类似
绘制三维曲面示例
3
绘制三维曲面的过程
绘制空间曲面 z = z(x,y) 的一般过程 与绘制二维曲线类似,先对 x 的变化区域和 y 的变化区域 进行分割,得到离散的点 (xij, yij),这些点构成了网格矩阵, 即矩阵 X 和 Y,这些离散的点称为网格点 计算 z 在这些网格点上的函数值,即可的矩阵 Z
9
其它三维曲面作图命令
绘制带等高线的空间曲面
meshc 调用方式与 mesh 相同,在 mesh 基础上增加等高线
绘制屏蔽边界面的空间曲面
meshz 调用方式与 mesh 相同,在 mesh 基础上屏蔽边界面
10
一、常用三维绘图函数
函数名 plot3 mesh surf fill3 trimesh trisurf ezmesh ezsurf meshc surfc surfl hist3 slice cylinder
2018/3/4
功能说明 三维线图 三维网格图 三维表面图 三维填充图 三角网格图 三角表面图 易用的三维网格绘图 易用的三维彩色面绘图 带等高线的网格图 带等高线的面图 具有亮度的三维表面图 三维直方图 立体切片图 圆柱面
函数名 sphere ellipsoid quiver3 pie3 bar3 bar3h stem3 contour contour3 contourf waterfall pcolor hidden alpha
调用 Matlab 的绘图命令作出曲面图形 怎样得到网格矩阵 X 和 Y ? —— 利用 Matlab 的网格生成函数 meshgrid
4
网格生成函数
网格生成函数 [X,Y] = meshgrid(x,y)
x,y 是分别对 x 变化区域和 y 变化区域进行分割后 得到的向量 X, Y 即为我们所需要的网格矩阵
功能说明 单位球面 椭球面 三维箭头 三维饼图 竖直三维柱状图 水平三维柱状图 三维火柴杆图 矩阵等高线图 三维等高线图 填充二维等高线图 瀑布图 伪色彩图 设置网格图的透明度 设置图形对象的透明度
二维曲线作图过程
点 线:先画点,后连线 例:y = sin(x), 0 < x < 2
一、画点 >> x=0:pi/5:2*pi; >> y=sin(x); >> plot(x,y,'.')
4
5
6
7
13
三、加密:取更多的点
二维作图举例
>> x=[0:pi/20:2*pi]; >> y=sin(x); >> plot(x,y,'.')
14
三维曲线作图过程
x t 例:绘制三维螺线: y sin( t ) z cos( t )
先画点,后连线
1) 计算空间离散点的坐标 (x,y,z) 2) 将这些点按顺序连接即可
x=x(u,v),y=y(u,v),z=z(u,v) 参数方程: aub, cvd
>> >> >> >> u=a:hu:b; v=c:hv:d; [U,V]=meshgrid(u,v); X=x(U,V); Y=y(U,V); Z=z(U,V); mesh(X,Y,Z)
23
其它三维曲面作图命令
北京科技大学数学实验
北京科技大学数学实验
其它三维曲面作图命令
空间曲面其它作图函数
surf(X,Y,Z) 绘制由矩阵 X,Y,Z 所确定的曲面图,参数含义同 mesh mesh 绘制网格图,surf 绘制表面着色的曲面图 sphere(n) 专用于绘制单位球面
[X,Y,Z]=sphere(n) 自己动手
x1n x2 n xmn
z11 z Z 21 zm 1
z12 z22 zm 2
z1n z2 n zmn
线: 分别沿 x 方向和 y 方向
连接这些点即可得到
18
墨西哥帽子
例:墨西哥帽子:
sin
x 2 y2 x 2 y2
确定的曲面
其中 -8 <= x <= 8, -8 <= y <= 8。
>> >> >> >> >> >> x = -8 : 0.5 : 8; y = -8 : 0.5 : 8; [X,Y] = meshgrid(x,y); r = sqrt(X.^2 + Y.^2) + eps; Z = sin(r) ./ r; mesh(X,Y,Z)
meshgrid(x,y)的作用是分别产生以向量x为行,以
向量y为列的两个大小相同的矩阵。 若 x = y, 则可简写为:[X,Y]= meshgrid(x)
5
用meshgrid函数生成网格矩阵,并用plot函数画出平面网格图 形。
>> [x,y] = meshgrid(1:4, 2:5) x= 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 y= 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5
( 0 < t < 20 )
15
空间曲线作图举例
>> >> >> >> >> t=[0:0.5:20]; x=t; y=sin(t); z=cos(t); plot3(x,y,z,’.’)
>> >> >> >> >>
t=[0:0.5:20]; x=t; y=sin(t); z=cos(t); plot3(x,y,z,’.-’)
由函数 z = sin(r) / r 确定的曲面,其中 r ( – a < x < a , -a < y <a )
x 2 y2
19
三维曲面作图举例
a=8 时的曲面图形
>> >> >> >> >> >>
[X,Y]=meshgrid([-8:0.5:8]);
+eps?
x= -8:0.5:8; y= -8:0.5:8; [X,Y]=meshgrid(x,y); r=sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; mesh(X,Y,Z)
6 5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0 0.5 1 1.5 2 2.5 X 3 3.5 4 4.5 5
plot(x, y, 'r',x', y', 'r', x, y, 'k.','markersize',18); axis([0,5,1,6]); xlabel('X'); ylabel('Y');
25
mesh 与 surf 的比较
mesh(X,Y,Z)
surf(X,Y,Z)
26
例:绘制函数
z xe
( x2 y 2 )
, 2 x, y 2
的图像,
比较指令mesh和surf。
解:matlab命令为:
t=-2:0.1:2; [x,y]=meshgrid(t); z=x.*exp(-x.^2-y.^2); subplot(1,2,1),mesh(x,y,z),title('网格图') subplot(1,2,2),surf(x,y,z),title('曲面图')
sphere 只能画单位球面!
绘制球面 x2 + y2 + z2 = 16
29
sphere 作图
>> sphere; >> sphere(60); >> axis equal;
如果没有给出 n 的值, 则系统默认为 n=20
30
坐标轴控制
坐标轴控制命令: axis
axis([xmin, xmax, ymin, ymax, zmin, zmax])
16
空间曲线作图举例
>> >> >> >> >> t=[0:0.1:20]; x=t; y=sin(t); z=cos(t); plot3(x,y,z,’.-’)
>> >> >> >> >>
t=[0:0.1:20]; x=t; y=sin(t); z=cos(t); plot3(x,y,z)
17
三维曲面作图