这篇文章我们进行简单的MatLab三维画图的学习。
首先我们打开MatLab2018a,之后第一步是创建一个.m文件,具体操作是新建一个脚本,之后保存,即可创建.m文件。
之后我们便可以进行基础的三维画图,在脚本编辑器中我们可以输入如下代码:
close all;clear all;clc
z=linspace(0,10,101);
x=sin(z);y=cos(z);
plot3(x,y,z,’g’,’LineWidth’,2)
hold on
plot3(x,y,z,’p’,’MarkerSize’,10)
其中plot3(X1,Y1,Z1,’PropertyName’,PropertyValue,…)的意思是根据指定的属性绘制三维曲线之后点击运行按钮,可以查看。
这是平面的三维图,之后我们将其立体化。
matlab中提供了mesh函数用于实现绘制网格图:
mesh(X,Y,Z):绘制三维网格图,颜色与曲面的高度相匹配
mesh(Z):系统默认颜色与网格区域的情况下绘制数据Z的网格图
mesh(…,C,’PropertyName’,PropertyValue):对指定的颜色C,指定的属性值,画出三维图形
meshc(…):用于画网格图与基本的等值线图 meshz(…):用于绘制包含零平面的网格图
h = mesh(…):返回图形对象句柄属性值向量h。
在脚本编辑器里输入下面代码,形成三维网格图:
[a,b,c]=peaks(50);
figure(2)
mesh(a,b,c)
axis tight
peaks(N)是生成一个凹凸有致的曲面,包含三个局部极大点及三个局部极小点的函数
如上面所说,如果将mesh改为meshc,就会将等高线插入,如图所示
如果将meshc改为meshz,就会看到三维网格图+垂帘的效果。
surf(X,Y,Z):绘制三维的彩色曲面图。
surf(X,Y,Z,C):图形的颜色采用参数C,同样可以添加属性值
我们将meshz改为surf函数,可以看到三维着色曲面图
光照是利用方向照亮物体的技术,这项技术能使表面微妙的差异更容易看到,光照也能用来对三维的图像增加现实感。
camlight函数:
camlight(‘light’):在照相机的右上方设置一个光源
camlight(‘light’):在照相机的左上方设置一个光源
camlight(az,el):建立一个相对于照相方位角az与仰角el的光源
camlight(…,’style’):设置光源的类型为’local’或‘infinite’
light_handle = camlight(…):返回光源的句柄值
我们首先将surf(a,b,c)改为surfl(a,b,c),然后保存运行后,看到带光照的三维着色曲面图。
之后我们可以添加shading interp去掉网格曲线,添加xlabel等坐标说明,添加title标题说明。输入以下代码,保存运行后,得到三维效果:
[a,b,c]=peaks(50);
figure(2)
surfl(a,b,c)
shading interp
xlabel(‘X’);ylabel(‘Y’);zlabel(‘Z’)
title(‘peaks+surfl’)
axis tight