CGAL Polyhgon Mesh Process成员函数自查表

1. I/O 操作

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::IO::read_polygon_meshconst std::string& fname, Graph& g, const NamedParameters& np=parameters::default_values()读取多边形网格文件,支持自动修复非流形表面PMP::IO::read_polygon_mesh("input.off", mesh)

2. 网格生成与细化

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::refineFaceRange face_range, PolygonMesh& pmesh, OutputIterator new_facets, OutputIterator new_vertices, const NamedParameters& np=parameters::default_values()细化三角形网格的指定区域,插入新顶点并翻转边保证网格有效性PMP::refine(mesh, faces(mesh), back_inserter(new_facets), back_inserter(new_vertices), parameters::density_control_factor(2.))
boolCGAL::Polygon_mesh_processing::fairVertexRange vertex_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()光顺网格的指定顶点区域,最小化带边界约束的双拉普拉斯系统std::vector<Vertex_handle> region; extract_k_ring(v, 12, region); PMP::fair(mesh, region)
boolCGAL::Polygon_mesh_processing::triangulate_facesFaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()将多边形网格的指定面三角化,使用约束 Delaunay 三角化最大化最小角PMP::triangulate_faces(mesh)

3. 重网格化

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::isotropic_remeshingFaceRange face_range, SizingFunction& sizing, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()对三角形网格的指定区域进行各向同性重网格化,支持均匀和曲率自适应尺寸场PMP::isotropic_remeshing(faces(mesh), 0.04, mesh, parameters::number_of_iterations(10).protect_constraints(true))
voidCGAL::Polygon_mesh_processing::split_long_edgesEdgeRange edge_range, double target_length, PolygonMesh& pmesh拆分长度超过目标值的边,用于重网格化前预处理约束边PMP::split_long_edges(border_edges, target_edge_length, mesh)
voidCGAL::Polygon_mesh_processing::surface_Delaunay_remeshingconst TriangleMesh& input, TriangleMesh& output, const MeshingCriteria& criteria, const NamedParameters& np=parameters::default_values()基于 Delaunay 细化的表面重网格化,保证网格质量和拓扑正确性PMP::surface_Delaunay_remeshing(input, output, criteria)
voidCGAL::Polygon_mesh_processing::approximated_centroidal_Voronoi_diagram_remeshingTriangleMesh& mesh, std::size_t target_vertices, const NamedParameters& np=parameters::default_values()基于近似质心 Voronoi 图的重网格化,生成均匀或自适应的三角形网格PMP::approximated_centroidal_Voronoi_diagram_remeshing(mesh, 1000)
voidCGAL::Polygon_mesh_processing::remesh_planar_patchesPolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()自动检测网格中的平面区域并简化,减少三角形数量PMP::remesh_planar_patches(mesh)
voidCGAL::Polygon_mesh_processing::remesh_almost_planar_patchesPolygonMesh& pmesh, const PatchIdMap& patch_id_map, const CornerMap& corner_map, const NamedParameters& np=parameters::default_values()根据用户提供的平面区域分割和角点信息重网格化近似平面区域PMP::remesh_almost_planar_patches(mesh, patch_id_map, corner_map)
std::size_tCGAL::Polygon_mesh_processing::region_growing_of_planes_on_facesFaceRange face_range, PolygonMesh& pmesh, PatchIdMap& patch_id_map, const NamedParameters& np=parameters::default_values()使用区域生长算法检测网格中的平面区域,返回检测到的平面数量PMP::region_growing_of_planes_on_faces(faces(mesh), mesh, patch_id_map)
voidCGAL::Polygon_mesh_processing::detect_corners_of_regionsconst PolygonMesh& pmesh, const PatchIdMap& patch_id_map, CornerMap& corner_map, const NamedParameters& np=parameters::default_values()检测平面区域边界上的角点PMP::detect_corners_of_regions(mesh, patch_id_map, corner_map)

4. 网格平滑

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::angle_and_area_smoothingFaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()通过优化三角形的角度和面积来平滑网格,不插入新顶点PMP::angle_and_area_smoothing(faces(mesh), mesh, parameters::number_of_iterations(10))
voidCGAL::Polygon_mesh_processing::tangential_relaxationFaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()在表面切平面内进行基于面积的拉普拉斯平滑,保持表面形状PMP::tangential_relaxation(faces(mesh), mesh)
voidCGAL::Polygon_mesh_processing::smooth_shapeFaceRange face_range, PolygonMesh& pmesh, double time_step, const NamedParameters& np=parameters::default_values()基于平均曲率流的形状平滑,顶点沿法线方向移动,收敛到球面PMP::smooth_shape(faces(mesh), mesh, 0.05)

5. 网格挤压

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::extrude_meshconst InputMesh& input, OutputMesh& output, const BottomFunctor& bot, const TopFunctor& top, const NamedParameters1& np_in=parameters::default_values(), const NamedParameters2& np_out=parameters::default_values()挤压带边界的三角形网格,通过用户提供的函子控制上下挤压方向PMP::extrude_mesh(in, out, bottom, top)

6. 共细化与布尔运算

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::corefineTriangleMesh& tm1, TriangleMesh& tm2, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()对两个三角形网格进行共细化,使它们的交线成为两者的边PMP::corefine(mesh1, mesh2)
boolCGAL::Polygon_mesh_processing::corefine_and_compute_unionconst TriangleMesh& tm1, const TriangleMesh& tm2, TriangleMesh& out, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values(), const NamedParameters3& np_out=parameters::default_values()计算两个闭合三角形网格所围体积的并集PMP::corefine_and_compute_union(mesh1, mesh2, out)
boolCGAL::Polygon_mesh_processing::corefine_and_compute_intersectionconst TriangleMesh& tm1, const TriangleMesh& tm2, TriangleMesh& out, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values(), const NamedParameters3& np_out=parameters::default_values()计算两个闭合三角形网格所围体积的交集PMP::corefine_and_compute_intersection(mesh1, mesh2, out)
boolCGAL::Polygon_mesh_processing::corefine_and_compute_differenceconst TriangleMesh& tm1, const TriangleMesh& tm2, TriangleMesh& out, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values(), const NamedParameters3& np_out=parameters::default_values()计算两个闭合三角形网格所围体积的差集(tm1 - tm2)PMP::corefine_and_compute_difference(mesh1, mesh2, out)
boolCGAL::Polygon_mesh_processing::corefine_and_compute_boolean_operationsconst TriangleMesh& tm1, const TriangleMesh& tm2, BooleanOutput& out, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()同时计算多个布尔运算(并、交、差),提高效率PMP::corefine_and_compute_boolean_operations(mesh1, mesh2, out)

7. 网格裁剪

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::clipconst TriangleMesh& tm, const Clipper& clipper, TriangleMesh& out, const NamedParameters& np=parameters::default_values()用闭合网格或半空间裁剪三角形网格,支持表面和体积级裁剪PMP::clip(mesh, plane, out, parameters::clip_volume(true))
boolCGAL::Polygon_mesh_processing::splitconst TriangleMesh& tm, const Clipper& clipper, TriangleMesh& out_positive, TriangleMesh& out_negative, const NamedParameters& np=parameters::default_values()用闭合网格或半空间将三角形网格分割为两部分PMP::split(mesh, plane, out_pos, out_neg)

8. 孔洞填充

返回值类型函数名参数作用用法
OutputIteratorCGAL::Polygon_mesh_processing::triangulate_hole_polylineconst PointRange1& points, OutputIterator out, const NamedParameters& np=parameters::default_values()三角化由点序列定义的孔,输出三角形顶点索引PMP::triangulate_hole_polyline(polyline, back_inserter(patch))
std::tuple<bool, std::vector<face_descriptor>, std::vector<vertex_descriptor>>CGAL::Polygon_mesh_processing::triangulate_holePolygonMesh& pmesh, halfedge_descriptor border_halfedge, const NamedParameters& np=parameters::default_values()三角化网格上的单个孔,返回是否成功、生成的面和顶点PMP::triangulate_hole(mesh, border_he)
std::tuple<bool, std::vector<face_descriptor>, std::vector<vertex_descriptor>>CGAL::Polygon_mesh_processing::triangulate_and_refine_holePolygonMesh& pmesh, halfedge_descriptor border_halfedge, const NamedParameters& np=parameters::default_values()三角化并细化网格上的单个孔PMP::triangulate_and_refine_hole(mesh, border_he)
std::tuple<bool, std::vector<face_descriptor>, std::vector<vertex_descriptor>>CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_holePolygonMesh& pmesh, halfedge_descriptor border_halfedge, const NamedParameters& np=parameters::default_values()三角化、细化并光顺网格上的单个孔PMP::triangulate_refine_and_fair_hole(mesh, border_he)

9. 相交检测

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::do_intersectconst Geometry1& g1, const Geometry2& g2, const NamedParameters& np=parameters::default_values()检测两个几何对象(网格、多段线等)是否相交PMP::do_intersect(mesh1, mesh2)
OutputIteratorCGAL::Polygon_mesh_processing::intersecting_meshesconst MeshRange& meshes, OutputIterator out, const NamedParameters& np=parameters::default_values()记录网格范围内所有相交的网格对PMP::intersecting_meshes(meshes, back_inserter(intersecting_pairs))
boolCGAL::Polygon_mesh_processing::does_self_intersectconst TriangleMesh& tm, const NamedParameters& np=parameters::default_values()检测三角形网格是否存在自相交PMP::does_self_intersect(mesh)
OutputIteratorCGAL::Polygon_mesh_processing::self_intersectionsFaceRange face_range, const TriangleMesh& tm, OutputIterator out, const NamedParameters& np=parameters::default_values()返回网格中所有自相交的三角形对PMP::self_intersections(faces(mesh), mesh, back_inserter(intersected_tris))

10. 形状谓词

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::is_degenerate_edgeedge_descriptor e, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()检测边是否退化(两个顶点几何位置相同)PMP::is_degenerate_edge(e, mesh)
boolCGAL::Polygon_mesh_processing::is_degenerate_triangle_faceface_descriptor f, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()检测三角形面是否退化(三个顶点共线)PMP::is_degenerate_triangle_face(f, mesh)
OutputIteratorCGAL::Polygon_mesh_processing::degenerate_edgesEdgeRange edge_range, const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values()收集指定边范围内的所有退化边PMP::degenerate_edges(edges(mesh), mesh, back_inserter(degen_edges))
OutputIteratorCGAL::Polygon_mesh_processing::degenerate_facesFaceRange face_range, const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values()收集指定面范围内的所有退化面PMP::degenerate_faces(faces(mesh), mesh, back_inserter(degen_faces))
boolCGAL::Polygon_mesh_processing::is_cap_triangle_faceface_descriptor f, const PolygonMesh& pmesh, double threshold, const NamedParameters& np=parameters::default_values()检测三角形面是否为 "帽形"(一个角接近 180 度)PMP::is_cap_triangle_face(f, mesh, 0.1)
boolCGAL::Polygon_mesh_processing::is_needle_triangle_faceface_descriptor f, const PolygonMesh& pmesh, double threshold, const NamedParameters& np=parameters::default_values()检测三角形面是否为 "针形"(一个角接近 0 度)PMP::is_needle_triangle_face(f, mesh, 0.1)

11. 表面定位

返回值类型函数名参数作用用法
boost::optional<std::pair<face_descriptor, Point_2>>CGAL::Polygon_mesh_processing::locateconst Point_3& p, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()定位点在网格上的位置,返回所在面和重心坐标PMP::locate(point, mesh)
boost::optional<std::pair<face_descriptor, Point_2>>CGAL::Polygon_mesh_processing::locate_with_AABB_treeconst Point_3& p, const AABB_tree& tree, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()使用 AABB 树快速定位点在网格上的位置PMP::locate_with_AABB_tree(point, tree, mesh)
boolCGAL::Polygon_mesh_processing::is_on_face_borderconst Point_2& bary, face_descriptor f, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()判断重心坐标表示的点是否在面的边界上PMP::is_on_face_border(bary, f, mesh)

12. 多边形汤处理

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::orient_polygon_soupPointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values()尝试一致地定向多边形汤中的面,必要时复制顶点PMP::orient_polygon_soup(points, polygons)
voidCGAL::Polygon_mesh_processing::polygon_soup_to_polygon_meshconst PointRange& points, const PolygonRange& polygons, PolygonMesh& out, const NamedParameters_PS& np_ps=parameters::default_values(), const NamedParameters_PM& np_pm=parameters::default_values()将定向后的多边形汤转换为有效的多边形网格PMP::polygon_soup_to_polygon_mesh(points, polygons, mesh)
voidCGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soupconst PolygonMesh& pmesh, PointRange& points, PolygonRange& polygons将多边形网格转换为多边形汤PMP::polygon_mesh_to_polygon_soup(mesh, points, polygons)

13. 网格定向

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::orientTriangleMesh& tm, bool outward=true, const NamedParameters& np=parameters::default_values()将闭合网格的每个连通分量定向为向外或向内PMP::orient(mesh, true)
voidCGAL::Polygon_mesh_processing::orient_to_bound_a_volumeTriangleMesh& tm, const NamedParameters& np=parameters::default_values()定向闭合网格的连通分量,使其包围一个体积PMP::orient_to_bound_a_volume(mesh)
boolCGAL::Polygon_mesh_processing::is_outward_orientedconst TriangleMesh& tm, const NamedParameters& np=parameters::default_values()检查闭合网格是否向外定向(法线指向外部)PMP::is_outward_oriented(mesh)
voidCGAL::Polygon_mesh_processing::reverse_face_orientationsPolygonMesh& pmesh反转网格中所有面的方向,法线也随之反转PMP::reverse_face_orientations(mesh)
std::size_tCGAL::Polygon_mesh_processing::volume_connected_componentsconst TriangleMesh& tm, VolumeIdMap& vol_id_map, const NamedParameters& np=parameters::default_values()计算闭合网格定义的体积连通分量,返回体积数量PMP::volume_connected_components(mesh, vol_id_map)
voidCGAL::Polygon_mesh_processing::duplicate_non_manifold_edges_in_polygon_soupPointRange& points, PolygonRange& polygons复制多边形汤中的非流形边,使其可定向PMP::duplicate_non_manifold_edges_in_polygon_soup(points, polygons)
voidCGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_meshconst TriangleMesh& ref, PointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values()根据参考网格定向三角形汤PMP::orient_triangle_soup_with_reference_triangle_mesh(ref, points, polygons)
std::size_tCGAL::Polygon_mesh_processing::merge_reversible_connected_componentsPolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()合并可反转的连通分量,返回剩余分量数PMP::merge_reversible_connected_components(mesh)

14. 组合修复

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soupPointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values()合并多边形汤中几何位置相同的点PMP::merge_duplicate_points_in_polygon_soup(points, polygons)
voidCGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soupPointRange& points, PolygonRange& polygons合并多边形汤中相同的多边形PMP::merge_duplicate_polygons_in_polygon_soup(points, polygons)
voidCGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soupPointRange& points, PolygonRange& polygons移除多边形汤中不被任何多边形引用的孤立点PMP::remove_isolated_points_in_polygon_soup(points, polygons)
voidCGAL::Polygon_mesh_processing::repair_polygon_soupPointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values()综合修复多边形汤,包括合并重复点、移除孤立点等PMP::repair_polygon_soup(points, polygons)
boolCGAL::Polygon_mesh_processing::stitch_boundary_cyclehalfedge_descriptor border_halfedge, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()缝合单个边界环,合并重复的边和顶点PMP::stitch_boundary_cycle(border_he, mesh)
std::size_tCGAL::Polygon_mesh_processing::stitch_boundary_cyclesPolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()缝合网格的所有边界环,返回缝合的环数PMP::stitch_boundary_cycles(mesh)
std::size_tCGAL::Polygon_mesh_processing::stitch_bordersPolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()缝合网格的所有边界,包括不同边界环上的重复边PMP::stitch_borders(mesh)
boolCGAL::Polygon_mesh_processing::is_non_manifold_vertexvertex_descriptor v, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()检测顶点是否为非流形顶点PMP::is_non_manifold_vertex(v, mesh)
std::size_tCGAL::Polygon_mesh_processing::duplicate_non_manifold_verticesPolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()复制非流形顶点,使网格成为组合流形,返回新增顶点数PMP::duplicate_non_manifold_vertices(mesh)
std::size_tCGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cyclehalfedge_descriptor border_halfedge, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()合并边界环中几何位置相同的顶点,返回合并的顶点数PMP::merge_duplicated_vertices_in_boundary_cycle(border_he, mesh)

15. 几何修复

返回值类型函数名参数作用用法
boolCGAL::Polygon_mesh_processing::autorefine_triangle_soupPointRange& points, PolygonRange& triangles, const NamedParameters& np=parameters::default_values()自动细化三角形汤以解决自相交问题PMP::autorefine_triangle_soup(points, triangles)
std::size_tCGAL::Polygon_mesh_processing::remove_almost_degenerate_facesFaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()移除网格中近似退化的三角形面,返回移除的面数PMP::remove_almost_degenerate_faces(faces(mesh), mesh)

16. 法向量计算

返回值类型函数名参数作用用法
Vector_3CGAL::Polygon_mesh_processing::compute_face_normalface_descriptor f, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()计算单个面的法向量PMP::compute_face_normal(f, mesh)
Vector_3CGAL::Polygon_mesh_processing::compute_vertex_normalvertex_descriptor v, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()计算单个顶点的法向量(平均相邻面法向量)PMP::compute_vertex_normal(v, mesh)
voidCGAL::Polygon_mesh_processing::compute_face_normalsconst PolygonMesh& pmesh, FaceNormalMap fnormals, const NamedParameters& np=parameters::default_values()计算所有面的法向量并存储到属性映射PMP::compute_face_normals(mesh, fnormals)
voidCGAL::Polygon_mesh_processing::compute_vertex_normalsconst PolygonMesh& pmesh, VertexNormalMap vnormals, const NamedParameters& np=parameters::default_values()计算所有顶点的法向量并存储到属性映射PMP::compute_vertex_normals(mesh, vnormals)
voidCGAL::Polygon_mesh_processing::compute_normalsconst PolygonMesh& pmesh, VertexNormalMap vnormals, FaceNormalMap fnormals, const NamedParameters& np=parameters::default_values()同时计算所有顶点和面的法向量PMP::compute_normals(mesh, vnormals, fnormals)

17. 曲率计算

返回值类型函数名参数作用用法
voidCGAL::Polygon_mesh_processing::interpolated_corrected_curvaturesconst PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()计算网格所有顶点的插值修正曲率(平均、高斯、主曲率及方向)PMP::interpolated_corrected_curvatures(mesh, parameters::vertex_mean_curvature_map(mean_map).vertex_Gaussian_curvature_map(gauss_map))
voidCGAL::Polygon_mesh_processing::interpolated_corrected_curvaturesvertex_descriptor v, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values()计算网格单个顶点的插值修正曲率double h, g; PMP::interpolated_corrected_curvatures(v, mesh, parameters::vertex_mean_curvature(std::ref(h)).vertex_Gaussian_curvature(std::ref(g)))
FTCGAL::Polygon_mesh_processing::discrete_mean_curvaturevertex_descriptor v, const TriangleMesh& tm, const NamedParameters& np=parameters::default_values()计算单个顶点的离散平均曲率(基于 Meyer 等人的方法)PMP::discrete_mean_curvature(v, mesh)
voidCGAL::Polygon_mesh_processing::discrete_mean_curvaturesconst TriangleMesh& tm, VertexCurvatureMap vcurvatures, const NamedParameters& np=parameters::default_values()计算所有顶点的离散平均曲率PMP::discrete_mean_curvatures(mesh, vcurv_map)
FTCGAL::Polygon_mesh_processing::discrete_Gaussian_curvaturevertex_descriptor v, const TriangleMesh& tm, const NamedParameters& np=parameters::default_values()计算单个顶点的离散高斯曲率(基于角度缺陷)PMP::discrete_Gaussian_curvature(v, mesh)
voidCGAL::Polygon_mesh_processing::discrete_Gaussian_curvaturesconst TriangleMesh& tm, VertexCurvatureMap vcurvatures, const NamedParameters& np=parameters::default_values()计算所有顶点的离散高斯曲率PMP::discrete_Gaussian_curvatures(mesh, vcurv_map)

18. 网格切片

返回值类型函数名参数作用用法
CGAL::Polygon_mesh_slicerCGAL::Polygon_mesh_slicer::Polygon_mesh_slicerconst TriangleMesh& tm, const NamedParameters& np=parameters::default_values()构造网格切片函子CGAL::Polygon_mesh_slicer<Mesh, K> slicer(mesh)
CGAL::Polygon_mesh_slicerCGAL::Polygon_mesh_slicer::Polygon_mesh_slicerconst TriangleMesh& tm, const AABB_tree& tree, const NamedParameters& np=parameters::default_values()使用预构建的 AABB 树构造网格切片函子CGAL::Polygon_mesh_slicer<Mesh, K> slicer(mesh, tree)
OutputIteratorCGAL::Polygon_mesh_slicer::operator()const Plane_3& plane, OutputIterator out计算网格与平面的交线,输出多段线slicer(plane, back_inserter(polylines))

19. 连通分量

返回值类型函数名参数作用用法
OutputIteratorCGAL::Polygon_mesh_processing::connected_componentface_descriptor f, const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values()收集与指定面属于同一连通分量的所有面PMP::connected_component(f, mesh, back_inserter(cc_faces))
std::size_tCGAL::Polygon_mesh_processing::connected_componentsconst PolygonMesh& pmesh, FaceComponentMap& fccmap, const NamedParameters& np=parameters::default_values()计算网格的所有连通分量,返回分量数PMP::connected_components(mesh, fccmap)
voidCGAL::Polygon_mesh_processing::keep_connected_componentsPolygonMesh& pmesh, const ComponentIdRange& component_ids, const FaceComponentMap& fccmap, const NamedParameters& np=parameters::default_values()保留网格中指定 ID 的连通分量PMP::keep_connected_components(mesh, {0,1}, fccmap)
voidCGAL::Polygon_mesh_processing::remove_connected_componentsPolygonMesh& pmesh, const ComponentIdRange& component_ids, const FaceComponentMap& fccmap, const NamedParameters& np=parameters::default_values()移除网格中指定 ID 的连通分量PMP::remove_connected_components(mesh, {2}, fccmap)
voidCGAL::Polygon_mesh_processing::keep_largest_connected_componentsPolygonMesh& pmesh, std::size_t n, const NamedParameters& np=parameters::default_values()保留网格中最大的 n 个连通分量PMP::keep_largest_connected_components(mesh, 1)
voidCGAL::Polygon_mesh_processing::keep_large_connected_componentsPolygonMesh& pmesh, FT threshold, const NamedParameters& np=parameters::default_values()保留网格中大小超过阈值的连通分量PMP::keep_large_connected_components(mesh, 100)
OutputIteratorCGAL::Polygon_mesh_processing::split_connected_componentsconst PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values()将网格的每个连通分量分割为独立的网格PMP::split_connected_components(mesh, back_inserter(meshes))

20. Hausdorff 距离计算

返回值类型函数名参数作用用法
FTCGAL::Polygon_mesh_processing::approximate_Hausdorff_distanceconst TriangleMesh& tm1, const TriangleMesh& tm2, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()计算从 tm1 到 tm2 的近似 Hausdorff 距离PMP::approximate_Hausdorff_distance(mesh1, mesh2, parameters::number_of_points_per_area_unit(4000))
FTCGAL::Polygon_mesh_processing::approximate_symmetric_Hausdorff_distanceconst TriangleMesh& tm1, const TriangleMesh& tm2, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()计算两个网格之间的对称近似 Hausdorff 距离PMP::approximate_symmetric_Hausdorff_distance(mesh1, mesh2)
FTCGAL::Polygon_mesh_processing::approximate_max_distance_to_point_setconst TriangleMesh& tm, const PointRange& points, double precision, const NamedParameters& np=parameters::default_values()计算网格到点集的近似最大距离PMP::approximate_max_distance_to_point_set(mesh, points, 4000)
FTCGAL::Polygon_mesh_processing::bounded_error_Hausdorff_distanceconst TriangleMesh& tm1, const TriangleMesh& tm2, double error_bound, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()计算从 tm1 到 tm2 的有界误差 Hausdorff 距离PMP::bounded_error_Hausdorff_distance(mesh1, mesh2, 1e-4)
FTCGAL::Polygon_mesh_processing::bounded_error_symmetric_Hausdorff_distanceconst TriangleMesh& tm1, const TriangleMesh& tm2, double error_bound, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()计算两个网格之间的对称有界误差 Hausdorff 距离PMP::bounded_error_symmetric_Hausdorff_distance(mesh1, mesh2, 1e-4)
boolCGAL::Polygon_mesh_processing::is_Hausdorff_distance_largerconst TriangleMesh& tm1, const TriangleMesh& tm2, FT max_distance, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values()判断两个网格之间的 Hausdorff 距离是否大于指定值PMP::is_Hausdorff_distance_larger(mesh1, mesh2, 0.1)

21. 特征检测

返回值类型函数名参数作用用法
std::size_tCGAL::Polygon_mesh_processing::sharp_edges_segmentationPolygonMesh& pmesh, FT angle_threshold, EdgeFeatureMap& eif, FacePatchIdMap& pid, const NamedParameters& np=parameters::default_values()检测网格的尖锐边并分割为表面面片,返回面片数量PMP::sharp_edges_segmentation(mesh, 90, eif, pid)
std::size_tCGAL::Polygon_mesh_processing::detect_sharp_edgesPolygonMesh& pmesh, FT angle_threshold, EdgeFeatureMap& eif, const NamedParameters& np=parameters::default_values()检测网格的尖锐边(二面角小于阈值),返回尖锐边数量PMP::detect_sharp_edges(mesh, 90, eif)
voidCGAL::Polygon_mesh_processing::detect_vertex_incident_patchesconst PolygonMesh& pmesh, const FacePatchIdMap& pid, VertexIncidentPatchesMap& vip, const NamedParameters& np=parameters::default_values()检测每个顶点所属的表面面片PMP::detect_vertex_incident_patches(mesh, pid, vip)

22. 点位置测试

返回值类型函数名参数作用用法
CGAL::Side_of_triangle_meshCGAL::Side_of_triangle_mesh::Side_of_triangle_meshconst TriangleMesh& tm, const NamedParameters& np=parameters::default_values()构造点位置测试函子CGAL::Side_of_triangle_mesh<Mesh, K> inside(mesh)
CGAL::Bounded_sideCGAL::Side_of_triangle_mesh::operator()const Point_3& p测试点是否在网格包围的体积内部、外部或边界上CGAL::Bounded_side res = inside(point)

23. 多面体包络测试

返回值类型函数名参数作用用法
CGAL::Polyhedral_envelopeCGAL::Polyhedral_envelope::Polyhedral_envelopeconst TriangleMesh& tm, FT epsilon, const NamedParameters& np=parameters::default_values()构造多面体包络测试函子CGAL::Polyhedral_envelope<Kernel> envelope(mesh, 0.2)
boolCGAL::Polyhedral_envelope::operator()const Point_3& p测试点是否在多面体包络内envelope(point)
boolCGAL::Polyhedral_envelope::operator()const Point_3& p1, const Point_3& p2, const Point_3& p3测试三角形是否完全在多面体包络内envelope(p1, p2, p3)
boolCGAL::Polyhedral_envelope::operator()const TriangleMesh& query测试查询网格是否完全在多面体包络内envelope(query_mesh)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值