matlab学习(三)三维曲线和曲面

 一、三维曲线

plot3函数

plot3函数的基本用法 plot3(x, y, z) 其中,参数x、y、z组成一组曲线的坐标。 

样例一:绘制一条空间折线。 

x=[0.2, 1.5, 2.5]; 
y=[1.3, 2.8, 1.1]; 
z=[0.4, 1.2, 1.6]; 
plot3(x, y, z) 
xlabel('Variable X'); ylabel('Variable Y'); zlabel('Variable Z')
grid on 
axis([0, 3, 1, 3, 0, 2]);

matlab学习(三)三维曲线和曲面

样例二:绘制螺旋线

t=linspace(0, 10*pi, 200); 
x=sin(t)+t.*cos(t); 
y=cos(t)-t.*sin(t); 
z=t; subplot(1, 2, 1) 
plot3(x, y, z) 
grid on 
subplot(1, 2, 2) 
plot3(x(1:5:200), y(1:5:200), z(1:5:200))
grid on

matlab学习(三)三维曲线和曲面

 

 

fplot3函数

fplot3(funx, funy, funz, tlims)
其中,funx、funy、funz代表定义曲线x、y、z坐标的函数,通 常采用函数句柄的形式。tlims为参数函数自变量的取值范围,用二 元向量[tmin, tmax]描述,默认为[-5, 5]。
样例三:绘制墨西哥帽顶曲线

xt = @(t) exp(-t/10).*sin(5*t); 
yt = @(t) exp(-t/10).*cos(5*t); 
zt = @(t) t; 
fplot3(xt, yt, zt, [-16, 16])

matlab学习(三)三维曲线和曲面

二、三维曲面

 mesh函数和surf函数的调用格式: mesh(x, y, z, c) surf(x, y, z, c) 其中,x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于 指定在不同高度下的曲面颜色。c省略时,颜色的设定正比于图形 的高度。

样例四:绘制三维曲面图matlab学习(三)三维曲线和曲面

 

t = -2:0.1:2; 
[X, Y] = meshgrid(t); 
Z = X .* exp(-X.^2 - Y.^2); 
subplot(1,3,1) 
mesh(X,Y,Z); 
subplot(1,3,2) 
surf(X,Y,Z); 
subplot(1,3,3) 
plot3(X,Y,Z); 
grid on 

matlab学习(三)三维曲线和曲面

 带等高线的三维网格曲面函数meshc
 带底座的三维网格曲面函数meshz
 具有等高线的曲面函数surfc
 具有光照效果的曲面函数surfl

样例五: 用4种方式绘制函数???? = (???? − 1)2+(???? − 2)2−1的曲面图。 其中,x∈[0,2],y∈[1,3]。 

[x,y]=meshgrid(0:0.2:2,1:0.2:3);
z=(x-1).^2+(y-2).^2-1; 
subplot(2,2,1);
meshc(x,y,z);
title('meshc(x,y,z)') 
subplot(2,2,2); 
meshz(x,y,z);title('meshz(x,y,z)') 
subplot(2,2,3);
surfc(x,y,z);title('surfc(x,y,z)') 
subplot(2,2,4); 
surfl(x,y,z); title('surfl(x,y,z)')

matlab学习(三)三维曲线和曲面

(1)sphere函数 [x,y,z]=sphere(n) 产生3个(n+1)阶的方阵,采用这3个矩阵可以绘制出圆心位于 原点、半径为1的单位球体。 (2)cylinder函数 [x,y,z]=cylinder(R, n) 其中,参数R是一个向量,存放柱面各个等间隔高度上的半径, n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。

样例六:用cylinder函数分别绘制柱面、花瓶和圆锥面。
subplot(1,3,1); 
[x,y,z]=cylinder; 
surf(x,y,z); 
subplot(1,3,2); 
t=linspace(0,2*pi,40); 
[x,y,z]= cylinder(2+cos(t),30); 
surf(x,y,z); 
subplot(1,3,3); 
[x,y,z]= cylinder(0:0.1:2,30); 
surf(x,y,z);

matlab学习(三)三维曲线和曲面

样例七:用cylinder函数绘制两个相互垂直且直径相等的圆柱面的
相交图形。
[x,y,z]= cylinder(1,80);
z=[-1*z(2,:);z(2,:)]; 
surf(x,y,z) 
hold on 
surf(y,z,x)
axis equal

matlab学习(三)三维曲线和曲面

peaks 函数
fsurf(funx, funy, funz, uvlims)
fmesh(funx, funy, funz, uvlims)
其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常
采用函数句柄的形式。uvlims为funx、funy和funz的自变量的取值范围,
用4元向量[umin, umax, vmin, vmax]描述 ,默认为[-5, 5, -5, 5]。
样例八:绘制螺旋曲面。

funx = @(u,v) u.*sin(v); 
funy = @(u,v) -u.*cos(v); 
funz = @(u,v) v; 
fsurf(funx,funy,funz,[-5 5 -5 -2]) 
hold on 
fmesh(funx,funy,funz,[-5 5 -2 2]) 
hold off
 matlab学习(三)三维曲线和曲面