7.4  三维图形的高级控制

三维图形比二维图形包含有更多的信息,因此在实际中得到了广泛的应用。对于三维图形,由于其复杂性,如果对其赋予更多的属性,则可得到更多的信息。如对于一幅三维图像,从不同的角度观看可以得到不同的信息,采用适宜的颜色可以得到更加直观的效果。本节介绍三维图形的高级控制,包括图形的查看方式、光照控制和图形中颜色的使用。另外三维图形还有很多其他的属性控制方法,例如旋转、材质属性、透明控制等,因篇幅有限,不能一一介绍,读者可查阅相关的帮助文档。

7.4.1  视点控制

为了使图形的效果更逼真,有时需要从不同的角度观看图形。MATLAB语言提供了view、viewmtx和rotate3d等3个函数进行这些操作。其中,view函数主要用于从不同的角度观察图形,viewmtx函数给出指定视角的正交变换矩阵,rotate3d函数可以让用户使用鼠标来旋转视图。这里只介绍view函数,其调用语法如下。

(1)view(az,el):设置查看三维图的3个角度。其中az是水平方位角,从Y轴负方向开始,以逆时针方向旋转为正;el是垂直方位角,向z轴方向的旋转为正,向z轴负方向的旋转为负。默认的三维图视角为:az=-37.5,el=30。当az=0,el=90时,其观看效果是一个二维图形。

(2)view([x,y,z]):设置在笛卡尔坐标系下的视角,而忽略向量x、y和z的幅值。

(5)view(T):根据转换矩阵T来设置视角,T是一个由viewmtx产生的4×4转换矩阵。

(6)[az,el] = view:返回当前的az和el值。

(7)T = view:返回一个转换矩阵T。

【例7-35】  view函数的使用示例。绘制peaks函数的表面图,并使用不同的视角观察图形。

[X,Y,Z] = peaks(30);

subplot(121),surf(X,Y,Z)

subplot(122),surfc(X,Y,Z)

view(30,60)

以上代码运行的结果如图7-39所示。

图7-39  视点控制

7.4.2  颜色的使用

图形的颜色是图形的一个重要因素,丰富的颜色变化可以使图形更具有表现力。MATLAB中图形的颜色控制主要由函数colormap完成。

MATLAB是采用颜色映射表来处理图形颜色的,即RGB色系。计算机中的各个颜色都是通过三原色,按照不同的比例调制出来的。每一种颜色的值以一个1´3的向量 [RGB] 表达,其中R、G、B分别代表3种颜色的值,其取值范围位于[0,1]区间内。MATLAB中的典型的颜色配比方案如表7-11所示。

表7-11MATLAB中典型的颜色配比方案

Red(红)分量

Green(绿)分量

Blue(蓝)分量

选择好颜色表后,就可以用来作为绘图用色。对于一般的曲线绘制函数,不需要颜色控制色彩显示,而对于曲面绘图函数,则需要使用颜色表。颜色表的设定命令为:colormap([R,G,B]),其中输入变量[R,G,B]为一个3列矩阵,行数不限,该矩阵称为颜色表

。在MATLAB中预定义了几种典型颜色表。用户可以在图形窗口查看和选择这些颜色表。单击【Edit】|【Figure Properties…】菜单,可以激活属性编辑器。用户可以通过属性编辑器中的Colormap下拉菜单选择适宜的颜色表,如图7-40所示。至于颜色表的使用,前文已经有过例子,如【例7-33】和【例7-34】等,这里不再赘述。

图7-40  Colormap下拉菜单

7.4.3  光照控制

MATLAB语言提供了许多函数,可以在图形中对光源进行定位,并改变光照对象的特征,具体的函数介绍如表7-12所示。

表7-12MATLAB中的图形光源操作函数

函    数

功能描述

设置并移动关于摄像头的光源

在球坐标下设置或定位一个光源

设置光源

选择光源模式

设置图形表面对光照的反应模式

【例7-36】  本例在【例7-29】的基础上演示如何使用光照控制。未进行光照控制的图形请见图7-33。

[X,Y,Z] = peaks(30);

surfc(X,Y,Z)

colormap hsv

light('Position',[-20,20,5])      %  光照控制

以上代码运行的结果如图7-41所示。

图7-41  光照控制