如何从 CGAL 中的表面网格中删除多个顶点?

How do I remove many vertices from a surface mesh in CGAL?

我正在尝试遍历表面网格中的所有顶点并移除那些满足特定条件的顶点。删除顶点应该删除连接的面。

CGAL::Euler::remove_center_vertex 似乎做了我希望的事,但它使迭代器无效,所以我应该如何从表面网格中删除许多顶点?

您可能想看看简化包: https://doc.cgal.org/latest/Surface_mesh_simplification/index.html

编辑: 您应该首先收集所有要删除的顶点,然后使用收集的顶点对 remove_center_vertex() 进行所有调用。或者,您可以查看函数 remove_connected_components(). Collect the set of faces incident to the vertices to be removed and call that function to remove all the faces at once. Note that you might have to call expand_face_selection_for_removal() 以防止创建非流形顶点。