matlab 3d 灯光,MATLAB-三维图基础知识汇总

三维绘图

一.绘制三维曲线的基本函数

最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,可以用来绘制三维曲线。其调用格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…)

其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。

t=0:pi/50:2*pi;

x=8*cos(t); y=4*sqrt(2)*sin(t); z=-4*sqrt(2)*sin(t);

plot3(x,y,z,'p'); title('Line in 3-D Space');

text(0,0,0,'origin'); xlabel('X'); ylabel('Y');

zlabel('Z'); grid;

二.三维曲面

(1)产生三维数据

当绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为D=[a,b]×[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m×n个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。

产生平面区域内的网格坐标矩阵有两种方法:

利用矩阵运算生成。

x = a:dx:b;

y = (c:dy:d)’;

X = ones(size(y))*x;

Y = y*ones(size(x));

在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:

x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y);

语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。

(2)绘制三维曲面的函数

mesh(x,y,z,c);% 画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c); % 画完整曲面,将数据点所表示曲面画出。

一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。

例:绘制三维曲面图z=sin(x+sin(y))-x/10。

[x,y]=meshgrid(0:0.25:4*pi); %

在[0,4pi]×[0,4pi]区域生成网格坐标

z=sin(x+sin(y))-x/10;

mesh(x,y,z); axis([0 4*pi 0

4*pi -2.5 1]);

此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。

例: 在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。

[x,y]=meshgrid(-8:0.5:8);

z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);

subplot(221); mesh(x,y,z); title('mesh(x,y,z)');

subplot(222); meshc(x,y,z); title('meshc(x,y,z)');

subplot(223); meshz(x,y,z); title('meshz(x,y,z)');

subplot(224); surf(x,y,z); title('surf(x,y,z)');

程序执行结果分别如上图所示。从图中可以发现,网格图(mesh)中线条有颜

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值