如何将 vtkPolyData 传递给 vtkDijkstraGraphGeodesicPath?

How to pass vtkPolyData into vtkDijkstraGraphGeodesicPath?

这是我目前拥有的:

vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
polydata->SetPoints(path);
polydata->Modified();

vtkSmartPointer<vtkDijkstraGraphGeodesicPath> dijkstra =
    vtkSmartPointer<vtkDijkstraGraphGeodesicPath>::New();
dijkstra->SetInputData(polydata);
dijkstra->SetStartVertex(0);
dijkstra->SetEndVertex(1);
dijkstra->Update();

然而,每次它执行Update(),它returns vector subscript out of range。我该如何解决这个问题?

来自 vtkDijkstraGraphGeodesicPath 文档:

Takes as input a polygonal mesh ...

...

Warning The input polydata must have only triangle cells.

我的猜测是你的多边形数据不满足必要的先决条件并且不是一个合适的三角形网格而只是一个点集。

至少需要调用 vtkPolyData::SetLines() 来指定顶点之间的连接。