/// \defgroup PkgPolygonMeshProcessingRef Reference Manual
/// \defgroup PkgPolygonMeshProcessingConcepts Concepts
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_predicates_grp Predicates
/// Classes and functions that answer queries about a polygon mesh or its elements.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_keep_connected_components_grp Connected Components
/// Two faces are in the same <em>connected component</em> if there is a path
/// of adjacent faces such that all edges between two consecutive faces of the
/// path are not marked as constrained.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_locate_grp Location Functions
/// Functions to locate points on a mesh, and manipulate such locations.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_measure_grp Geometric Measure Functions
/// Functions to compute discrete curvatures, lengths of edges and borders, areas of faces and patches, volumes of closed meshes.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_normal_grp Normal Computation
/// Functions to compute unit normals for individual/all vertices or faces.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_corrected_curvatures_grp Corrected Curvature Computation
/// Functions to compute the corrected curvatures of a polygon mesh.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_detect_features_grp Feature Detection Functions
/// Functions to detect sharp edges and surface patches of polygon meshes.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_distance_grp Distance Functions
/// Functions to compute the distance between meshes, between a mesh and a point set and between a point set and a mesh.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_intersection_grp Intersection Functions
/// Functions to test if there are self intersections, and to report faces that do intersect.
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMP_misc_grp Miscellaneous Functions
/// \ingroup PkgPolygonMeshProcessingRef

/// \defgroup PMPDeprecated Deprecated Functions
/// \ingroup PkgPolygonMeshProcessingRef

/*!
\addtogroup PkgPolygonMeshProcessingRef

\cgalPkgDescriptionBegin{Polygon Mesh Processing, PkgPolygonMeshProcessing}
\cgalPkgPicture{pmp_icon.png}

\cgalPkgSummaryBegin
\cgalPkgAuthors{David Coeurjolly, Jacques-Olivier Lachaud,  Konstantinos Katrioplas, Sébastien Loriot, Ivan Pađen, Mael Rouxel-Labbé, Hossam Saeed, Jane Tournois, Sébastien Valette, and Ilker %O. Yaz}
\cgalPkgDesc{This package provides a collection of methods and classes for polygon mesh processing,
ranging from basic operations on simplices such as the computation of an edge length,
to complex geometry processing algorithms such as collision and intersection detection,
computation of distances between meshes, and more.}
\cgalPkgManuals{Chapter_PolygonMeshProcessing,PkgPolygonMeshProcessingRef}
\cgalPkgSummaryEnd

\cgalPkgShortInfoBegin
\cgalPkgSince{4.7}
\cgalPkgDependsOn{documented for each function}
\cgalPkgBib{cgal:lty-pmp}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{CGAL Lab,CGALlab.zip}
\cgalPkgShortInfoEnd

\cgalPkgDescriptionEnd

\cgalClassifedRefPages

\cgalCRPSection{Parameters}

Optional parameters of the functions of this package are implemented as \ref BGLNamedParameters.
The page \ref bgl_namedparameters "Named Parameters" describes their usage.

\cgalCRPSection{Corefinement and Boolean Operation Functions}
- see Chapter \link PkgPMPBooleanOperationsRef Boolean Operations On Polygonal Meshes\endlink

\cgalCRPSection{Meshing Functions}
- see Chapter \link PkgPMPRemeshingRef Remeshing of Polygonal Meshes\endlink

\cgalCRPSection{Combinatorial and Geometric Repair Functions}
- see Chapter \link PkgPMPMeshRepairRef Polygonal Mesh Repair\endlink

\cgalCRPSection{Polygon Soup Orientation Functions}
- see Chapter \link PkgPMPMeshRepairRef Polygonal Mesh Repair\endlink

\cgalCRPSection{Predicate Functions}
- `CGAL::Polygon_mesh_processing::is_degenerate_edge()`
- `CGAL::Polygon_mesh_processing::degenerate_edges()`
- `CGAL::Polygon_mesh_processing::is_degenerate_triangle_face()`
- `CGAL::Polygon_mesh_processing::degenerate_faces()`
- `CGAL::Polygon_mesh_processing::is_needle_triangle_face()`
- `CGAL::Polygon_mesh_processing::is_cap_triangle_face()`
- `CGAL::Polyhedral_envelope`
- `CGAL::Side_of_triangle_mesh`

\cgalCRPSection{Connected Components}
- `CGAL::Polygon_mesh_processing::connected_component()`
- `CGAL::Polygon_mesh_processing::connected_components()`
- `CGAL::Polygon_mesh_processing::keep_large_connected_components()`
- `CGAL::Polygon_mesh_processing::keep_largest_connected_components()`
- `CGAL::Polygon_mesh_processing::split_connected_components()`
- \link PMP_keep_connected_components_grp `CGAL::Polygon_mesh_processing::keep_connected_components()` \endlink
- \link PMP_keep_connected_components_grp `CGAL::Polygon_mesh_processing::remove_connected_components()` \endlink
- `CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size()`

\cgalCRPSection{Location Functions}
- \link PMP_locate_grp Point Location \endlink
- \link PMP_locate_grp Location Predicates \endlink
- \link PMP_locate_grp Nearest Face Location Queries \endlink
- \link PMP_locate_grp Random Location Generation \endlink

\cgalCRPSection{Elementary Geometric Functions}
- `CGAL::Polygon_mesh_processing::angle_sum()`
- `CGAL::Polygon_mesh_processing::edge_length()`
- `CGAL::Polygon_mesh_processing::squared_edge_length()`
- `CGAL::Polygon_mesh_processing::face_area()`
- `CGAL::Polygon_mesh_processing::squared_face_area()`
- `CGAL::Polygon_mesh_processing::area()`
- `CGAL::Polygon_mesh_processing::volume()`
- `CGAL::Polygon_mesh_processing::face_border_length()`
- `CGAL::Polygon_mesh_processing::longest_border()`
- `CGAL::Polygon_mesh_processing::centroid()`
- `CGAL::Polygon_mesh_processing::bbox()`
- `CGAL::Polygon_mesh_processing::vertex_bbox()`
- `CGAL::Polygon_mesh_processing::edge_bbox()`
- `CGAL::Polygon_mesh_processing::face_bbox()`
- `CGAL::Polygon_mesh_processing::triangle()`
- `CGAL::Polygon_mesh_processing::transform()`

\cgalCRPSection{Normal Computation Functions}
- `CGAL::Polygon_mesh_processing::compute_face_normal()`
- `CGAL::Polygon_mesh_processing::compute_face_normals()`
- `CGAL::Polygon_mesh_processing::compute_vertex_normal()`
- `CGAL::Polygon_mesh_processing::compute_vertex_normals()`
- `CGAL::Polygon_mesh_processing::compute_normals()`

\cgalCRPSection{Curvature Computation Functions}
- `CGAL::Polygon_mesh_processing::discrete_Gaussian_curvatures()`
- `CGAL::Polygon_mesh_processing::discrete_Gaussian_curvature()`
- `CGAL::Polygon_mesh_processing::discrete_mean_curvature()`
- `CGAL::Polygon_mesh_processing::discrete_mean_curvatures()`
- `CGAL::Polygon_mesh_processing::interpolated_corrected_curvatures()`
- `CGAL::Polygon_mesh_processing::Principal_curvatures_and_directions`

\cgalCRPSection{Feature Detection Functions}
- `CGAL::Polygon_mesh_processing::sharp_edges_segmentation()`
- `CGAL::Polygon_mesh_processing::detect_sharp_edges()`
- `CGAL::Polygon_mesh_processing::detect_vertex_incident_patches()`
- `CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces()`
- `CGAL::Polygon_mesh_processing::detect_corners_of_regions()`

\cgalCRPSection{Distance Functions}
- `CGAL::Polygon_mesh_processing::bounded_error_Hausdorff_distance()`
- `CGAL::Polygon_mesh_processing::bounded_error_symmetric_Hausdorff_distance()`
- `CGAL::Polygon_mesh_processing::is_Hausdorff_distance_larger()`
- `CGAL::Polygon_mesh_processing::approximate_Hausdorff_distance()`
- `CGAL::Polygon_mesh_processing::approximate_symmetric_Hausdorff_distance()`
- `CGAL::Polygon_mesh_processing::approximate_max_distance_to_point_set()`
- `CGAL::Polygon_mesh_processing::max_distance_to_triangle_mesh()`
- `CGAL::Polygon_mesh_processing::sample_triangle_soup()`
- `CGAL::Polygon_mesh_processing::sample_triangle_mesh()`

\cgalCRPSection{Intersection and Collision Detection}
- `CGAL::Polygon_mesh_processing::does_self_intersect()`
- `CGAL::Polygon_mesh_processing::self_intersections()`
- `CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect()`
- `CGAL::Polygon_mesh_processing::triangle_soup_self_intersections()`
- \link PMP_intersection_grp `CGAL::Polygon_mesh_processing::do_intersect()` \endlink
- `CGAL::Polygon_mesh_processing::intersecting_meshes()`
- `CGAL::Rigid_triangle_mesh_collision_detection`

\cgalCRPSection{Miscellaneous}
- `CGAL::Polygon_mesh_processing::border_halfedges()` (deprecated)
- `CGAL::Polygon_mesh_processing::extract_boundary_cycles()` (deprecated)

\cgalCRPSection{I/O Functions}
- \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()`\endlink

*/
