vtk中顶点和点的区别

Difference between vertex and point in vtk

VTK中顶点和点的主要区别是什么?

好吧,我正在将一些计算点分配给 vtkPolyData 输出:

vtkPolyData* oput = vtkPolyData::SafeDownCast(out_info->Get(vtkDataObject::DATA_OBJECT()));

我想知道是使用方法SetVerts(vtkCellArray *v)还是方法SetPoints(vtkPoints *)

我认为这取决于分数应该是什么。点只是可以可视化的点,例如作为点云的一部分,而顶点是可以表示表面或体积的三角形的一部分。

如果没有关于您意图的任何细节,我认为我们无法真正告诉您使用哪个。

也许这个例子的第一部分与您需要的相似:http://www.vtk.org/Wiki/VTK/Examples/Cxx/Picking/AreaPicking

通常您设置点,然后您还需要分配顶点(或其他类型的单元格)以便可视化(您可以像示例中那样手动分配它们,或使用 vtkVertexGlyphFilter)

在 VTK 数据集中(即 类 继承 vtkDataSet,这是提供点概念的最简单的数据类型),点只是 space 中的位置。数据可以存储在 space 中的位置或代表点轨迹的单元格(例如,三角形或四面体)上。存储在单元格上的值在单元格轨迹中的每个点都采用相同的值。

单元格由角点定义。在 vtkPolyData 中,每个单元格都由一个整数偏移量列表定义到 vtkPoints 实例中的点坐标。

VTK中的顶点是一个单元,其点轨迹是一个点。

可以在 VTK 数据集中明确列出不被任何单元格引用的点(例如,您可以在 vtkPoints 对象中指定不用作任何四面体、三角形或角点的点坐标)顶点单元)。这些点只能有点数据(由 vtkDataSet 持有的 vtkPointData 实例中的数组存储)而不能有单元数据(由 vtkDataSet 持有的 vtkCellData 实例中的数组存储)。

因此,SetPoints() 允许您提供点坐标,然后 vtkCellArray 实例引用这些点坐标来定义各种形状的点轨迹。一类形状是顶点(因此 SetVerts()),而其他形状包括直线和多段线(SetLines())和 triangles/quads(SetPolys())。