我想问一下,是否可以在我的代码中优化CGAL的曲面网格创建?在下面的循环中,我只是从双表示顶点的平面数组和面id的int数组中添加顶点和面。
由于顶点和面的数量是已知的,我是否需要以某种方式为更快的转换保留内存?在我的工作流程中,它永远不会改变。
CGAL::Surface_mesh<CGAL::Exact_predicates_inexact_constructions_kernel::Point_3> mesh1;
for ( size_t i = 0; i < n_coord_mesh1; i++ ) {
mesh1.add_vertex (CGAL::Epick::Point_3 (coord_mesh1[3 * i], coord_mesh1[3 * i + 1], coord_mesh1[3 * i + 2]));
}
for ( size_t i = 0; i < n_faces_mesh1; i++ ) {
mesh1.add_face (CGAL::SM_Vertex_index (faces_mesh1[3 * i + 0]), CGAL::SM_Vertex_index (faces_mesh1[3 * i + 1]), CGAL::SM_Vertex_index (faces_mesh1[3 * i + 2]));
}
您可以使用Surface_mesh::reserve()
,就像在文档中一样,在这里:https://doc.cgal.org/latest/Surface_mesh/classCGAL_1_1Surface__mesh.html#a2172cdbebc27ecf4ca36ac050aad11b8