在VTK中,属性数据和点都用数据数组(data arrays)表示。某些属性数据(例如法线、张量)需要具有与其定义一致的元组(在计算机编程中,元组(tuple)用来表示存储多种数据类型的有序值集。元组中的各个值以逗号分隔,例如“(2.0, 3.4, 5.0)”是一个三元组的示例)大小,例如,点、向量和法线需要元组大小为3的数据数组;张量的元组大小为9(即3x3矩阵)。标量对元组大小没有任何要求。
1 数据数组(vtkDataArray)
考虑数据的大小和范围,必须谨慎管理内存以创建高效的可视化系统。在VTK中,使用连续数据数组(continuous data arrays)作为大多数数据结构的基础。与其他数据结构(例如链表或指向结构体的指针数组)相比,连续数组的创建、删除和遍历速度更快。
VTK中决定用数据数组而非对象数组(例如,为单元和点使用单独的类)的原因是,对象的构造和析构是有性能成本的。从性能的角度看,面向对象的方法适用在应用程序层,而不是在实现层。
连续数组也可以轻松地通过网络传输,特别是如果数组中的信息是与计算机地址无关的内容。内存独立性避免了将信息从一个内存位置映射到另外一个内存位置的开销。因此,在VTK中,根据“id”(索引)访问信息。数组数组(vtkDataArray)默认的偏移量是0,就像C++数组一样。也就是说,给定了n个数据值,使用id(0、1、2、...、