1. I/O 操作
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::IO::read_polygon_mesh | const std::string& fname, Graph& g, const NamedParameters& np=parameters::default_values() | 读取多边形网格文件,支持自动修复非流形表面 | PMP::IO::read_polygon_mesh("input.off", mesh) |
2. 网格生成与细化
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::refine | FaceRange 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.)) |
bool | CGAL::Polygon_mesh_processing::fair | VertexRange 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) |
bool | CGAL::Polygon_mesh_processing::triangulate_faces | FaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 将多边形网格的指定面三角化,使用约束 Delaunay 三角化最大化最小角 | PMP::triangulate_faces(mesh) |
3. 重网格化
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::isotropic_remeshing | FaceRange 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)) |
void | CGAL::Polygon_mesh_processing::split_long_edges | EdgeRange edge_range, double target_length, PolygonMesh& pmesh | 拆分长度超过目标值的边,用于重网格化前预处理约束边 | PMP::split_long_edges(border_edges, target_edge_length, mesh) |
void | CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing | const TriangleMesh& input, TriangleMesh& output, const MeshingCriteria& criteria, const NamedParameters& np=parameters::default_values() | 基于 Delaunay 细化的表面重网格化,保证网格质量和拓扑正确性 | PMP::surface_Delaunay_remeshing(input, output, criteria) |
void | CGAL::Polygon_mesh_processing::approximated_centroidal_Voronoi_diagram_remeshing | TriangleMesh& mesh, std::size_t target_vertices, const NamedParameters& np=parameters::default_values() | 基于近似质心 Voronoi 图的重网格化,生成均匀或自适应的三角形网格 | PMP::approximated_centroidal_Voronoi_diagram_remeshing(mesh, 1000) |
void | CGAL::Polygon_mesh_processing::remesh_planar_patches | PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 自动检测网格中的平面区域并简化,减少三角形数量 | PMP::remesh_planar_patches(mesh) |
void | CGAL::Polygon_mesh_processing::remesh_almost_planar_patches | PolygonMesh& 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_t | CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces | FaceRange 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) |
void | CGAL::Polygon_mesh_processing::detect_corners_of_regions | const 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. 网格平滑
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::angle_and_area_smoothing | FaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 通过优化三角形的角度和面积来平滑网格,不插入新顶点 | PMP::angle_and_area_smoothing(faces(mesh), mesh, parameters::number_of_iterations(10)) |
void | CGAL::Polygon_mesh_processing::tangential_relaxation | FaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 在表面切平面内进行基于面积的拉普拉斯平滑,保持表面形状 | PMP::tangential_relaxation(faces(mesh), mesh) |
void | CGAL::Polygon_mesh_processing::smooth_shape | FaceRange face_range, PolygonMesh& pmesh, double time_step, const NamedParameters& np=parameters::default_values() | 基于平均曲率流的形状平滑,顶点沿法线方向移动,收敛到球面 | PMP::smooth_shape(faces(mesh), mesh, 0.05) |
5. 网格挤压
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::extrude_mesh | const 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. 共细化与布尔运算
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::corefine | TriangleMesh& tm1, TriangleMesh& tm2, const NamedParameters1& np1=parameters::default_values(), const NamedParameters2& np2=parameters::default_values() | 对两个三角形网格进行共细化,使它们的交线成为两者的边 | PMP::corefine(mesh1, mesh2) |
bool | CGAL::Polygon_mesh_processing::corefine_and_compute_union | const 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) |
bool | CGAL::Polygon_mesh_processing::corefine_and_compute_intersection | const 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) |
bool | CGAL::Polygon_mesh_processing::corefine_and_compute_difference | const 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) |
bool | CGAL::Polygon_mesh_processing::corefine_and_compute_boolean_operations | const 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. 网格裁剪
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::clip | const TriangleMesh& tm, const Clipper& clipper, TriangleMesh& out, const NamedParameters& np=parameters::default_values() | 用闭合网格或半空间裁剪三角形网格,支持表面和体积级裁剪 | PMP::clip(mesh, plane, out, parameters::clip_volume(true)) |
bool | CGAL::Polygon_mesh_processing::split | const 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. 孔洞填充
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
OutputIterator | CGAL::Polygon_mesh_processing::triangulate_hole_polyline | const 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_hole | PolygonMesh& 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_hole | PolygonMesh& 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_hole | PolygonMesh& pmesh, halfedge_descriptor border_halfedge, const NamedParameters& np=parameters::default_values() | 三角化、细化并光顺网格上的单个孔 | PMP::triangulate_refine_and_fair_hole(mesh, border_he) |
9. 相交检测
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::do_intersect | const Geometry1& g1, const Geometry2& g2, const NamedParameters& np=parameters::default_values() | 检测两个几何对象(网格、多段线等)是否相交 | PMP::do_intersect(mesh1, mesh2) |
OutputIterator | CGAL::Polygon_mesh_processing::intersecting_meshes | const MeshRange& meshes, OutputIterator out, const NamedParameters& np=parameters::default_values() | 记录网格范围内所有相交的网格对 | PMP::intersecting_meshes(meshes, back_inserter(intersecting_pairs)) |
bool | CGAL::Polygon_mesh_processing::does_self_intersect | const TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 检测三角形网格是否存在自相交 | PMP::does_self_intersect(mesh) |
OutputIterator | CGAL::Polygon_mesh_processing::self_intersections | FaceRange face_range, const TriangleMesh& tm, OutputIterator out, const NamedParameters& np=parameters::default_values() | 返回网格中所有自相交的三角形对 | PMP::self_intersections(faces(mesh), mesh, back_inserter(intersected_tris)) |
10. 形状谓词
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::is_degenerate_edge | edge_descriptor e, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 检测边是否退化(两个顶点几何位置相同) | PMP::is_degenerate_edge(e, mesh) |
bool | CGAL::Polygon_mesh_processing::is_degenerate_triangle_face | face_descriptor f, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 检测三角形面是否退化(三个顶点共线) | PMP::is_degenerate_triangle_face(f, mesh) |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_edges | EdgeRange edge_range, const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values() | 收集指定边范围内的所有退化边 | PMP::degenerate_edges(edges(mesh), mesh, back_inserter(degen_edges)) |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_faces | FaceRange face_range, const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values() | 收集指定面范围内的所有退化面 | PMP::degenerate_faces(faces(mesh), mesh, back_inserter(degen_faces)) |
bool | CGAL::Polygon_mesh_processing::is_cap_triangle_face | face_descriptor f, const PolygonMesh& pmesh, double threshold, const NamedParameters& np=parameters::default_values() | 检测三角形面是否为 "帽形"(一个角接近 180 度) | PMP::is_cap_triangle_face(f, mesh, 0.1) |
bool | CGAL::Polygon_mesh_processing::is_needle_triangle_face | face_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::locate | const 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_tree | const 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) |
bool | CGAL::Polygon_mesh_processing::is_on_face_border | const Point_2& bary, face_descriptor f, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 判断重心坐标表示的点是否在面的边界上 | PMP::is_on_face_border(bary, f, mesh) |
12. 多边形汤处理
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::orient_polygon_soup | PointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values() | 尝试一致地定向多边形汤中的面,必要时复制顶点 | PMP::orient_polygon_soup(points, polygons) |
void | CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh | const 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) |
void | CGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soup | const PolygonMesh& pmesh, PointRange& points, PolygonRange& polygons | 将多边形网格转换为多边形汤 | PMP::polygon_mesh_to_polygon_soup(mesh, points, polygons) |
13. 网格定向
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::orient | TriangleMesh& tm, bool outward=true, const NamedParameters& np=parameters::default_values() | 将闭合网格的每个连通分量定向为向外或向内 | PMP::orient(mesh, true) |
void | CGAL::Polygon_mesh_processing::orient_to_bound_a_volume | TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 定向闭合网格的连通分量,使其包围一个体积 | PMP::orient_to_bound_a_volume(mesh) |
bool | CGAL::Polygon_mesh_processing::is_outward_oriented | const TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 检查闭合网格是否向外定向(法线指向外部) | PMP::is_outward_oriented(mesh) |
void | CGAL::Polygon_mesh_processing::reverse_face_orientations | PolygonMesh& pmesh | 反转网格中所有面的方向,法线也随之反转 | PMP::reverse_face_orientations(mesh) |
std::size_t | CGAL::Polygon_mesh_processing::volume_connected_components | const TriangleMesh& tm, VolumeIdMap& vol_id_map, const NamedParameters& np=parameters::default_values() | 计算闭合网格定义的体积连通分量,返回体积数量 | PMP::volume_connected_components(mesh, vol_id_map) |
void | CGAL::Polygon_mesh_processing::duplicate_non_manifold_edges_in_polygon_soup | PointRange& points, PolygonRange& polygons | 复制多边形汤中的非流形边,使其可定向 | PMP::duplicate_non_manifold_edges_in_polygon_soup(points, polygons) |
void | CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_mesh | const 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_t | CGAL::Polygon_mesh_processing::merge_reversible_connected_components | PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 合并可反转的连通分量,返回剩余分量数 | PMP::merge_reversible_connected_components(mesh) |
14. 组合修复
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soup | PointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values() | 合并多边形汤中几何位置相同的点 | PMP::merge_duplicate_points_in_polygon_soup(points, polygons) |
void | CGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soup | PointRange& points, PolygonRange& polygons | 合并多边形汤中相同的多边形 | PMP::merge_duplicate_polygons_in_polygon_soup(points, polygons) |
void | CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup | PointRange& points, PolygonRange& polygons | 移除多边形汤中不被任何多边形引用的孤立点 | PMP::remove_isolated_points_in_polygon_soup(points, polygons) |
void | CGAL::Polygon_mesh_processing::repair_polygon_soup | PointRange& points, PolygonRange& polygons, const NamedParameters& np=parameters::default_values() | 综合修复多边形汤,包括合并重复点、移除孤立点等 | PMP::repair_polygon_soup(points, polygons) |
bool | CGAL::Polygon_mesh_processing::stitch_boundary_cycle | halfedge_descriptor border_halfedge, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 缝合单个边界环,合并重复的边和顶点 | PMP::stitch_boundary_cycle(border_he, mesh) |
std::size_t | CGAL::Polygon_mesh_processing::stitch_boundary_cycles | PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 缝合网格的所有边界环,返回缝合的环数 | PMP::stitch_boundary_cycles(mesh) |
std::size_t | CGAL::Polygon_mesh_processing::stitch_borders | PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 缝合网格的所有边界,包括不同边界环上的重复边 | PMP::stitch_borders(mesh) |
bool | CGAL::Polygon_mesh_processing::is_non_manifold_vertex | vertex_descriptor v, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 检测顶点是否为非流形顶点 | PMP::is_non_manifold_vertex(v, mesh) |
std::size_t | CGAL::Polygon_mesh_processing::duplicate_non_manifold_vertices | PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 复制非流形顶点,使网格成为组合流形,返回新增顶点数 | PMP::duplicate_non_manifold_vertices(mesh) |
std::size_t | CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycle | halfedge_descriptor border_halfedge, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 合并边界环中几何位置相同的顶点,返回合并的顶点数 | PMP::merge_duplicated_vertices_in_boundary_cycle(border_he, mesh) |
15. 几何修复
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
bool | CGAL::Polygon_mesh_processing::autorefine_triangle_soup | PointRange& points, PolygonRange& triangles, const NamedParameters& np=parameters::default_values() | 自动细化三角形汤以解决自相交问题 | PMP::autorefine_triangle_soup(points, triangles) |
std::size_t | CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces | FaceRange face_range, PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 移除网格中近似退化的三角形面,返回移除的面数 | PMP::remove_almost_degenerate_faces(faces(mesh), mesh) |
16. 法向量计算
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
Vector_3 | CGAL::Polygon_mesh_processing::compute_face_normal | face_descriptor f, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 计算单个面的法向量 | PMP::compute_face_normal(f, mesh) |
Vector_3 | CGAL::Polygon_mesh_processing::compute_vertex_normal | vertex_descriptor v, const PolygonMesh& pmesh, const NamedParameters& np=parameters::default_values() | 计算单个顶点的法向量(平均相邻面法向量) | PMP::compute_vertex_normal(v, mesh) |
void | CGAL::Polygon_mesh_processing::compute_face_normals | const PolygonMesh& pmesh, FaceNormalMap fnormals, const NamedParameters& np=parameters::default_values() | 计算所有面的法向量并存储到属性映射 | PMP::compute_face_normals(mesh, fnormals) |
void | CGAL::Polygon_mesh_processing::compute_vertex_normals | const PolygonMesh& pmesh, VertexNormalMap vnormals, const NamedParameters& np=parameters::default_values() | 计算所有顶点的法向量并存储到属性映射 | PMP::compute_vertex_normals(mesh, vnormals) |
void | CGAL::Polygon_mesh_processing::compute_normals | const PolygonMesh& pmesh, VertexNormalMap vnormals, FaceNormalMap fnormals, const NamedParameters& np=parameters::default_values() | 同时计算所有顶点和面的法向量 | PMP::compute_normals(mesh, vnormals, fnormals) |
17. 曲率计算
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
void | CGAL::Polygon_mesh_processing::interpolated_corrected_curvatures | const 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)) |
void | CGAL::Polygon_mesh_processing::interpolated_corrected_curvatures | vertex_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))) |
FT | CGAL::Polygon_mesh_processing::discrete_mean_curvature | vertex_descriptor v, const TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 计算单个顶点的离散平均曲率(基于 Meyer 等人的方法) | PMP::discrete_mean_curvature(v, mesh) |
void | CGAL::Polygon_mesh_processing::discrete_mean_curvatures | const TriangleMesh& tm, VertexCurvatureMap vcurvatures, const NamedParameters& np=parameters::default_values() | 计算所有顶点的离散平均曲率 | PMP::discrete_mean_curvatures(mesh, vcurv_map) |
FT | CGAL::Polygon_mesh_processing::discrete_Gaussian_curvature | vertex_descriptor v, const TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 计算单个顶点的离散高斯曲率(基于角度缺陷) | PMP::discrete_Gaussian_curvature(v, mesh) |
void | CGAL::Polygon_mesh_processing::discrete_Gaussian_curvatures | const TriangleMesh& tm, VertexCurvatureMap vcurvatures, const NamedParameters& np=parameters::default_values() | 计算所有顶点的离散高斯曲率 | PMP::discrete_Gaussian_curvatures(mesh, vcurv_map) |
18. 网格切片
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
CGAL::Polygon_mesh_slicer | CGAL::Polygon_mesh_slicer::Polygon_mesh_slicer | const TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 构造网格切片函子 | CGAL::Polygon_mesh_slicer<Mesh, K> slicer(mesh) |
CGAL::Polygon_mesh_slicer | CGAL::Polygon_mesh_slicer::Polygon_mesh_slicer | const TriangleMesh& tm, const AABB_tree& tree, const NamedParameters& np=parameters::default_values() | 使用预构建的 AABB 树构造网格切片函子 | CGAL::Polygon_mesh_slicer<Mesh, K> slicer(mesh, tree) |
OutputIterator | CGAL::Polygon_mesh_slicer::operator() | const Plane_3& plane, OutputIterator out | 计算网格与平面的交线,输出多段线 | slicer(plane, back_inserter(polylines)) |
19. 连通分量
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
OutputIterator | CGAL::Polygon_mesh_processing::connected_component | face_descriptor f, const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values() | 收集与指定面属于同一连通分量的所有面 | PMP::connected_component(f, mesh, back_inserter(cc_faces)) |
std::size_t | CGAL::Polygon_mesh_processing::connected_components | const PolygonMesh& pmesh, FaceComponentMap& fccmap, const NamedParameters& np=parameters::default_values() | 计算网格的所有连通分量,返回分量数 | PMP::connected_components(mesh, fccmap) |
void | CGAL::Polygon_mesh_processing::keep_connected_components | PolygonMesh& pmesh, const ComponentIdRange& component_ids, const FaceComponentMap& fccmap, const NamedParameters& np=parameters::default_values() | 保留网格中指定 ID 的连通分量 | PMP::keep_connected_components(mesh, {0,1}, fccmap) |
void | CGAL::Polygon_mesh_processing::remove_connected_components | PolygonMesh& pmesh, const ComponentIdRange& component_ids, const FaceComponentMap& fccmap, const NamedParameters& np=parameters::default_values() | 移除网格中指定 ID 的连通分量 | PMP::remove_connected_components(mesh, {2}, fccmap) |
void | CGAL::Polygon_mesh_processing::keep_largest_connected_components | PolygonMesh& pmesh, std::size_t n, const NamedParameters& np=parameters::default_values() | 保留网格中最大的 n 个连通分量 | PMP::keep_largest_connected_components(mesh, 1) |
void | CGAL::Polygon_mesh_processing::keep_large_connected_components | PolygonMesh& pmesh, FT threshold, const NamedParameters& np=parameters::default_values() | 保留网格中大小超过阈值的连通分量 | PMP::keep_large_connected_components(mesh, 100) |
OutputIterator | CGAL::Polygon_mesh_processing::split_connected_components | const PolygonMesh& pmesh, OutputIterator out, const NamedParameters& np=parameters::default_values() | 将网格的每个连通分量分割为独立的网格 | PMP::split_connected_components(mesh, back_inserter(meshes)) |
20. Hausdorff 距离计算
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
FT | CGAL::Polygon_mesh_processing::approximate_Hausdorff_distance | const 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)) |
FT | CGAL::Polygon_mesh_processing::approximate_symmetric_Hausdorff_distance | const 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) |
FT | CGAL::Polygon_mesh_processing::approximate_max_distance_to_point_set | const TriangleMesh& tm, const PointRange& points, double precision, const NamedParameters& np=parameters::default_values() | 计算网格到点集的近似最大距离 | PMP::approximate_max_distance_to_point_set(mesh, points, 4000) |
FT | CGAL::Polygon_mesh_processing::bounded_error_Hausdorff_distance | const 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) |
FT | CGAL::Polygon_mesh_processing::bounded_error_symmetric_Hausdorff_distance | const 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) |
bool | CGAL::Polygon_mesh_processing::is_Hausdorff_distance_larger | const 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_t | CGAL::Polygon_mesh_processing::sharp_edges_segmentation | PolygonMesh& pmesh, FT angle_threshold, EdgeFeatureMap& eif, FacePatchIdMap& pid, const NamedParameters& np=parameters::default_values() | 检测网格的尖锐边并分割为表面面片,返回面片数量 | PMP::sharp_edges_segmentation(mesh, 90, eif, pid) |
std::size_t | CGAL::Polygon_mesh_processing::detect_sharp_edges | PolygonMesh& pmesh, FT angle_threshold, EdgeFeatureMap& eif, const NamedParameters& np=parameters::default_values() | 检测网格的尖锐边(二面角小于阈值),返回尖锐边数量 | PMP::detect_sharp_edges(mesh, 90, eif) |
void | CGAL::Polygon_mesh_processing::detect_vertex_incident_patches | const 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_mesh | CGAL::Side_of_triangle_mesh::Side_of_triangle_mesh | const TriangleMesh& tm, const NamedParameters& np=parameters::default_values() | 构造点位置测试函子 | CGAL::Side_of_triangle_mesh<Mesh, K> inside(mesh) |
CGAL::Bounded_side | CGAL::Side_of_triangle_mesh::operator() | const Point_3& p | 测试点是否在网格包围的体积内部、外部或边界上 | CGAL::Bounded_side res = inside(point) |
23. 多面体包络测试
| 返回值类型 | 函数名 | 参数 | 作用 | 用法 |
|---|---|---|---|---|
CGAL::Polyhedral_envelope | CGAL::Polyhedral_envelope::Polyhedral_envelope | const TriangleMesh& tm, FT epsilon, const NamedParameters& np=parameters::default_values() | 构造多面体包络测试函子 | CGAL::Polyhedral_envelope<Kernel> envelope(mesh, 0.2) |
bool | CGAL::Polyhedral_envelope::operator() | const Point_3& p | 测试点是否在多面体包络内 | envelope(point) |
bool | CGAL::Polyhedral_envelope::operator() | const Point_3& p1, const Point_3& p2, const Point_3& p3 | 测试三角形是否完全在多面体包络内 | envelope(p1, p2, p3) |
bool | CGAL::Polyhedral_envelope::operator() | const TriangleMesh& query | 测试查询网格是否完全在多面体包络内 | envelope(query_mesh) |

被折叠的 条评论
为什么被折叠?



