3.1.7 三维图形
在很多情况下,把数据绘制在三维空间里会更形象和更有表现力。大量实际应用中的数据,例如某个平面的温度分布、联合时频分析、飞机的运动等,都需要在三维空间中可视化显示数据。三维图形可令三维数据可视化,修改三维图形属性可改变数据的显示方式。
LabVIEW中包含以下三维图形,如图3-53所示。
散点图:显示两组数据的统计趋势和关系。
杆图:显示冲激响应并按分布组织数据。
彗星图:创建数据点周围有圆圈环绕的动画图。
曲面图:在相互连接的曲面上绘制数据。
等高线图:绘制等高线图。
网格图:绘制有开放空间的网格曲面。
瀑布图:绘制数据曲面和y轴上低于数据点的区域。
箭头图:生成速度曲线。
带状图:生成平行线组成的带状图。
条形图:生成垂直条带组成的条形图。
饼图:生成饼状图。
三维曲面图:在三维空间绘制一个曲面图。
三维参数图:在三维空间中绘制一个参数图。
三维线条图:在三维空间绘制线条图。
ActiveX三维曲面图:使用ActiveX技术,在三维空间绘制一个曲面图。
ActiveX三维参数图:使用ActiveX技术,在三维空间绘制一个参数图。
ActiveX三维曲线图:使用ActiveX技术,在三维空间绘制一条曲线图。

图3-53 三维图形
前14项位于“控件”选板下“新式”→“图形”→“三维图形”子选板下,即图3-53左侧图形;后三项位于“经典”→“经典图形”子选板下,即图3-53右侧图形第3行。
ActiveX三维图形控件仅在Windows平台上的LabVIEW完整版和专业版开发系统上可用。与其他LabVIEW控件不同,这3个三维图形模块不是独立的。实际上这3个三维图形模块都是包含了ActiveX控件的ActiveX容器与某个三维绘图函数的组合。
1.三维曲面图
三维曲面图用于显示三维空间的一个曲面。在前面板放置一个三维曲面图时,程序框图将出现两个图标,如图3-54所示。

图3-54 经典选板ActiveX三维曲面图、新式选板中的三维曲面图
在左图中可以看出,三维曲面图相应的程序框图由两部分组成:3D Surface和三维曲面。其中3D Surface只负责图形显示,作图则由三维曲面来完成。
三维曲面的图标和端口如图3-55所示。三维图形输入端口是ActiveX控件输入端,该端口的下面是两个一维数组输入端,用以输入X、Y坐标值。Z矩阵端口的数据类型为二维数组,用以输入Z坐标。三维曲面在作图时采用的是描点法,即根据输入的X、Y、Z坐标在三维空间确定一系列数据点,然后通过插值得到曲面。在作图时,三维曲面根据X和Y的坐标数组在XY平面上确定一个矩形网络,每个网格结点都对应着三维曲线上的一个点在XY坐标平面的投影。Z矩阵数组给出了每个网格节点所对应的曲面点的Z坐标,三维曲面根据这些信息就能够完成作图。三维曲面不能显示三维空间的封闭图形,如果显示封闭图形应使用三维参数曲面。

图3-55 三维曲面的图标和端口
如图3-56所示,使用三维曲面图输出了正弦信号。需要注意的是,此时用的是信号处理子选板中的信号生成的正弦信号,而不是波形生成中的正弦波形。因为正弦波形函数输出的是簇数据类型,而Z矩阵输入端口接收的是二维数组。如图3-57所示。

图3-56 正弦信号的三维曲面图

图3-57 三维曲面图的错误使用
图3-58显示的是用三维曲面图显示z = sin(x)cos(y),其中x和y都在0~2π的范围内,X、Y坐标轴上的步长为π/50。

图3-58 曲面z = sin(x)cos(y)
框图中的For循环边框的自动索引功能将Z坐标组成了一个二维数组。但对于输入x向量和y向量来说,由于要求不是二维数组,所以程序框图中的For循环的自动索引应禁止使用,否则将出错,如图3-59所示。

图3-59 三维曲面图的错误使用
对于前面板的三维曲面图,按鼠标左键并移动鼠标可以改变视点位置,三维曲面图发生了旋转,松开鼠标后将显示新视点的观察图形,如图3-60所示。
在LabVIEW中可以更改三维曲面图的显示方式,方法是在三维曲面图上单击右键,从弹出的快捷菜单中选择“CWGraph3D”,从下一级菜单中选择“属性”,如图3-61所示。将弹出属性设置的对话框,同时会出现一个小的CWGraph3D控件面板,如图3-62所示。

图3-60 三维曲面图的旋转操作

图3-61 三维曲面图属性的选择

图3-62 CWGraph3D控件的属性设置对话框
属性对话框中共有7个选项卡,包括Graph、Plots、Axes、Value Pairs、Format、Cursors和About。下面对常用的几项进行介绍,其他各项属性的设置方法相似。
Graph选项卡中包含4部分:General、3D、Light和Grid Planes,即常规属性设置、三维显示设置、灯光设置和网格平面设置。
General常规属性设置用来设置CWGraph3D控件的标题。其中,Font用于设置标题的字体。Graph frame Visible用于设置图像边框的可见性。Enable dithering用于设置是否开启抖动,开启抖动可以使颜色过渡更为平滑。Use 3D acceleration用于设置是否使用3D加速。Caption color用于设置标题颜色。Background color用于设置标题的背景色。Track mode用于设置跟踪的时间类型。
3D三维显示设置中的Projection用于设置投影类型,有正交投影(Orthographic)和透视(Perspective)。Fast Draw for Pan/Zoom/Rotate用于设置是否开启快速画法,此项开启时,在进行移动、缩放、旋转时只用数据点来代替曲面,以提高作图速度,默认为选中状态。Clip Data to Axes Ranges用于设置是否剪切数据,当选中此项时只显示坐标轴范围内的数据,默认为选中状态。View Direction用来设置视角。User Defined View Direction用于设置用户视角,共有3个参数:纬度(Latitude)、精度(Longitude)、视点距离(Distance),如图3-63所示。

图3-63 三维显示设置对话框
在Light灯光选项卡里,除了默认的光照,CWGraph3D控件还提供了4个可控制的灯。Enable Lighting用于设置是否开启辅助灯光照明。Ambient Color用于设置环境光的颜色。Enable Light用于设置具体设置每一盏灯的属性,包括纬度(Latitude)、精度(Longitude)、距离(Distance)和率减(Attenuation),如图3-64所示。(https://www.daowen.com)
例如若想添加光影效果,可单击Enable Light图标,添加光影效果后的正弦曲面如图3-65所示。

图3-64 灯光设置对话框

图3-65 添加了光影效果的三维曲面图
在Grid Plane网格平面设置里,Show Grid Plane用于设定显示网格的平面Smooth grid lines用来选中该项以平滑网格线。Grid frame color用于设置网格边框的颜色,如图3-66所示。
在CWGraph3D的Plots选项卡中,可以更改图形的显示风格。Plots选项卡对话框如图3-67所示。

图3-66 网格平面设置对话框

图3-67 Plot项对话框
若要改变显示风格,可单击Plot Style按钮,将显示9种风格,如图3-68所示。默认为Surface,例如若选择Surf+Line将出现新的显示风格,如图3-69所示。

图3-68 图形的显示风格

图3-69 Surf+Line显示风格
在三维曲面图中,经常会使用到光标,用户可在CWGraph3D的Cursor选项卡中选择。添加方法是单击Add按钮,设置需要的坐标即可,如图3-70所示。添加了光标的三维曲面图如图3-71所示。

图3-70 光标的添加

图3-71 添加了光标的三维曲面图
2.三维参数图
三维曲面可以显示三维空间的一个曲面,但在显示三维空间的封闭图形时就无能为力了,这时就需要使用三维参数图了。如图3-72所示,是三维参数图的前面板显示和程序框图。在其程序框图中将出现两个图标:一个是3D Parametric Surface,另一个是三维参数曲面。

图3-72 经典选板ActiveX三维参数图、新式选板中的三维参数图
图3-73所示为三维参数曲面,三维参数曲面各端口的含义是:三维图形表示3D Parametric输入端,x矩阵表示参数变化时x坐标所形成的二维数组;y矩阵表示参数变化时y坐标所形成的二维数组,z矩阵表示参数变化时z坐标所形成的二维数组。三维参数曲面的使用较为复杂,但借助参数方程的形式可以很容易的理解,需要3个方程:x=fx(i,j);y=fy(i,j);z=fz(i,j)。其中,x、y、z是图形中点的三维坐标,i、j是两个参数。

图3-73 三维参数曲面的图标和端口
若球面的参数方程为

其中α为球到球面任意一点的矢径与Z轴之间的夹角,β是该矢径在XY平面上的投影与X轴的夹角。令α从 0变化到π,步长为π/24,β从0变化到2π,步长为π/12,通过球面的参数方程将确定一个球面。程序框图如图3-74所示,前面板如图3-75所示,前面板显示时要将特性中的Plots的Plot Style设置为Surf+Line,以利于观察。

图3-74 程序框图

图3-75 前面板显示
3.三维曲线图
三维曲线图是用于显示三维空间中的一条曲线。三维曲线图的前面板和程序框图如图3-76所示。程序框图中将出现两个图标。一个是3D Curve图标,另一个是三维曲线的图标。

图3-76 经典选板ActiveX三维曲线图、新式选板中的三维线条图
如图3-77所示,三维曲线有3个重要的输入数据端口,分别是x向量、y向量和z向量。分别对应曲线的3个坐标向量。在编写程序时,只要分别在3个坐标向量上连接一维数组数据就可以显示三维曲线。

图3-77 三维曲线的图标及其端口
如图3-78所示,三维曲线图显示了余弦的三维曲线。

图3-78 三维的余弦曲线
三维曲线图在绘制三维的数学图形时是比较方便的,如绘制螺旋线:x=cosθ,y=sinθ,z=θ。其中θ在0~2π的范围内,步长为π/12。具体程序框图如图3-79所示。相应的前面板如图3-80所示。

图3-79 绘制螺旋线的程序框图

图3-80 螺旋线的直接显示
从图中可以看出若不加设置而直接输出特性效果不好,所以要进行特性设置,三维曲线的特性设置与三维曲面图的设置类似。对于特性对话框中的General选项,将其中的Plot area color 设置为黑色,将Grid planes中的Grid frame color设置为红色;对于Axes选项,将其中的Grid的子选项Major Grid的Color设置为绿色;对于Plots选项,将Style的Color map style设置为Color Spectrum。设置后的螺旋线前面板如图3-81所示。
三维曲线图有属性浏览器窗口,通过属性浏览器窗口用户可以很方便地浏览并修改对象的属性,在三维曲线图上单击鼠标右键,从弹出的快捷菜单中选择“属性浏览器”,将弹出三维曲线“属性浏览器”框图,如图3-82所示。

图3-81 经过特性设置后的螺旋线前面板

图3-82 “属性浏览器”窗口