VTK中顶点和点之间的主要区别是什么?
好吧,我正在为vtkPolyData
输出分配一些计算点:
vtkPolyData* oput = vtkPolyData::SafeDownCast(out_info->Get(vtkDataObject::DATA_OBJECT()));
我想知道是使用方法SetVerts(vtkCellArray *v)
还是方法SetPoints(vtkPoints *)
。
答案 0 :(得分:3)
在VTK数据集中(即,继承vtkDataSet的类,这是提供点概念的最简单数据类型),点只是空间中的位置。数据可以存储在空间中的位置或者表示点的轨迹的单元(例如,三角形或四面体)上。存储在单元格中的值在单元格轨迹中的每个点处都具有相同的值。
细胞由角点定义。在vtkPolyData中,每个单元格都由一个整数偏移列表定义到vtkPoints实例中的点坐标中。
VTK中的顶点是一个单元,其点轨迹是单个点。
可以在VTK数据集中明确列出未被任何单元格引用的点(例如,您可以在vtkPoints对象中指定不用作任何四面体,三角形或顶点单元格的角点的点坐标)。这些点只能有点数据(由vtkDataSet保存的vtkPointData实例中的数组存储)而不是单元格数据(由vtkDataSet保存的vtkCellData实例中的数组存储)。
因此,SetPoints()
允许您提供点坐标,然后vtkCellArray实例引用它们来定义各种形状的点位置。一类形状是顶点(因此SetVerts()
),而其他形状包括直线和折线(SetLines()
)和三角形/四边形(SetPolys()
)。
答案 1 :(得分:0)
我认为这取决于要点是什么。点只是可以看到的点,例如作为点云的一部分,而顶点是可以表示曲面或体积的三角形的一部分。
如果没有任何关于你意图的细节,我认为我们无法真正告诉你使用哪个。
答案 2 :(得分:0)
这个例子的第一部分可能类似于你所需要的:http://www.vtk.org/Wiki/VTK/Examples/Cxx/Picking/AreaPicking
通常你设置点然后你还需要分配顶点(或其他类型的单元格)以便有可视化的东西(你可以像在示例中那样手动分配它们,或者使用vtkVertexGlyphFilter)