• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

最近高数在学曲面,机导在学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;          %表示显示网格,可以让图像看得更清楚

结果如下:

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

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

结果如下:

 

此外,Matlab还提供了专门绘制标准三维曲面的函数,比如sphere()和cylinder()。下面简单介绍一下这两个函数。

sphere()

sphere()函数用于生成半径为1的球面,返回值为球面各点x,y,z坐标,可进一步用于surf()和mesh()函数。sphere()接受多种参数,具体可参见Matlab内置文档。在这里举一个小例子:

[x,y,z]=sphere;
surf(x+4,y-2,z+2); %球心在(4,-2,2)的球面
hold on;
sphere(50);        %生成一个有50*50个面的球面,参数值越大,表面越光滑

结果如下:

 

cylinder()

与sphere()十分类似,cylinder()函数生成单位圆柱。有趣的是,cylinder()可以设置剖面曲线,让圆柱“扭起来”。下面是一个小例子:

t=-3:0.3:3;
cylinder(sin(t),50);

结果如下:

 除此之外还有很多其他的函数可以用于画三维图像哦,比如meshz()可以画出带底座的图像, surfl()可以使图像有光照效果等等。感兴趣的话,就打开Matlab去help一下这些函数吧~


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Windows7新的Taskbar 在 Delphi 2010 中的编程应用发布时间:2022-07-18
下一篇:
Delphi数组复制(只能使用System单元的Move函数)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap