VTK中的数据结构

1.数据对象和内容集

(1)数据对象

数据对象是整个可视化流程的核心载体,本质是对现实世界中各类数据的结构化抽象,目的是统一描述数据的“几何信息”、“拓扑结构“和”属性数据“

vtk中的数据一般是以数据对象的形式表现的,vtkDataObj是顶级抽象基类

(2)内容集

vtk中的数据集vtkDataSet直接派生于vtkDataObj,将信息对象组织成一种结构并赋予相应的属性数据;包含:组织结构、属性数据,其中组织结构=几何结构(点)+拓扑结构(单元)

资料集类型如下:

  • 线性网格:vtkImageData,点按规则网格排列(类似二维像素或三维体素的阵列),坐标间距均匀,拓扑关系隐含
  • 结构网格:点按规则索引排列(类似 vtkImageData 的网格索引),但点的坐标可以非均匀分布(间距可变),拓扑关系隐含(通过索引确定单元连接)
  • 非结构网格:点的坐标和单元的拓扑关系均完全不规则,支持任意类型的单元(如四面体、六面体、棱锥体、金字塔等),拓扑关系需显式存储
  • 多边形:由不规则的点集和点组成的 “几何图元”(如点、线、多边形、三角形带)构成,拓扑关系显式存储(明确记录哪些点组成一个单元)

2.单元

(1)单元的概念

本质是拓扑连接的抽象,通过点索引定义点与点之间的链接关系

(2)单元的特征

  • 点索引:存储单元索引的数组
  • 维度:0维(点)、1维(线)、2维(曲面)、3维(体)
  • 边界:实体与外界空间的分界面

在代码中是使用枚举值来表示单元类型的

(3)单元的类型

(1)线性单元
  • 顶点(Vertex)、多顶点(Polyvertex)、线段(Line)、多段线(Polyline)
  • 三角形(Triangle)、三角带(Triangle Trip)、四边形(Quadrilateral)、像素(Pixel)、多边形(Polygon)
  • 四面体(Terahedron)、六面体(Hexahedron)、体素(Voxel)
  • 三棱柱(Wedge)、四棱锥(Pyramid)
  • 五棱柱(Pentagonal prism)、六棱柱(Hexagonal prism)
(2)非线性单元

二次单元,类似线性单元的结构

3.属性数据

(1)标量材料

只有大小没有方向的数据,如温度值、颜射值RGB等

(2)矢量内容

既有大小又有方向的资料,如加速度

(3)张量资料

类似于阵列,0阶的张量是标量、1阶的张量是矢量、二阶的张量是纹理坐标、三阶是阵列

4.数据的存储和表达

(1)材料的存储

VTK中内存分配采用连续内存模式,利用vtkDataArray类的派生类来管理内存的
数据依据分量可分为:单分量和多分量

  • 单分量:vtkBitArray、vtkCharArray、vtkShortArray、vtkIntArray、vtkFloatArray、vtkDoubleArray等
  • 多分量:vtkVector2iArray、vtkVector3fArray、vtkVector4dArray、vtkMatrix3x3Array 、vtkMatrix4x4Array

(2)素材的表达

将数据抽象为 “几何 + 拓扑 + 属性” 的三元结构

posted on 2025-09-16 09:29  lxjshuju  阅读(17)  评论(0)    收藏  举报