我正在尝试使用 Meso_skeleton 类从 CGAL 的骨架化工具中获取中间骨架。
问题是我想迭代它的顶点和面,但我不明白迭代器是什么类,所以我得到编译错误(关键字 auto 似乎在迭代器中不起作用,给出编译错误因为编译器不能干扰类型)。
此外,CGAL 文档似乎缺少有关如何使用 Meso_skeleton 类的信息,所以如果有人知道我可以找到其他信息的地方会很棒。
我试图运行的代码是这样的:
Skeleton skeleton;
Skeletonization mcs(tmesh);
Triangle_mesh contractedMesh; // prova a creare una nuova mesh dalla Skeletonization
mcs.set_is_medially_centered(true);
// 1. Contract the mesh by mean curvature flow.
mcs.contract_geometry();
// 2. Collapse short edges and split bad triangles.
mcs.collapse_edges();
mcs.split_faces();
// 3. Fix degenerate vertices.
mcs.detect_degeneracies();
// Perform the above three steps in one iteration.
mcs.contract();
auto meso = mcs.meso_skeleton();
output.open("verticesTest.cgal");
int number_of_vertices = 0;
CGAL::Polyhedron_3<Kernel>::Vertex_iterator ptr;
for( ptr = meso.vertices_begin; ptr != meso.vertices_end; ptr++)
{
output << ptr->point << std::endl;
++number_of_vertices;
}
此代码的目的是从 CGAL 的骨架化工具 (mean_curvature_flow_skeleton) 的中间步骤导出 meso_skeleton 的顶点和面。让我知道是否可以编写一个更好的解决方案(也许有一些我忽略的 CGAL 功能)。
谢谢