我有一个包含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。

  1. 创建一个vtkimagedata实例。
  2. 将其尺寸设置为(6、6、1)(忽略了第三维)。
  3. 将其数据类型设置为适当的类型(我猜是浮动或双重)。
  4. 调用分配量表();
  5. 如果在C ++中,

    1. 调用getscalarpointer()并将其施放为3中的数据类型。
    2. 该指针将指向36号尺寸的数组。您只需按照往常而填充每个点。
  6. 如果用另一种语言(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

# ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top