赞
踩
学习教程:《VTK图形图像开发进阶》张晓东,罗火灵
特别感谢:东灵工作室
(1)离散性。
(2)数据具有规则或不规则的结构(结构化与非结构化)
(3)数据具有维度
零维:点
一维:曲线
二维:曲面
三维:体
…
在VTK中,数据一般以数据对象Data Object,类vtkDataObject的形式表现,这是VTK中可视化数据最常用的表达形式。数据对象是数据的集合,只有当数据对象被组织成一种结构后,才能被VTK提供的可视化算法所处理。
在实际应用中,根据具体的可视化数据选择具体的子类来实现可视化。
将数据对象组织成一种结构并赋予相应的属性值,就形成了数据集。
vtkDataSet是vtk中与数据集对应的类,该类直接从vtkDataObject派生。vtkDataSet由两部分组成,组织结构和属性数据。
vtkDataSet组织结构由拓扑结构和几何结构两部分组成。拓扑结构描述了对象的构成形式,而几何结构描述了对象的空间位置关系。
例如,在屏幕上显示一个三角形,定义三个点的坐标则为数据集的几何结构,而他们之间的连接则构成了数据集的拓扑结构。即点数据定义了数据集的几何结构,单元数据定义了数据集的拓扑结构。
一系列有序的点按指定类型连接所定义的结构就是单元,单元是VTK可视化系统的基础。
单元是由单元的类型(如六面体)和构成单元的顶点列表两部分构成。
单元就是一个有顺序的点集。单元的类型决定了点集里点的顺序(即单元的拓扑),而定义单元的点的个数就是该单元的大小。
VTK里单元的类型定义在vtkCellType.h文件里。
单元类型的线性与非线性的划分主要是以插值函数为依据的。
属性数据主要用来描述数据集的属性特征,对数据集的可视化实质上就是对属性数据的可视化。
根据数据的性质,属性数据可分为标量数据、矢量数据、张量数据等几大类。属性数据可以抽象为n维的数组。
标量数据
矢量数据:矢量数据的三维方向上可用三元组表示,颜色RGB等标量数据也可用类似的三元组的结构表示。
纹理坐标:可以将点从笛卡尔坐标空间映射到一维、二维或三维的纹理空间中。
张量数据:一个k阶的张量可当作一个k维的表格。零阶的张量是标量,一阶的张量是矢量,二阶的张量是纹理坐标,三阶的张量是一个三维阵列,VTK只支持3*3的对称的张量。
数据集的类型由它的组织结构决定,同时数据集的类型决定了点和单元之间的相互关系。
vtkImageData
按规则排列在矩形方格中的点和单元的集合。vtkImageData是由一维的线、二维的像素或三维的体素组成,它的几何结构和拓扑结构都是规则的。
vtkPolyData
多边形数据集。vtkPolyData是由顶点、多顶点、线、折线和三角形条带等单元构成,多边形数据是不规则结构的。
用一个三角形条带表达N个三角形只需要用N+2个点,而且大多数图形库渲染三角形条带的速度比直接渲染三角形要快很多。
vtkRectilinearGrid
vtkRectilinearGrid类型的数据是排列在矩形方格中的点和单元的集合,线性网络的拓扑结构是规则的,但是其几何结构只有部分是规则的。即它的点是沿着坐标轴排列的,但是两点间的间隔可能不同。
vtkStructuredGrid
vtkStructuredGrid是结构化网格数据,具有规则的拓扑结构和不规则的几何结构,但是单元没有交叉或重叠。
vtkUnstructuredGrid
vtkUnstructuredGrid是非结构化网格,它的拓扑结构和几何结构都是非结构化的。
在VTK中,任一类型的数据集都可用非结构化网格来表达,vtkUnstructuredGrid类型数据的存储需要大量的空间,计算时需要消耗大量的资源。
vtkUnstructuredPoints
vtkUnstructuredPoints是非结构化点集,是指不规则分布在空间的点集,用离散点来表达。具有不规则的几何结构,不具有拓扑结构。
数据的存储:
数据通过数据数组(vtkDataArray)形式存储,可以存储标量数据,也可以存储向量数据。数据数组由N个元组(tuple)组成。
元组是数据数组的子数组,用于存储数据类型相同的分量数据。元组的组分个数(NumberOfComponents)称为元组的大小。例如,点、矢量和法向量等属性数据,元组的大小是3,而张量属性数据的元组大小是9(即3*3的矩阵),标量属性数据对元组的大小则没有任何要求。
数据对象的表达:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。