Я пытаюсь получить промежуточный скелет из инструмента скелетизации CGAL с классом Meso_skeleton.
Проблема в том, что я хочу перебрать его вершины и грани, но не могу понять, какой класс является итератороми поэтому я получаю ошибки компиляции (также, похоже, ключевое слово 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;
}
Целью этого кода является экспорт вершины и граней meso_skeleton из промежуточных шагов инструмента Skeletonization из CGAL (mean_curvature_flow_skeleton).Дайте мне знать, если можно написать лучшее решение (возможно, с некоторыми функциями CGAL, которые я игнорирую).
Спасибо