MATLAB学习——三维曲面图像绘制

cuiguanjun 2020-05-14

最近高数在学曲面,机导在学Matlab, 于是研究了一下怎么用Matlab画三维曲面,来分享一下~

在Matlab中绘制三维图像可以分为三个步骤:

1)生成平面网格数据。在Matlab中的图形绘制本质上就是描点作图法。在开始绘图之前,需要先在XY平面上生成一张平面网格数据,把平面分成一个一个小格子,作为描点的基础。这一步用到的是meshgrid()函数。meshgrid()接受两个参数x和y。x和y是两个矩阵,xij代表网格上第i行第j列位置的横坐标,yij代表网格上第i行第j列位置的纵坐标。根据x和y便能确定一张平面数据网格了。若只传一个参数,则默认x=y。示例如下:

t1=-10:0.5:10;
t2=-5:0.5:-5;
[X,Y] = meshgrid(t1,t2);

2)设置函数方程。可以是一般方程,也可以是参数方程。

3)调用绘图函数把图像画出来。如果是一般方程的形式,可以用mesh()函数,surf()函数或plot3()函数。函数接受三个参数,分别表示横,纵和竖坐标。mesh()所绘制图像,线条有颜色,线条之间无填充;surf()函数线条为黑色,线条之间有填充。plot()函数实际由一条一条三维曲线组合而成,不形成网格。如果是参数方程形式,在函数名前面加个f就好啦,即调用fmesh(), fsurf()和fplot3()。

下面是一个一般方程形式的例子:

t=-20:0.8:20;
[X,Y]=meshgrid(t);
Z=X.^2+Y.^2-Z.^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学习——三维曲面图像绘制

 下面是一个参数方程的例子:

(u,v)u.*sin(v);
(u,v)-u.*cos(v);
(u,v) v;
fmesh(funx,funy,funz);

结果如下:

MATLAB学习——三维曲面图像绘制

除此之外还有很多其他的函数可以用于画三维图像哦~,比如meshz()可以画出带底座的图像, surfl()可以使图像有光照效果,以及专门画标准三维曲面的函数,比如sphere()和cynlinder()。感兴趣的话,在Matlab文档里面搜一搜就都知道啦~

相关推荐