CGAL - как использовать CGAL :: Polygon_mesh_processing :: connected_components для преобразования одного CGAL :: Surface_mesh во многие? - PullRequest
0 голосов
/ 09 февраля 2019

Я создаю библиотеку утилит сетки, и одна из функций, которую я хотел бы включить, - это возможность разбивать непересекающиеся разделы сетки.С этой целью я пытаюсь написать метод, который принимает CGAL::Surface_mesh и возвращает std::vector<CGAL::Surface_mesh>, где каждый элемент является связанным компонентом входной сетки.

Я вижу, что CGAL имеет CGAL::Polygon_mesh_processing::connected components, но кажется, что каждому лицу присваивается метка, указывающая, к какому компоненту он принадлежит.Как я могу использовать результат этой операции для создания нового CGAL::Surface_mesh из каждой группы граней с одинаковой меткой?

1 Ответ

0 голосов
/ 11 февраля 2019

Один из способов сделать это - использовать результат connected_components() в качестве входного параметра для Face_filtered_graph .Вы можете сделать что-то подобное, я верю:

 FCCmap fccmap = mesh.add_property_map<face_descriptor, faces_size_type> 
                 ("f:CC").first;
 faces_size_type num = PMP::connected_components(mesh,fccmap); 
 std::vector<Mesh> meshes(num);
 for(int i=0; i< num; ++i)
 {
   Filtered_graph ffg(mesh, i, fccmap);
   CGAL::copy_face_graph(ffg, meshes[i]);
 }
...