VTK 数据类型分析

文章介绍了VTK中Tuple的概念,它是数据数组的子数组,用于存储相同类型的数据分量。元组大小固定,可用于表达如RGB颜色等多分量数据。vtkDataArray用于存储数值数据,支持固定和动态长度的数据数组操作,包括设置和获取元组分量的值,以及多分量和单分量数据数组的转换。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/zy2317878/article/details/78744825
Tuple(元组)的概念

许多可视化数据是由多个数据分量组成的,如RGB颜色数据由红、绿、蓝三个分量组成,为了在连续数组中表达这一类数据,VTK引入了元组(Tuple)的概念。元组是数据数组的子数组,用于存储数据类型相同的分量数据,图6.13所示的NumberOfComponents,表示的就是数据数组里元组的个数。元组的大小在给定后不会改变,图6.14所示的数据数组由n个元组组成,每个元组存储三个分量数据。

图6.14数据数组结构

vtkDataArray存储的是数值数据,如属性数据(Attribute Data)和点数据(Point)等。有些属性数据,如点、矢量、法向量和张量等,在定义时就需要指定元组的大小。例如,点、矢量和法向量等属性数据,元组的大小是3,而张量属性数据的元组大小是9 (即3×3的矩阵),标量属性数据对于元组的大小则没有任何要求,对于处理标量属性数据的算法,通常都是只处理标量每一个元组数据的第一个分量。VTK提供了将多分量的数据数组分离成单一分量的数据数组,以及将单一分量的数据数组合并成多分量的数据数组的类,即vtkSplitField和vtkMergeFields。

下列代码演示了如何创建固定长度及动态的数据数组,以加深对Data Array及Tuple概念的理解:

/**************************************************************************

固定长度的数据数组(DataArray)。下列代码创建了容量为20个元组(Tuple)的数据数组,

每个元组的分量个数为1,通过方法SetComponent()和GetComponent()设置及获取相应

的元组的值。

**************************************************************************/

vtkSmartPointer arr = vtkSmartPointer< vtkFloatArray >::New();

arr->SetNumberOfComponents(1);//设置元组的分量个数为1

arr->SetNumberOfTuples(20);//指定数据数组的长度为20个元组

arr->SetComponent(10,0, 10.0); //指定第10个元组的第0个分量的值为10.0

arr->SetTuple1(11,9.0); //指定第11个元组的值为9.0

doubleb = arr->GetComponent(10, 0); //获取第10个Tuple的第0个分量的值

/**************************************************************************

动态长度的数据数组。下列代码创建了一个具有动态长度的数据数组,每个元组的分

量个数为1,通过方法InsertNextTuple1()插入一个单分量的元组。与InsertNextTuple1()

类似的还有InsertNextTuple2()/InsertNextTuple3()/InsertNextTuple4()/InsertNextTuple9()等。

**************************************************************************/

vtkSmartPointer arr = vtkSmartPointer< vtkFloatArray >::New();

arr->SetNumberOfComponents(1);//设置元组的分量个数为1

arr->InsertNextTuple1(5); //插入一个单分量的元组,其值为5

arr->InsertNextTuple1(10);

doubleb = arr->GetComponent(1, 0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值