题
我有一个包含3个维数据点的TXT文件,我想根据这些点创建一个VTKPolyData。
在文件中,我在第一行上有积分数,在我的情况下,它们是6x6。在那之后,每个点的实际坐标。文件的内容就是这样。
6 6
1 1 3
2 1 3.4
3 1 3.6
4 1 3.6
5 1 3.4
6 1 3
1 2 3
2 2 3.8
3 2 4.2
4 2 4.2
5 2 3.8
6 2 3
1 3 3
2 3 3
3 3 3
4 3 3
5 3 3
6 3 3
1 4 3
2 4 3
3 4 3
4 4 3
5 4 3
6 4 3
1 5 3
2 5 3.8
3 5 4.2
4 5 4.2
5 5 3.8
6 5 3
1 6 3
2 6 3.4
3 6 3.6
4 6 3.6
5 6 3.4
6 6 3
如何使用此数据使用TXT文件构建VTKPolyData结构?
解决方案
在我看来,您有一系列定期网格的积分,对吗?如果是这样,Vtkimagedata可能是一个更好的选择。如果您真的需要这种方式,则随后始终可以使用几何过滤器转换为Polydata。
- 创建一个vtkimagedata实例。
- 将其尺寸设置为(6、6、1)(忽略了第三维)。
- 将其数据类型设置为适当的类型(我猜是浮动或双重)。
- 调用分配量表();
如果在C ++中,
- 调用getscalarpointer()并将其施放为3中的数据类型。
- 该指针将指向36号尺寸的数组。您只需按照往常而填充每个点。
如果用另一种语言(tcl/python/java),请使用参数(x,y,0,0,value)在图像数据上调用setscalarcomponentfromfloat。第一个0是第三维,第二个是第一个组件。
这将为您提供一个网格,并且比Polydata更有效地记忆力。
如果您只想可视化点,请使用vtkdatasetmapper,并使用setRepresentationTopoints()设置Actor的属性,设置适当的点大小。这将做出简单的可视化工作。
其他提示
是 这些例子 有用?尤其是, 这个 可以生成点和多边形,因此应该可以适应。核心似乎是(与 很多 遗漏):
# ...
vtkPolyData shell
vtkFloatPoints points
vtkCellArray strips
# Generate points...
loop {
...
points InsertPoint $k $x0 $x1 $x2
}
shell SetPoints points
points Delete
# Generate triangles/polygons...
loop {
strips InsertNextCell $NP2
# ...
strips InsertCellPoint [expr $kb +$ke ]
# ...
strips InsertCellPoint [expr $kb +$ke ]
}
shell SetStrips strips
strips Delete
# ...
不隶属于 StackOverflow