VTK基本数据结构
前面介绍了VTK 的一个重要概念一一可视化管线,讲解了 VTK 数据的流动过程。这就好比做一道菜,在做每一道菜之前,首先要掌握这道菜的做法,什么时候放盐什么时候放酱油等调料,除了需要弄清楚做每一道菜的流程,还需要了解所做的每一道菜的原料只有掌握做菜的流程并了解原料的特点,最后做出来的菜才可口美味。如果说 VTK 可视化管线是完成VTK应用程序这道菜的基本步骤,那么VTK 的数据结构就是做每一道菜的基本原料。针对可视化领域的特点,VTK 定义了种类丰富的数据结构,这一章将重点介绍VTK 的基本数据结构,了解这些数据结构,有助于读者写出更有针对性的、更高效的可视化应用程序。
3.1 可视化数据的基本特点
要实现数据可视化,有必要了解可视化的数据特点。归纳起来,可视化数据具有如下特点。
(1)散性
为了让计算机能够获取、处理和分析数据,必须对无限、连续的空间体进行采样,生成有限的采样数据点,这些数据以离散点的形式存储,采样的过程是一个离散化的过程。
由于可视化数据的离散性特点,在某些离散点上有精确的值存在,但点与点之间的值则是不可知的,要得到采样点之外的其他点的值,只有通过插值 (Interpolation)的方法获取。常用的插值方法是线性插值,要得到更精确的数值可以采用非线性插值,如 B样条插值方法。
(2)数据具有规则或不规则的结构(结构化与非结构化)
可视化数据可以分为规则(Regular)和不规则(Irregular)或者说结构化 (Structured)和非结构化(Unstructured)。规则结构数据点之间有固定的关联关系,可以通过这些关联确定每个点的坐标,不规则结构数据之间没有固定的关联关系。
对于规则结构的数据,存储时不必存储所有数据点,只需存储起始点、相邻两点之间的间隔以及点的总数就可以保存完整的数据信息。对于不规则结构的数据,虽然不可以像规则结构的数据那样存储,但它也有自身的优势,即在数据变化频繁的区域可以密集表示,而数据变化不频繁的区域则稀疏表示。规则结构的数据可以在存储及计算时占优势,不规则结构的数据虽然在存储和计算时不能像规则结构那样高效,但它在数据表达方面相对而言更加自由、细致、灵活。
(3)数据具有维度
可视化数据的第三个特点是拓扑维度 (Topological Dimension)。可视化数据具有零维“维、二维、三维等任意维度,例如,零维数据表现为点,一维数据表现为曲线,二维数据表现为曲面,三维数据表现为体等。数据的维度决定了数据可视化的方法,例如,对于二维数据,可以将其存储到一个矩阵,然后再采用针对二维数据的可视化方法进行可视化(如等高图)
3.2数据对象和数据集
3.2.1 vtkDataObject
在VTK 中,数据一般以数据对象 (Data Object,类 vtkDataObject)的形式表现,这是VTK 里可视化数据最常用的表达形式。数据对象是数据的集合,数据对象表现的数据是可以被可视化管线处理的数据,只有当数据对象被组织成一种结构后,才能被 VTK 提供的可视化
算法所处理。图3-1是vtkDataObject类的继承图,VTK里的所有数据结构形式都是从这个类派生出来的,但在实际的 VTK 应用程序中,没有直接使用 vtkDataObject 来实例化数据对象,而