资讯详情

Matlab系列之三维图形

Matlab三维图形系列

  • 三维曲线图
    • 举例
    • 结果
  • 三维网格图
    • 举例1
    • 结果1
    • 举例2
    • 结果2
  • 三维曲面图
    • 举例1
    • 结果1
    • 举例2
    • 结果2
  • 三维图形的修饰
    • 三维图形的视点处理
    • view函数介绍
      • 举例1
      • 结果1
      • 举例2
      • 结果2
    • 颜色处理
      • 举例
      • 结果
    • 光照处理
      • 举例
      • 结果
  • 结束
    • 更精彩,等你发现~

在Matlab三维图形包括:三维曲线、三维网格和三维曲面,对应函数:plot3、mesh和surf,本文将介绍一些常规使用和一些三维图形的处理。

三维曲线图

类似于二维曲线的命令,用法也与plot类似,调用格式:

plot3(x,y,z) 功能:x,y,z如果是相同长度的向量,则绘制相应的空间三维曲线;如果是同阶矩阵,则绘制相应列的多条曲线。 也可以像plot同样的函数设置绘制的曲线类型、颜色等,具体的可用参数,使用命令doc Chart Line Properties”查看 

举例

%使用sin和cos形成三维螺旋曲线 t = 0:pi/50:10*pi; st = sin(t); ct = cos(t);  figure plot3(st,ct,t,'b^-'); xlabel('sin(t)'); ylabel('cos(t)'); zlabel('t'); 

结果

image-20210620111707869

三维网格图

三维网格图与三维曲线图有明显区别,mesh整个曲面可以画一段时间,不再是单曲线,但多曲线叠加后,更像是网格,下面介绍的曲面还是有一些小区别的。

调用格式:mesh(x,y,z) 功能描述:根据矩阵x,y,z画三维曲线,x,y,z矩阵中的元素是三维图形中对应的点,然后点与点连接,线的颜色会随着点的高度而变化。 注意事项:使用函数前需要先xy网格坐标建立在平面上:[x,y]=meshgrid(x,y),然后使用新的x,y计算网格上对应的z点,以获得构建曲面所需的点,最后使用mesh绘制整个图 

举例1

%sinc函数 x=-8:.5:8; y=x; [X,Y] = meshgrid(x,y); R = sqrt(X.^2   Y.^2)   eps; Z = sin(R)./R;  figure mesh(X,Y,Z)%直接mesh(Z)也可以 

结果1

再介绍下mesh补充函数meshc和meshz

举例2

%sinc函数 x=-8:.5:8; y=x; [X,Y] = meshgrid(x,y); R = sqrt(X.^2   Y.^2)   eps; Z = sin(R)./R;  figure %mesh(X,Y,Z)%直接mesh(Z)也可以 subplot(211);meshc(Z);%绘制等高线 subplot(212);meshz(Z);%绘制界线 

结果2

三维曲面图

曲面图实际上是在网格图的基础上填充颜色,surf的调用格式:

surf(x,y,z) 功能描述:和mesh的一致 

举例1

x=-5:5; y=x; [X,Y]=meshgrid(x,y); Z=X.^2 Y.^2;  figure; surf(X,Y,Z); colormap cool%调色为cool 

结果1

surf还有补充函数:surfc和surfl

举例2

x=-5:0.1:5; y=x; [X,Y]=meshgrid(x,y); Z=peaks(X,Y);  figure; subplot(211);surfc(X,Y,Z);%等高线 subplot(212);surfl(X,Y,Z);%光照 shading INTERP%转换成阴影模式,方便检查结果光照现象 

结果2

修饰三维图形

有时,绘制的三维图形可能会给我们的信息获取带来一些麻烦。因此,我们可以通过修改图形(视点位置、颜色、切割等)来提高图形的效果,促进信息获取。在绘制上述三维图形时,也使用了一些图形,这里有一点系统的总结。

三维图形的视点处理

视点处理,即从不同的角度观察物体,视点位置可以由方位角和仰角决定,本处介绍view函数,有两个参数:az和el,az是azlmuth缩写(方位角),el是elevation(仰角)缩写,单位为度。具体方向可以根据下面的示例图来理解。如果你不能理解理解它,等待直接从示例图中理解它。系统默认视角为:方向角(-37.5°)、仰角(30°),此时图可对应Azimuth和Elevation相应的角度方向。

view函数介绍

view(az,el)或view([az,el])视点位置直接设置% view([x,y,z])%将坐标系的特定空间点设置为视点位置,忽略向量的长度 view(2)%二维状态,az = 0, el = 90 view(3)%az = –37.5, el = 30. [az,el] = view%返回当前方位角和仰角 

举例1

%视角位置不同peaks subplot(221);surf(peaks);view(2);title('az=0;el=90'); subplot(222);surf(peaks);view(3);title('az=-37.5;el=30'); subplot(223);surf(peaks);view(90,0);title('az=90;el=0'); subplot(224);surf(peaks);view(-10,-10);title('az=-10;el=-10'); 

结果1

举例2

close all; figure; mesh(peaks);%绘制多峰 el=30;%仰角30 for az=-180:180  view(az,el);  drawnow; end az=0; for el=-180:180	view(az,el);
	drawnow;
end

结果2

颜色处理

在使用mesh和surf这些函数的时候,matlab都会对其进行默认的配色,此外可以通过shading自由设置图形的表面颜色,这个已经有过简单使用了,再进行介绍下

调用格式:
shading flat %用同一种颜色配色,表面更光滑
shading faceted %系统的默认配色
shading interp %插值处理的方式配色,表面非常光滑
shading(axes_handle,...) %对指定句柄对应的图,设置shading的类型

举例

figure
subplot(1,3,1)
sphere(16)
axis equal
title('Faceted Shading (Default)')

subplot(1,3,2)
sphere(16)
shading flat
axis equal
title('Flat Shading')

subplot(1,3,3)
sphere(16)
shading interp
axis equal
title('Interpolated Shading')

结果

此外还有个colormap的函数也可以进行配色,以前有介绍过,就不再多说了。

除了用函数进行配色外,还可以用颜色图编辑器直接对图形颜色进行重新设置,在命令窗口输入:colormapeditor

弹出以下的功能窗口,然后鼠标去点击要配色的图形,会显示对应图形的标题,然后根据需要进行配色即可。

光照处理

在介绍surf的时候,已经出现了该字眼,不过这边用到的是独立的光照函数,即light;

调用格式:light('PropertyName',propertyvalue,...)%属性使用,自行根据命令获取:doc Light Properties;
%color,position和style三个属性

举例

[x,y,z]=sphere(20);
subplot(121);surf(x,y,z);axis equal;light('position',[0,1,1]);shading interp;hold on;
plot3(0,1,1,'ro');%做个位置标识
text(0,1,1,'light');
subplot(122);surf(x,y,z);axis equal;light('position',[1,0,1]);shading interp;hold on;
plot3(1,0,1,'ro');
text(1,0,1,'light');

结果

不同位置light,有着明显的光照差异。

结束

画图的篇章到此算是告一段落了,接下来打算对matlab的其他工具做些介绍,估计再搞两三篇工具介绍,就差不多可以搞下应用来完结掉Matlab系列的文章了~

理想果然很丰满…


更多精彩,等你发现~


标签: 三维连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台