Update PMP NPs to new macros

This commit is contained in:
Mael Rouxel-Labbé 2020-03-29 17:16:50 +02:00
parent 497f703077
commit e7d52999a8
68 changed files with 2580 additions and 1330 deletions

View File

@ -117,7 +117,7 @@ struct Face_filtered_graph
* \param face_patch_index_map the property_map that assigns a patch index to each face, with * \param face_patch_index_map the property_map that assigns a patch index to each face, with
`face_descriptor` as key type and `boost::graph_traits<Graph>::%faces_size_type` as value type. `face_descriptor` as key type and `boost::graph_traits<Graph>::%faces_size_type` as value type.
* \param selected_face_patch_indices a range of the face patch indices to select. * \param selected_face_patch_indices a range of the face patch indices to select.
* \param np optional sequence of named parameters among the ones listed below * \param np an optional sequence of named parameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{face_index_map} * \cgalParamBegin{face_index_map}
@ -177,7 +177,7 @@ struct Face_filtered_graph
`face_descriptor` as key type and `face_descriptor` as key type and
`graph_traits<Graph>::%faces_size_type` as value type. `graph_traits<Graph>::%faces_size_type` as value type.
* \param selected_face_patch_index the index of the face patch selected. * \param selected_face_patch_index the index of the face patch selected.
* \param np optional sequence of named parameters among the ones listed below * \param np an optional sequence of named parameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{face_index_map} * \cgalParamBegin{face_index_map}
@ -223,7 +223,7 @@ struct Face_filtered_graph
* \tparam NamedParameters a sequence of named parameters * \tparam NamedParameters a sequence of named parameters
* \param graph the graph containing the wanted patch. * \param graph the graph containing the wanted patch.
* \param selected_faces the set of selected faces. * \param selected_faces the set of selected faces.
* \param np optional sequence of named parameters among the ones listed below * \param np an optional sequence of named parameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{face_index_map} * \cgalParamBegin{face_index_map}

View File

@ -135,7 +135,7 @@ void partition_dual_graph(const TriangleMesh& tm, int nparts,
/// ///
/// \param tm a triangle mesh /// \param tm a triangle mesh
/// \param nparts the number of parts in the final partition /// \param nparts the number of parts in the final partition
/// \param np optional \ref bgl_namedparameters "Named Parameters" described below /// \param np an optional \ref bgl_namedparameters "Named Parameters" described below
/// ///
/// \tparam TriangleMesh is a model of the `FaceListGraph` concept. /// \tparam TriangleMesh is a model of the `FaceListGraph` concept.
/// \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" /// \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters"

View File

@ -167,7 +167,7 @@ void partition_graph(const TriangleMesh& tm, int nparts,
/// ///
/// \param tm a triangle mesh /// \param tm a triangle mesh
/// \param nparts the number of parts in the final partition /// \param nparts the number of parts in the final partition
/// \param np optional \ref bgl_namedparameters "Named Parameters" described below /// \param np an optional \ref bgl_namedparameters "Named Parameters" described below
/// ///
/// \tparam TriangleMesh is a model of the `FaceListGraph` concept. /// \tparam TriangleMesh is a model of the `FaceListGraph` concept.
/// \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" /// \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters"

View File

@ -260,7 +260,7 @@ inline Emptyset_iterator make_functor(const internal_np::Param_not_found&)
\param sm the source mesh \param sm the source mesh
\param tm the target mesh \param tm the target mesh
\param np1 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below \param np1 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} \cgalParamBegin{vertex_point_map}
@ -291,7 +291,7 @@ inline Emptyset_iterator make_functor(const internal_np::Param_not_found&)
\cgalParamEnd \cgalParamEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
\param np2 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below \param np2 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} \cgalParamBegin{vertex_point_map}

View File

@ -618,7 +618,7 @@ write_polys_points(std::ostream& os,
* *
* \param os the stream used for writing. * \param os the stream used for writing.
* \param mesh the triangle mesh to be written. * \param mesh the triangle mesh to be written.
* \param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the * \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the
* ones listed below * ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin

View File

@ -49,7 +49,7 @@ void convex_hull_3(InputIterator first, InputIterator last, PolygonMesh& pm, con
* *
* \param g the graph * \param g the graph
* \param pm the `PolygonMesh` that will contain the convex hull * \param pm the `PolygonMesh` that will contain the convex hull
* \param np optional sequence of named parameters among the ones listed below * \param np an optional sequence of named parameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `g`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `g`.

View File

@ -428,7 +428,7 @@ bool read_las_points_with_properties (std::istream& stream,
\param stream input stream. \param stream input stream.
\param output output iterator over points. \param output output iterator over points.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -45,7 +45,7 @@ namespace CGAL {
\param stream input stream. \param stream input stream.
\param output output iterator over points. \param output output iterator over points.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -201,7 +201,7 @@ bool read_ply_points_with_properties (std::istream& stream,
\param stream input stream. \param stream input stream.
\param output output iterator over points. \param output output iterator over points.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -44,7 +44,7 @@ namespace CGAL {
\param stream input stream. \param stream input stream.
\param output output iterator over points. \param output output iterator over points.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -254,7 +254,7 @@ bool write_las_points_with_properties (std::ostream& stream, ///< output stream
\param stream output stream. \param stream output stream.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -40,7 +40,7 @@ namespace CGAL {
\param stream output stream. \param stream output stream.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -159,7 +159,7 @@ write_ply_points_with_properties(
\param stream output stream. \param stream output stream.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -40,7 +40,7 @@ namespace CGAL {
\param stream output stream. \param stream output stream.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -169,7 +169,7 @@ compute_registration_transformation(const PointRange1& range1, const PointRan
\param point_set_1 input point range used as reference. \param point_set_1 input point range used as reference.
\param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed. \param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed.
\param np1 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np1 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type
@ -237,7 +237,7 @@ compute_registration_transformation(const PointRange1& range1, const PointRan
model of `Kernel`\cgalParamEnd model of `Kernel`\cgalParamEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
\param np2 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np2 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type

View File

@ -90,7 +90,7 @@ register_point_sets(const PointRange1& range1, PointRange2& range2,
\param point_set_1 input point range used as reference. \param point_set_1 input point range used as reference.
\param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed. \param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed.
\param np1 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np1 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type
@ -158,7 +158,7 @@ register_point_sets(const PointRange1& range1, PointRange2& range2,
model of `Kernel`\cgalParamEnd model of `Kernel`\cgalParamEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
\param np2 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np2 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type

View File

@ -359,7 +359,7 @@ public:
\param points input point range. \param points input point range.
\param k size of the neighborhood for the implicit surface patch fitting. \param k size of the neighborhood for the implicit surface patch fitting.
The larger the value is, the smoother the result will be. The larger the value is, the smoother the result will be.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -157,7 +157,7 @@ compute_average_spacing(const typename Kernel::Point_3& query, ///< 3D point who
\param points input point range. \param points input point range.
\param k number of neighbors. \param k number of neighbors.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -293,7 +293,7 @@ update_new_point(
\param points input point range. \param points input point range.
\param output iterator where output points and normals are put. \param output iterator where output points and normals are put.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -452,7 +452,7 @@ public:
\param points input point range. \param points input point range.
\param queries range of locations where scale must be estimated \param queries range of locations where scale must be estimated
\param output iterator to store the computed scales \param output iterator to store the computed scales
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with
@ -539,7 +539,7 @@ estimate_local_k_neighbor_scales(
its iterator is the key type of the named parameter `point_map`. its iterator is the key type of the named parameter `point_map`.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with
@ -605,7 +605,7 @@ estimate_global_k_neighbor_scale(const PointRange& points)
\param points input point range. \param points input point range.
\param queries range of locations where scale must be estimated \param queries range of locations where scale must be estimated
\param output iterator to store the computed scales \param output iterator to store the computed scales
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with
@ -692,7 +692,7 @@ estimate_local_range_scales(
its iterator is the key type of the named parameter `point_map`. its iterator is the key type of the named parameter `point_map`.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with

View File

@ -175,7 +175,7 @@ public:
\param points input point range. \param points input point range.
\param epsilon tolerance value when merging 3D points. \param epsilon tolerance value when merging 3D points.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -123,7 +123,7 @@ namespace CGAL {
its iterator is the key type of the named parameter `point_map`. its iterator is the key type of the named parameter `point_map`.
\param points input point range. \param points input point range.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -159,7 +159,7 @@ jet_estimate_normal(const typename Kernel::Point_3& query, ///< point to compute
\param points input point range. \param points input point range.
\param k number of neighbors \param k number of neighbors
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -163,7 +163,7 @@ jet_smooth_point(
\param points input point range. \param points input point range.
\param k number of neighbors \param k number of neighbors
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -573,7 +573,7 @@ create_mst_graph(
\param points input point range. \param points input point range.
\param k number of neighbors. \param k number of neighbors.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -149,7 +149,7 @@ pca_estimate_normal(const typename Kernel::Point_3& query, ///< point to compute
\param points input point range. \param points input point range.
\param k number of neighbors \param k number of neighbors
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalParamBegin{point_map} a model of \cgalNamedParamsBegin \cgalParamBegin{point_map} a model of
`ReadablePropertyMap` with value type `geom_traits::Point_3`. If `ReadablePropertyMap` with value type `geom_traits::Point_3`. If

View File

@ -366,7 +366,7 @@ compute_registration_transformation(const PointRange1& range1, const PointRange2
the key type of the named parameter `point_map` in `NamedParameters2`. the key type of the named parameter `point_map` in `NamedParameters2`.
\param point_set_1 input point range used as reference. \param point_set_1 input point range used as reference.
\param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed. \param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed.
\param np1 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np1 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type
is the value type of the iterator of `PointRange1` and whose value type is is the value type of the iterator of `PointRange1` and whose value type is
@ -497,7 +497,7 @@ compute_registration_transformation(const PointRange1& range1, const PointRange2
\cgalNamedParamsEnd \cgalNamedParamsEnd
\param np2 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np2 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type
is the value type of the iterator of `PointRange2` and whose value type is is the value type of the iterator of `PointRange2` and whose value type is

View File

@ -49,7 +49,7 @@ namespace pointmatcher {
\param point_set_1 input point range used as reference. \param point_set_1 input point range used as reference.
\param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed. \param point_set_2 input point range whose registration w.r.t. `point_set_1` will be computed.
\param np1 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np1 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type
@ -179,7 +179,7 @@ namespace pointmatcher {
model of `Kernel`\cgalParamEnd model of `Kernel`\cgalParamEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
\param np2 optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np2 an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type \cgalParamBegin{point_map} a model of `ReadablePropertyMap` whose key type
is the value type of the iterator of `PointRange2` and whose value type is is the value type of the iterator of `PointRange2` and whose value type is

View File

@ -100,7 +100,7 @@ compute_avg_knn_sq_distance_3(
\param points input point range. \param points input point range.
\param k number of neighbors \param k number of neighbors
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -164,7 +164,7 @@ public:
\param points input point range. \param points input point range.
\param planes input plane range. \param planes input plane range.
\param epsilon size parameter. \param epsilon size parameter.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `Kernel::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `Kernel::Point_3`.
@ -1491,7 +1491,7 @@ private:
\param planes input plane range. \param planes input plane range.
\param output output iterator where output points are written \param output output iterator where output points are written
\param epsilon size parameter. \param epsilon size parameter.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -235,7 +235,7 @@ vcm_convolve (ForwardIterator first,
\param ccov output range of covariance matrices. \param ccov output range of covariance matrices.
\param offset_radius offset_radius. \param offset_radius offset_radius.
\param convolution_radius convolution_radius. \param convolution_radius convolution_radius.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.
@ -398,7 +398,7 @@ vcm_estimate_normals_internal (PointRange& points,
\param points input point range. \param points input point range.
\param offset_radius offset_radius. \param offset_radius offset_radius.
\param convolution_radius convolution_radius. \param convolution_radius convolution_radius.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.
@ -457,7 +457,7 @@ vcm_estimate_normals (PointRange& points,
\param points input point range. \param points input point range.
\param offset_radius offset_radius. \param offset_radius offset_radius.
\param k number of neighbor points used for convolution. \param k number of neighbor points used for convolution.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadablePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -420,7 +420,7 @@ public:
\param points input point range. \param points input point range.
\param output iterator where output points are put. \param output iterator where output points are put.
\param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \param np an optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below.
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`. \cgalParamBegin{point_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Point_3`.

View File

@ -46,18 +46,24 @@ namespace CGAL {
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, * as key type and `%Point_3` as value type}
* providing the functor `Construct_bbox_3` and the function * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* `Construct_bbox_3 construct_bbox_3_object()`. `Construct_bbox_3` * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must provide `BBox_3 operator()(Point_3)` where `Point_3` is the value type * must be available in `PolygonMesh`.}
* of the vertex point map. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class providing the functor `Construct_bbox_3`
* and the function `Construct_bbox_3 construct_bbox_3_object()`.
* `Construct_bbox_3` must provide `Bbox_3 operator()(Point_3)`
* where `%Point_3` is the value type of the vertex point map.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return a bounding box of `pmesh` * @return a bounding box of `pmesh`
@ -96,18 +102,24 @@ namespace CGAL {
* *
* @param vd a descriptor of a vertex in `pmesh` * @param vd a descriptor of a vertex in `pmesh`
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, * as key type and `%Point_3` as value type}
* providing the functor `Construct_bbox_3` and the function * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* `Construct_bbox_3 construct_bbox_3_object()`. `Construct_bbox_3` * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must provide `BBox_3 operator()(Point_3)` where `Point_3` is the value type * must be available in `PolygonMesh`.}
* of the vertex point map. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class providing the functor `Construct_bbox_3`
* and the function `Construct_bbox_3 construct_bbox_3_object()`.
* `Construct_bbox_3` must provide `Bbox_3 operator()(Point_3)`
* where `%Point_3` is the value type of the vertex point map.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return a bounding box of `pmesh` * @return a bounding box of `pmesh`
@ -139,18 +151,24 @@ namespace CGAL {
* *
* @param ed a descriptor of an edge in `pmesh` * @param ed a descriptor of an edge in `pmesh`
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, * as key type and `%Point_3` as value type}
* providing the functor `Construct_bbox_3` and the function * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* `Construct_bbox_3 construct_bbox_3_object()`. `Construct_bbox_3` * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must provide `BBox_3 operator()(Point_3)` where `Point_3` is the value type * must be available in `PolygonMesh`.}
* of the vertex point map. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class providing the functor `Construct_bbox_3`
* and the function `Construct_bbox_3 construct_bbox_3_object()`.
* `Construct_bbox_3` must provide `Bbox_3 operator()(Point_3)`
* where `%Point_3` is the value type of the vertex point map.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return a bounding box of `pmesh` * @return a bounding box of `pmesh`
@ -184,18 +202,25 @@ namespace CGAL {
* *
* @param fd a descriptor of a face in `pmesh` * @param fd a descriptor of a face in `pmesh`
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, * as key type and `%Point_3` as value type}
* providing the functor `Construct_bbox_3` and the function * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* `Construct_bbox_3 construct_bbox_3_object()`. `Construct_bbox_3` * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must provide `BBox_3 operator()(Point_3)` where `Point_3` is the value type * must be available in `PolygonMesh`.}
* of the vertex point map. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class providing the functor `Construct_bbox_3`
* and the function `Construct_bbox_3 construct_bbox_3_object()`.
* `Construct_bbox_3` must provide `Bbox_3 operator()(Point_3)`
* where `%Point_3` is the value type of the vertex point map.}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return a bounding box of `pmesh` * @return a bounding box of `pmesh`

View File

@ -161,11 +161,16 @@ std::size_t border_size(typename boost::graph_traits<PolygonMesh>::halfedge_desc
* are collected * are collected
* @param out the output iterator that collects the border halfedges of the patch, * @param out the output iterator that collects the border halfedges of the patch,
* seen from outside. * seen from outside.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
\cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamNBegin{face_index_map}
\cgalNamedParamsEnd * \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd
* *
* @returns `out` * @returns `out`
*/ */

View File

@ -428,16 +428,20 @@ void split_along_edges(TriangleMesh& tm,
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* \cgalParamDescription{a property map associating points to the vertices of `tm` (resp. `clipper`)} * \cgalParamDescription{a property map associating points to the vertices of `tm` (resp. `clipper`)}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm (resp. clipper))`} * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm (resp. clipper))`}
* \cgalParamExtra{if this parameter is omitted an internal property map for `CGAL::vertex_point_t` must be available in `TriangleMesh`} * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `TriangleMesh`.}
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{face_index_map} * \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `tm` (`clipper`) a unique index between `0` and `num_faces(tm (resp. clipper)) - 1`} * \cgalParamDescription{a property map associating to each face of `tm` (`clipper`) a unique index between `0` and `num_faces(tm (resp. clipper)) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor` as key type and `std::size_t` as value type} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map} * \cgalParamDefault{an automatically indexed internal map}
* \cgalParamExtra{if the property map is writable, the indices of the faces of `tm` and `clipper` will be set after refining `tm` with the intersection with `clipper`} * \cgalParamExtra{if the property map is writable, the indices of the faces of `tm` and `clipper`
* will be set after refining `tm` with the intersection with `clipper`}
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{visitor} * \cgalParamNBegin{visitor}
@ -447,17 +451,17 @@ void split_along_edges(TriangleMesh& tm,
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{throw_on_self_intersection} * \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true` the set of triangles closed to the intersection of `tm` and `clipper` will be * \cgalParamDescription{If `true`, the set of triangles closed to the intersection of `tm` and `clipper` will be
* checked for self-intersections and `Corefinement::Self_intersection_exception` * checked for self-intersections and `Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found} * will be thrown if at least one self-intersection is found.}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{clip_volume} * \cgalParamNBegin{clip_volume}
* \cgalParamDescription{if `true` and `tm` is closed, the clipping will be done on the volume * \cgalParamDescription{If `true`, and `tm` is closed, the clipping will be done on the volume
* \link coref_def_subsec bounded \endlink by `tm` rather than on its surface * \link coref_def_subsec bounded \endlink by `tm` rather than on its surface
* (i.e., `tm` will be kept closed)} * (i.e., `tm` will be kept closed).}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
@ -512,12 +516,13 @@ clip(TriangleMesh& tm,
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param plane plane whose negative side defines the half-space to intersect `tm` with. * @param plane plane whose negative side defines the half-space to intersect `tm` with.
* `Plane_3` is the plane type for the same CGAL kernel as the point of the vertex point map of `tm`. * `Plane_3` is the plane type for the same CGAL kernel as the point of the vertex point map of `tm`.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* \cgalParamDescription{a property map associating points to the vertices of `tm`} * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`} * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamNEnd * \cgalParamNEnd
* *
@ -528,18 +533,18 @@ clip(TriangleMesh& tm,
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{throw_on_self_intersection} * \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true`, the set of triangles closed to the intersection of `tm` * \cgalParamDescription{If `true`, the set of triangles closed to the intersection of `tm`
* and `plane` will be checked for self-intersections * and `plane` will be checked for self-intersections
* and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found} * will be thrown if at least one self-intersection is found.}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{clip_volume} * \cgalParamNBegin{clip_volume}
* \cgalParamDescription{if `true` and `tm` is closed, the clipping will be done on * \cgalParamDescription{If `true`, and `tm` is closed, the clipping will be done on
* the volume \link coref_def_subsec bounded \endlink by `tm` * the volume \link coref_def_subsec bounded \endlink by `tm`
* rather than on its surface (i.e., `tm` will be kept closed)} * rather than on its surface (i.e., `tm` will be kept closed).}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
@ -612,10 +617,11 @@ bool clip(TriangleMesh& tm,
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* \cgalParamDescription{a property map associating points to the vertices of `tm` (`splitter`)} * \cgalParamDescription{a property map associating points to the vertices of `tm` (`splitter`)}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`} * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamDefault{If this parameter is omitted, an internal property map for * \cgalParamDefault{If this parameter is omitted, an internal property map for
* `CGAL::vertex_point_t` must be available in `TriangleMesh`} * `CGAL::vertex_point_t` must be available in `TriangleMesh`.}
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{visitor} * \cgalParamNBegin{visitor}
@ -625,10 +631,10 @@ bool clip(TriangleMesh& tm,
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{throw_on_self_intersection} * \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true`, the set of triangles closed to the intersection of `tm` * \cgalParamDescription{If `true`, the set of triangles closed to the intersection of `tm`
* and `splitter` will be checked for self-intersections * and `splitter` will be checked for self-intersections
* and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found} * will be thrown if at least one self-intersection is found.}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
@ -687,12 +693,13 @@ void split(TriangleMesh& tm,
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param plane the plane that will be used to split `tm`. * @param plane the plane that will be used to split `tm`.
* `Plane_3` is the plane type for the same CGAL kernel as the point of the vertex point map of `tm`. * `Plane_3` is the plane type for the same CGAL kernel as the point of the vertex point map of `tm`.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* \cgalParamDescription{a property map associating points to the vertices of `tm`} * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`} * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamNEnd * \cgalParamNEnd
* *
@ -703,10 +710,10 @@ void split(TriangleMesh& tm,
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{throw_on_self_intersection} * \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true`, the set of triangles closed to the intersection of `tm` * \cgalParamDescription{If `true`, the set of triangles closed to the intersection of `tm`
* and `plane` will be checked for self-intersections * and `plane` will be checked for self-intersections
* and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found} * will be thrown if at least one self-intersection is found.}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
@ -763,12 +770,13 @@ void split(TriangleMesh& tm,
* *
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param iso_cuboid iso-cuboid used to clip `tm`. * @param iso_cuboid iso-cuboid used to clip `tm`.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* \cgalParamDescription{a property map associating points to the vertices of `tm`} * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`} * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamNEnd * \cgalParamNEnd
* *
@ -779,18 +787,18 @@ void split(TriangleMesh& tm,
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{throw_on_self_intersection} * \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true`, the set of triangles closed to the intersection of `tm` * \cgalParamDescription{If `true`, the set of triangles closed to the intersection of `tm`
* and `iso_cuboid` will be checked for self-intersections * and `iso_cuboid` will be checked for self-intersections
* and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found} * will be thrown if at least one self-intersection is found.}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{clip_volume} * \cgalParamNBegin{clip_volume}
* \cgalParamDescription{if `true` and `tm` is closed, the clipping will be done on * \cgalParamDescription{If `true`, and `tm` is closed, the clipping will be done on
* the volume \link coref_def_subsec bounded \endlink by `tm` * the volume \link coref_def_subsec bounded \endlink by `tm`
* rather than on its surface (i.e., `tm` will be kept closed)} * rather than on its surface (i.e., `tm` will be kept closed).}
* \cgalParamType{Boolean} * \cgalParamType{Boolean}
* \cgalParamDefault{`false`} * \cgalParamDefault{`false`}
* \cgalParamNEnd * \cgalParamNEnd

View File

@ -112,15 +112,26 @@ void sum_normals(const PM& pmesh,
* @tparam PolygonMesh a model of `FaceGraph` * @tparam PolygonMesh a model of `FaceGraph`
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param f the face on which the normal is computed * @param f the face whose normal is computed
* @param pmesh the polygon mesh containing `f` * @param pmesh the polygon mesh containing `f`
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the computed normal. The return type is a 3D vector type. It is * @return the computed normal. The return type is a 3D vector type. It is
@ -129,8 +140,8 @@ void sum_normals(const PM& pmesh,
* of `pmesh`. * of `pmesh`.
* *
* \warning This function involves a square root computation. * \warning This function involves a square root computation.
* If `Kernel::FT` does not have a `sqrt()` operation, the square root computation * If the field type (`FT`) of the traits does not support the `sqrt()` operation,
* will be done approximately. * the square root computation will be performed approximately.
*/ */
template <typename PolygonMesh, typename NamedParameters> template <typename PolygonMesh, typename NamedParameters>
#ifdef DOXYGEN_RUNNING #ifdef DOXYGEN_RUNNING
@ -182,18 +193,29 @@ compute_face_normal(typename boost::graph_traits<PolygonMesh>::face_descriptor f
* *
* @param pmesh the polygon mesh * @param pmesh the polygon mesh
* @param face_normals the property map in which the normals are written * @param face_normals the property map in which the normals are written
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \warning This function involves a square root computation. * \warning This function involves a square root computation.
* If `Kernel::FT` does not have a `sqrt()` operation, the square root computation * If the field type (`FT`) of the traits does not support the `sqrt()` operation,
* will be done approximately. * the square root computation will be performed approximately.
*/ */
template <typename PolygonMesh, typename Face_normal_map, typename NamedParameters> template <typename PolygonMesh, typename Face_normal_map, typename NamedParameters>
void compute_face_normals(const PolygonMesh& pmesh, void compute_face_normals(const PolygonMesh& pmesh,
@ -575,15 +597,26 @@ compute_vertex_normal_as_sum_of_weighted_normals(typename boost::graph_traits<Po
* computes the unit normal at vertex `v` as the average of the normals of incident faces. * computes the unit normal at vertex `v` as the average of the normals of incident faces.
* @tparam PolygonMesh a model of `FaceGraph` * @tparam PolygonMesh a model of `FaceGraph`
* *
* @param v the vertex at which the normal is computed * @param v the vertex whose normal is computed
* @param pmesh the polygon mesh containing `v` * @param pmesh the polygon mesh containing `v`
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the computed normal. The return type is a 3D vector type. It is * @return the computed normal. The return type is a 3D vector type. It is
@ -592,8 +625,8 @@ compute_vertex_normal_as_sum_of_weighted_normals(typename boost::graph_traits<Po
* of `pmesh`. * of `pmesh`.
* *
* \warning This function involves a square root computation. * \warning This function involves a square root computation.
* If `Kernel::FT` does not have a `sqrt()` operation, the square root computation * If the field type (`FT`) of the traits does not support the `sqrt()` operation,
* will be done approximately. * the square root computation will be performed approximately.
*/ */
template<typename PolygonMesh, typename NamedParameters> template<typename PolygonMesh, typename NamedParameters>
#ifdef DOXYGEN_RUNNING #ifdef DOXYGEN_RUNNING
@ -698,18 +731,29 @@ compute_vertex_normal(typename boost::graph_traits<PolygonMesh>::vertex_descript
* *
* @param pmesh the polygon mesh * @param pmesh the polygon mesh
* @param vertex_normals the property map in which the normals are written * @param vertex_normals the property map in which the normals are written
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \warning This function involves a square root computation. * \warning This function involves a square root computation.
* If `Kernel::FT` does not have a `sqrt()` operation, the square root computation * If the field type (`FT`) of the traits does not support the `sqrt()` operation,
* will be done approximately. * the square root computation will be performed approximately.
*/ */
template <typename PolygonMesh, typename VertexNormalMap, typename NamedParameters> template <typename PolygonMesh, typename VertexNormalMap, typename NamedParameters>
void compute_vertex_normals(const PolygonMesh& pmesh, void compute_vertex_normals(const PolygonMesh& pmesh,
@ -787,18 +831,29 @@ void compute_vertex_normals(const PolygonMesh& pmesh, VertexNormalMap vertex_nor
* @param pmesh the polygon mesh * @param pmesh the polygon mesh
* @param vertex_normals the property map in which the vertex normals are written * @param vertex_normals the property map in which the vertex normals are written
* @param face_normals the property map in which the face normals are written * @param face_normals the property map in which the face normals are written
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \warning This function involves a square root computation. * \warning This function involves a square root computation.
* If `Kernel::FT` does not have a `sqrt()` operation, the square root computation * If the field type (`FT`) of the traits does not support the `sqrt()` operation,
* will be done approximately. * the square root computation will be performed approximately.
*/ */
template <typename PolygonMesh, template <typename PolygonMesh,
typename VertexNormalMap, typename FaceNormalMap, typename VertexNormalMap, typename FaceNormalMap,

View File

@ -99,19 +99,22 @@ namespace internal {
* `seed_face` will also be added in `out`. * `seed_face` will also be added in `out`.
* *
* \tparam PolygonMesh a model of `FaceGraph` * \tparam PolygonMesh a model of `FaceGraph`
* \tparam FaceOutputIterator a model of `OutputIterator` that accepts * \tparam FaceOutputIterator a model of `OutputIterator` with value type `boost::graph_traits<PolygonMesh>::%face_descriptor`.
faces of type
`boost::graph_traits<PolygonMesh>::%face_descriptor`.
* \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param seed_face a face of `pmesh` from which exploration starts to detect the connected component * \param seed_face a face of `pmesh` from which exploration starts to detect the connected component
that contains it that contains it
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param out the output iterator that collects faces from the same connected component as `seed_face` * \param out the output iterator that collects faces from the same connected component as `seed_face`
* \param np optional \ref pmp_namedparameters "Named Parameters" described below * \param np an optional \ref pmp_namedparameters "Named Parameters" described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamDefault{a constant property map returning `false` for any edge key}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \returns the output iterator. * \returns the output iterator.
@ -184,11 +187,22 @@ connected_component(typename boost::graph_traits<PolygonMesh>::face_descriptor s
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param fcm the property map with indices of components associated to faces in `pmesh` * \param fcm the property map with indices of components associated to faces in `pmesh`
* \param np optional \ref pmp_namedparameters "Named Parameters" described below * \param np an optional \ref pmp_namedparameters "Named Parameters" described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamNEnd
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \returns the number of connected components. * \returns the number of connected components.
@ -284,11 +298,22 @@ namespace internal {
// * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" // * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
// * // *
// * \param pmesh the polygon mesh // * \param pmesh the polygon mesh
// * \param np optional \ref pmp_namedparameters "Named Parameters" described below // * \param np an optional \ref pmp_namedparameters "Named Parameters" described below
// * // *
// * \cgalNamedParamsBegin // * \cgalNamedParamsBegin
// * \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd // * \cgalParamNBegin{edge_is_constrained_map}
// * \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd // * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
// * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
// * as key type and `bool` as value type}
// * \cgalParamDefault{a constant property map returning `false` for any edge}
// * \cgalParamNEnd
// *
// * \cgalParamNBegin{face_index_map}
// * \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
// * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
// * as key type and `std::size_t` as value type}
// * \cgalParamDefault{an automatically indexed internal map}
// * \cgalParamNEnd
// * \cgalNamedParamsEnd // * \cgalNamedParamsEnd
// * // *
// * \returns the output iterator. // * \returns the output iterator.
@ -330,25 +355,50 @@ std::size_t number_of_connected_components(const PolygonMesh& pmesh)
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param nb_components_to_keep the number of components to be kept. If this number is larger than * \param nb_components_to_keep the number of components to be kept. If this number is larger than
* the number of components in the mesh, all components are kept. * the number of components in the mesh, all components are kept.
* \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamBegin{vertex_index_map} a property map containing the index of each vertex of `pmesh` \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* \cgalParamBegin{face_size_map} * as key type and `bool` as value type}
* a property map containing a size for each face of `pmesh`. The value type of this property map * \cgalParamDefault{a constant property map returning `false` for any edge}
* is chosen by the user, but must be constructible from `0` and support `operator+=()` and * \cgalParamNEnd
* comparisons. *
* \cgalParamEnd * \cgalParamNBegin{vertex_index_map}
* \cgalParamBegin{dry_run} * \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* a Boolean parameter. If set to `true`, the mesh will not be altered, but the number * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* of components that would be removed is returned. The default value is `false`. * as key type and `std::size_t` as value type}
* \cgalParamEnd * \cgalParamDefault{an automatically indexed internal map}
* \cgalParamBegin{output_iterator} a model of `OutputIterator` with value type `face_descriptor`. * \cgalParamNEnd
* When using the "dry run" mode (see parameter `dry_run`), faces that would be removed by the *
* algorithm can be collected with this output iterator. * \cgalParamNBegin{face_index_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_size_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a size}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type.
* The value type is chosen by the user, but must be constructible from `0` and support summation and comparisons.}
* \cgalParamDefault{A constant property map returning `1` for any face}
* \cgalParamNEnd
*
* \cgalParamNBegin{dry_run}
* \cgalParamDescription{If set to `true`, the mesh will not be altered, but the number of components
* that would be removed is returned.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
*
* \cgalParamNBegin{output_iterator}
* \cgalParamDescription{An output iterator to collect the faces that would be removed by the algorithm,
* when using the "dry run" mode (see parameter `dry_run`)}
* \cgalParamType{a model of `OutputIterator` with value type `face_descriptor`}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \return the number of connected components removed (ignoring isolated vertices). * \return the number of connected components removed (ignoring isolated vertices).
@ -457,25 +507,50 @@ std::size_t keep_largest_connected_components(PolygonMesh& pmesh,
* *
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param threshold_value any connected component with a size (strictly) smaller than this value will be discarded * \param threshold_value any connected component with a size (strictly) smaller than this value will be discarded
* \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamBegin{vertex_index_map} a property map containing the index of each vertex of `pmesh` \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* \cgalParamBegin{face_size_map} * as key type and `bool` as value type}
* a property map containing a size for each face of `pmesh`. The value type of this property map * \cgalParamDefault{a constant property map returning `false` for any edge}
* is chosen by the user, but must be constructible from `0` and support `operator+=()` and * \cgalParamNEnd
* comparisons. *
* \cgalParamEnd * \cgalParamNBegin{vertex_index_map}
* \cgalParamBegin{dry_run} * \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* a Boolean parameter. If set to `true`, the mesh will not be altered, but the number * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* of components that would be removed is returned. The default value is `false`. * as key type and `std::size_t` as value type}
* \cgalParamEnd * \cgalParamDefault{an automatically indexed internal map}
* \cgalParamBegin{output_iterator} a model of `OutputIterator` with value type `face_descriptor`. * \cgalParamNEnd
* When using the "dry run" mode (see parameter `dry_run`), faces that would be removed by the *
* algorithm can be collected with this output iterator. * \cgalParamNBegin{face_index_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_size_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a size}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type.
* The value type is chosen by the user, but must be constructible from `0` and support summation and comparisons.}
* \cgalParamDefault{A constant property map returning `1` for any face}
* \cgalParamNEnd
*
* \cgalParamNBegin{dry_run}
* \cgalParamDescription{If set to `true`, the mesh will not be altered, but the number of components
* that would be removed is returned.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
*
* \cgalParamNBegin{output_iterator}
* \cgalParamDescription{An output iterator to collect the faces that would be removed by the algorithm,
* when using the "dry run" mode (see parameter `dry_run`)}
* \cgalParamType{a model of `OutputIterator` with value type `face_descriptor`}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \pre If a face size property map is passed by the user, `ThresholdValueType` must be the same * \pre If a face size property map is passed by the user, `ThresholdValueType` must be the same
@ -708,20 +783,25 @@ void keep_or_remove_connected_components(PolygonMesh& pmesh
* then the behavior of this function is undefined. * then the behavior of this function is undefined.
* *
* \tparam PolygonMesh a model of `FaceListGraph` and `MutableFaceGraph` * \tparam PolygonMesh a model of `FaceListGraph` and `MutableFaceGraph`
* \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* \tparam ComponentRange a range of ids convertible to `std::size` * \tparam ComponentRange a range of ids convertible to `std::size`
* \tparam FaceComponentMap a model of `ReadWritePropertyMap` with * \tparam FaceComponentMap a model of `ReadWritePropertyMap` with
* `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and * `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and
* `boost::graph_traits<PolygonMesh>::%faces_size_type` as value type. * `boost::graph_traits<PolygonMesh>::%faces_size_type` as value type.
* \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param components_to_keep the range of ids of connected components to keep * \param components_to_keep the range of ids of connected components to keep
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param fcm the property map with indices of components associated to faces in `pmesh`. * \param fcm the property map with indices of components associated to faces in `pmesh`.
* After calling this function, the values of `fcm` are undefined. * After calling this function, the values of `fcm` are undefined.
* \param np optional \ref pmp_namedparameters "Named Parameters" described below * \param np an optional \ref pmp_namedparameters "Named Parameters" described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_index_map} a property map containing the index of each vertex of `pmesh` \cgalParamEnd * \cgalParamNBegin{vertex_index_map}
* \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -747,20 +827,25 @@ void keep_connected_components(PolygonMesh& pmesh
* then the behavior of this function is undefined. * then the behavior of this function is undefined.
* *
* \tparam PolygonMesh a model of `FaceListGraph` and `MutableFaceGraph` * \tparam PolygonMesh a model of `FaceListGraph` and `MutableFaceGraph`
* \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* \tparam ComponentRange a range of ids convertible to `std::size` * \tparam ComponentRange a range of ids convertible to `std::size`
* \tparam FaceComponentMap a model of `ReadWritePropertyMap` with * \tparam FaceComponentMap a model of `ReadWritePropertyMap` with
* `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and * `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and
* `boost::graph_traits<PolygonMesh>::%faces_size_type` as value type. * `boost::graph_traits<PolygonMesh>::%faces_size_type` as value type.
* \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param components_to_remove the range of ids of connected components to remove * \param components_to_remove the range of ids of connected components to remove
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param fcm the property map with indices of components associated to faces in `pmesh`. * \param fcm the property map with indices of components associated to faces in `pmesh`.
* After calling this function, the values of `fcm` are undefined. * After calling this function, the values of `fcm` are undefined.
* \param np optional \ref pmp_namedparameters "Named Parameters" described below * \param np an optional \ref pmp_namedparameters "Named Parameters" described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_index_map} a property map containing the index of each vertex of `pmesh` \cgalParamEnd * \cgalParamNBegin{vertex_index_map}
* \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -792,12 +877,29 @@ void remove_connected_components(PolygonMesh& pmesh
* *
* \param components_to_remove a face range, including one face or more on each component to be removed * \param components_to_remove a face range, including one face or more on each component to be removed
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamBegin{vertex_index_map} a property map containing the index of each vertex of `pmesh` \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamNEnd
*
* \cgalParamNBegin{vertex_index_map}
* \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -845,12 +947,29 @@ void remove_connected_components(PolygonMesh& pmesh
* *
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param components_to_keep a face range, including one face or more on each component to be kept * \param components_to_keep a face range, including one face or more on each component to be kept
* \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamBegin{vertex_index_map} a property map containing the index of each vertex of `pmesh` \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamNEnd
*
* \cgalParamNBegin{vertex_index_map}
* \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -963,34 +1082,50 @@ void split_connected_components_impl(FIMap fim,
/*! /*!
* \ingroup keep_connected_components_grp * \ingroup keep_connected_components_grp
* identifies the connected components of `pm` and pushes back a new `PolygonMesh` for each connected component in `cc_meshes`. * identifies the connected components of `pmesh` and pushes back a new `PolygonMesh` for each connected component in `cc_meshes`.
*
* *
* \tparam PolygonMesh a model of `FaceListGraph` * \tparam PolygonMesh a model of `FaceListGraph`
* \tparam PolygonMeshRange a model of `SequenceContainer` with `PolygonMesh` as value type. * \tparam PolygonMeshRange a model of `SequenceContainer` with `PolygonMesh` as value type.
* *
* \tparam NamedParameters a sequence of Named Parameters * \tparam NamedParameters a sequence of Named Parameters
* *
* \param pm the polygon mesh * \param pmesh the polygon mesh
* \param cc_meshes container that is filled with the extracted connected components. * \param cc_meshes container that is filled with the extracted connected components.
* \param np an optional sequence of Named Parameters among the ones listed below * \param np an optional sequence of Named Parameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pm` \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamBegin{face_index_map} * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* a property map containing a unique index for each face initialized from 0 to `num_faces(pm)` * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* \cgalParamEnd * as key type and `bool` as value type}
* \cgalParamBegin{vertex_index_map} * \cgalParamDefault{a constant property map returning `false` for any edge}
* a property map containing a unique index for each vertex initialized 0 to `num_vertices(pm)` * \cgalParamNEnd
* \cgalParamEnd *
* \cgalNPBegin{halfedge_index_map} * \cgalParamNBegin{vertex_index_map}
* a property map containing a unique index for each halfedge initialized 0 to `num_halfedges(pm)` * \cgalParamDescription{a property map associating to each vertex of `pmesh` a unique index between `0` and `num_vertices(pmesh) - 1`}
* \cgalNPEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{halfedge_index_map}
* \cgalParamDescription{a property map associating to each halfedge of `pmesh` a unique index between `0` and `num_halfedges(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%halfedge_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
template <class PolygonMesh, class PolygonMeshRange, class NamedParameters> template <class PolygonMesh, class PolygonMeshRange, class NamedParameters>
void split_connected_components(const PolygonMesh& pm, void split_connected_components(const PolygonMesh& pmesh,
PolygonMeshRange& cc_meshes, PolygonMeshRange& cc_meshes,
const NamedParameters& np) const NamedParameters& np)
{ {
@ -1006,17 +1141,17 @@ void split_connected_components(const PolygonMesh& pm,
Ecm ecm = choose_parameter(get_parameter(np, internal_np::edge_is_constrained), Ecm ecm = choose_parameter(get_parameter(np, internal_np::edge_is_constrained),
internal::No_mark<PolygonMesh>()); internal::No_mark<PolygonMesh>());
internal::split_connected_components_impl(CGAL::get_initialized_face_index_map(pm, np), internal::split_connected_components_impl(CGAL::get_initialized_face_index_map(pmesh, np),
CGAL::get_initialized_halfedge_index_map(pm, np), CGAL::get_initialized_halfedge_index_map(pmesh, np),
CGAL::get_initialized_vertex_index_map(pm, np), CGAL::get_initialized_vertex_index_map(pmesh, np),
ecm, cc_meshes, pm); ecm, cc_meshes, pm);
} }
template <class PolygonMesh, class PolygonMeshRange> template <class PolygonMesh, class PolygonMeshRange>
void split_connected_components(const PolygonMesh& pm, void split_connected_components(const PolygonMesh& pmesh,
PolygonMeshRange& cc_meshes) PolygonMeshRange& cc_meshes)
{ {
split_connected_components(pm, cc_meshes, parameters::all_default()); split_connected_components(pmesh, cc_meshes, parameters::all_default());
} }
} // namespace Polygon_mesh_processing } // namespace Polygon_mesh_processing

View File

@ -99,46 +99,73 @@ enum Boolean_operation_type {UNION = 0, INTERSECTION=1,
* @param tm1 first input triangulated surface mesh * @param tm1 first input triangulated surface mesh
* @param tm2 second input triangulated surface mesh * @param tm2 second input triangulated surface mesh
* @param output an array of output surface meshes * @param output an array of output surface meshes
* @param np1 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np1 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* @param np2 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np2 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm1` (`tm2`). * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` should be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm1` (`tm2`). * must be available in `TriangleMesh`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `tm1` (`tm2`). *
* Note that if the property map is writable, the indices of the faces * \cgalParamNBegin{edge_is_constrained_map}
* of `tm1` and `tm2` will be set after the corefinement is done. * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm1` (`tm2`)}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* \cgalParamBegin{visitor} a class model of `PMPCorefinementVisitor` * as key type and `bool` as value type}
* that is used to track the creation of new faces (`np1` only) * \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{throw_on_self_intersection} if `true`, for each input triangle mesh, *
* the set of triangles close to the intersection of `tm1` and `tm2` will be * \cgalParamNBegin{face_index_map}
* checked for self-intersection and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * \cgalParamDescription{a property map associating to each face of `tm1` (`tm2`) a unique index
* will be thrown if at least one is found (`np1` only). * between `0` and `num_faces(tm1) - 1` (`num_faces(tm2) - 1`)}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamExtra{If the property map is writable, the indices of the faces of `tm1` and `tm2`
* will be set after the corefinement is done.}
* \cgalParamNEnd
*
* \cgalParamNBegin{visitor}
* \cgalParamDescription{a visitor used to track the creation of new faces}
* \cgalParamType{a class model of `PMPCorefinementVisitor`}
* \cgalParamDefault{`Corefinement::Default_visitor<TriangleMesh>`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
*
* \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true` the set of triangles closed to the intersection of `tm1` and `tm2` will be
* checked for self-intersections and `Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @param nps_out tuple of optional sequences of \ref pmp_namedparameters "Named Parameters" each among the ones listed below * @param nps_out a tuple of optional sequences of \ref pmp_namedparameters "Named Parameters" each among the ones listed below
* (`tm_out` being used to refer to the output surface mesh in `output` corresponding to a given named parameter sequence) * (`tm_out` being used to refer to the output surface mesh in `output` corresponding to a given named parameter sequence)
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm_out`. * \cgalParamDescription{a property map associating points to the vertices of `tm_out`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm_out)`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm_out`. An edge of `tm_out` is constrained * must be available in `TriangleMesh`.}
* if it is on the intersection of `tm1` and `tm2`, or if the edge corresponds to a * \cgalParamNEnd
* constrained edge in `tm1` or `tm2`. *
* \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm_out`.
* An edge of `tm_out` is constrained if it is on the intersection of `tm1` and `tm2`,
* or if the edge corresponds to a constrained edge in `tm1` or `tm2`.}
* \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return an array filled as follows: for each operation computed, the position in the array * @return an array filled as follows: for each operation computed, the position in the array
@ -456,45 +483,72 @@ corefine_and_compute_boolean_operations(
* @param tm1 first input triangulated surface mesh * @param tm1 first input triangulated surface mesh
* @param tm2 second input triangulated surface mesh * @param tm2 second input triangulated surface mesh
* @param tm_out output surface mesh * @param tm_out output surface mesh
* @param np1 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np1 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* @param np2 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np2 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm1` (`tm2`). * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm1` (`tm2`). * must be available in `TriangleMesh`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `tm1` (`tm2`). *
* Note that if the property map is writable, the indices of the faces * \cgalParamNBegin{edge_is_constrained_map}
* of `tm1` and `tm2` will be set after the corefinement is done. * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm1` (`tm2`)}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* \cgalParamBegin{visitor} a class model of `PMPCorefinementVisitor` * as key type and `bool` as value type}
* that is used to track the creation of new faces (`np1` only) * \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{throw_on_self_intersection} if `true`, for each input triangle mesh, *
* the set of triangles close to the intersection of `tm1` and `tm2` will be * \cgalParamNBegin{face_index_map}
* checked for self-intersection and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * \cgalParamDescription{a property map associating to each face of `tm1` (`tm2`) a unique index
* will be thrown if at least one is found (`np1` only). * between `0` and `num_faces(tm1) - 1` (`num_faces(tm2) - 1`)}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamExtra{If the property map is writable, the indices of the faces of `tm1` and `tm2`
* will be set after the corefinement is done.}
* \cgalParamNEnd
*
* \cgalParamNBegin{visitor}
* \cgalParamDescription{a visitor used to track the creation of new faces}
* \cgalParamType{a class model of `PMPCorefinementVisitor`}
* \cgalParamDefault{`Corefinement::Default_visitor<TriangleMesh>`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
*
* \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true` the set of triangles closed to the intersection of `tm1` and `tm2` will be
* checked for self-intersections and `Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @param np_out optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_out optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm_out`. * \cgalParamDescription{a property map associating points to the vertices of `tm_out`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm_out)`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm_out`. An edge of `tm_out` is constrained * must be available in `TriangleMesh`.}
* if it is on the intersection of `tm1` and `tm2`, or if the edge corresponds to a * \cgalParamNEnd
* constrained edge in `tm1` or `tm2`. *
* \cgalParamEnd * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm_out`.
* An edge of `tm_out` is constrained if it is on the intersection of `tm1` and `tm2`,
* or if the edge corresponds to a constrained edge in `tm1` or `tm2`.}
* \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `true` if the output surface mesh is manifold and is put into `tm_out`. * @return `true` if the output surface mesh is manifold and is put into `tm_out`.
@ -606,26 +660,41 @@ corefine_and_compute_difference( TriangleMesh& tm1,
* *
* @param tm1 first input triangulated surface mesh * @param tm1 first input triangulated surface mesh
* @param tm2 second input triangulated surface mesh * @param tm2 second input triangulated surface mesh
* @param np1 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np1 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* @param np2 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np2 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm1` (`tm2`). * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm1` (`tm2`) * must be available in `TriangleMesh`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{visitor} a class model of `PMPCorefinementVisitor` *
* that is used to track the creation of new faces (`np1` only) * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm1` (`tm2`)}
* \cgalParamBegin{throw_on_self_intersection} if `true`, for each input triangle mesh, * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* the set of triangles close to the intersection of `tm1` and `tm2` will be * as key type and `bool` as value type}
* checked for self-intersection and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * \cgalParamDefault{a constant property map returning `false` for any edge}
* will be thrown if at least one is found (`np1` only). * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{visitor}
* \cgalParamDescription{a visitor used to track the creation of new faces}
* \cgalParamType{a class model of `PMPCorefinementVisitor`}
* \cgalParamDefault{`Corefinement::Default_visitor<TriangleMesh>`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
*
* \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{if `true` the set of triangles closed to the intersection of `tm1` and `tm2` will be
* checked for self-intersections and `Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -716,20 +785,39 @@ namespace experimental {
* @tparam NamedParameters a sequence of \ref namedparameters * @tparam NamedParameters a sequence of \ref namedparameters
* *
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param np optional sequence of \ref namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm` * must be available in `TriangleMesh`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{visitor} a class model of `PMPCorefinementVisitor` *
* that is used to track the creation of new faces * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamExtra{If the property map is writable, the indices of the faces of `tm1` and `tm2`
* will be set after the corefinement is done.}
* \cgalParamNEnd
*
* \cgalParamNBegin{visitor}
* \cgalParamDescription{a visitor used to track the creation of new faces}
* \cgalParamType{a class model of `PMPCorefinementVisitor`}
* \cgalParamDefault{`Corefinement::Default_visitor<TriangleMesh>`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -789,21 +877,40 @@ autorefine( TriangleMesh& tm,
* @tparam NamedParameters a sequence of \ref namedparameters * @tparam NamedParameters a sequence of \ref namedparameters
* *
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param np optional sequence of \ref namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* constrained-or-not status of each edge of `tm` * must be available in `TriangleMesh`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `tm` \cgalParamEnd *
* \cgalParamBegin{visitor} a class model of `PMPCorefinementVisitor` * \cgalParamNBegin{edge_is_constrained_map}
* that is used to track the creation of new faces * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tm`}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
* as key type and `bool` as value type}
* \cgalParamDefault{a constant property map returning `false` for any edge}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamExtra{If the property map is writable, the indices of the faces of `tm` will be set
* after the autorefinement is done.}
* \cgalParamNEnd
*
* \cgalParamNBegin{visitor}
* \cgalParamDescription{a visitor used to track the creation of new faces}
* \cgalParamType{a class model of `PMPCorefinementVisitor`}
* \cgalParamDefault{`Corefinement::Default_visitor<TriangleMesh>`}
* \cgalParamNEnd
*
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */

View File

@ -246,12 +246,21 @@ template<typename GT,
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param angle_in_deg the dihedral angle bound * \param angle_in_deg the dihedral angle bound
* \param edge_is_feature_map the property map that will contain the sharp-or-not status of each edge of `pmesh` * \param edge_is_feature_map the property map that will contain the sharp-or-not status of each edge of `pmesh`
* \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * \cgalParamNBegin{vertex_feature_degree_map}
* \cgalParamBegin{vertex_feature_degree_map} a property map that will contain the number of adjacent feature edges for * \cgalParamDescription{a property map that will associate to each vertex of `pmesh` the number of incident feature edges}
* each vertex of `pmesh` \cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor` as key type and `int` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_feature_degree_t(), pmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -295,6 +304,7 @@ void detect_sharp_edges(PolygonMesh& pmesh,
inserted several times. inserted several times.
* \tparam EdgeIsFeatureMap a model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor` * \tparam EdgeIsFeatureMap a model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type. * as key type and `bool` as value type.
*
* \param pmesh the polygon mesh * \param pmesh the polygon mesh
* \param patch_id_map the property map containing the surface patch ids for the faces of `pmesh`. It must be already filled. * \param patch_id_map the property map containing the surface patch ids for the faces of `pmesh`. It must be already filled.
* \param vertex_incident_patches_map a property map that will contain the patch ids of all the faces incident to each vertex of `pmesh`. * \param vertex_incident_patches_map a property map that will contain the patch ids of all the faces incident to each vertex of `pmesh`.
@ -368,7 +378,6 @@ namespace internal
* computing a * computing a
* surface patch id for each face. * surface patch id for each face.
* *
*
* \tparam PolygonMesh a model of `FaceGraph` * \tparam PolygonMesh a model of `FaceGraph`
* \tparam FT a number type. It is * \tparam FT a number type. It is
* either deduced from the `geom_traits` \ref pmp_namedparameters "Named Parameters" if provided, * either deduced from the `geom_traits` \ref pmp_namedparameters "Named Parameters" if provided,
@ -384,15 +393,44 @@ namespace internal
* \param angle_in_deg the dihedral angle bound * \param angle_in_deg the dihedral angle bound
* \param edge_is_feature_map the property map that will contain the sharp-or-not status of each edge of `pmesh` * \param edge_is_feature_map the property map that will contain the sharp-or-not status of each edge of `pmesh`
* \param patch_id_map the property map that will contain the surface patch ids for the faces of `pmesh`. * \param patch_id_map the property map that will contain the surface patch ids for the faces of `pmesh`.
* \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * \cgalParamNBegin{vertex_feature_degree_map}
* \cgalParamBegin{vertex_feature_degree_map} a property map that will contain the number of adjacent feature edges for each vertex of `pmesh` \cgalParamEnd * \cgalParamDescription{a property map that will associate to each vertex of `pmesh` the number of incident feature edges}
* \cgalParamBegin{first_index} a `std::size_t` containing the index of the first surface patch of `pmesh`. * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* The patches will be numbered on [first_index; first_index + num_patches], where num_patches is the number of surface patches \cgalParamEnd * as key type and `int` as value type}
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_feature_degree_t(), pmesh)`}
* \cgalParamBegin{vertex_incident_patches_map} a property map that will contain the patch ids of all the faces incident to each vertex of `pmesh`. \cgalParamEnd * \cgalParamNEnd
*
* \cgalParamNBegin{first_index}
* \cgalParamDescription{the index of the first surface patch of `pmesh`}
* \cgalParamType{`std::size_t`}
* \cgalParamExtra{the patches will be numbered on `[first_index; first_index + num_patches]`,
* where `num_patches` is the number of surface patches}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{vertex_incident_patches_map}
* \cgalParamDescription{a property map that will contain the patch ids of all the faces incident to each vertex of `pmesh`}
* \cgalParamType{a model of mutable `LvaluePropertyMap` with
* `boost::graph_traits<PolygonMesh>::%vertex_descriptor` as key type. Its value type
* must be a container of `boost::property_traits<PatchIdMap>::%value_type` and have a function `insert()`.}
* \cgalParamExtra{A `std::set` or a `boost::unordered_set` are recommended, as a patch index may be inserted several times.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* \returns the number of surface patches. * \returns the number of surface patches.
* *
@ -451,9 +489,6 @@ sharp_edges_segmentation(PolygonMesh& p,
parameters::all_default()); parameters::all_default());
} }
} // end namespace PMP } // end namespace PMP
} // end namespace CGAL } // end namespace CGAL

View File

@ -234,87 +234,131 @@ sample_triangles(const FaceRange& triangles,
* @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points * \cgalParamNBegin{vertex_point_map}
* associated to the vertices of `tm`. If this parameter is omitted, * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* an internal property map for `CGAL::vertex_point_t` * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* must be available for `TriangleMesh`. * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{geom_traits} a model of `PMPDistanceTraits`. \cgalParamEnd * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* \cgalParamBegin{use_random_uniform_sampling} * must be available in `TriangleMesh`.}
* if `true` is passed (the default), points are generated in a random * \cgalParamNEnd
* and uniform way on the surface of `tm`, and/or on edges of `tm`. *
* For faces, the number of sample points is the value passed to the named * \cgalParamNBegin{geom_traits}
* parameter `number_of_points_on_faces()`. If not set, * \cgalParamDescription{an instance of a geometric traits class}
* the value passed to the named parameter `number_of_points_per_area_unit()` * \cgalParamType{a class model of `PMPDistanceTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
*
* \cgalParamNBegin{use_random_uniform_sampling}
* \cgalParamDescription{If `true` is passed, points are generated in a random and uniform way
* on the surface of `tm`, and/or on edges of `tm`.}
* \cgalParamType{Boolean}
* \cgalParamType{`true`}
* \cgalParamExtra{For faces, the number of sample points is the value passed to the named
* parameter `number_of_points_on_faces`. If not set,
* the value passed to the named parameter `number_of_points_per_area_unit`
* is multiplied by the area of `tm` to get the number of sample points. * is multiplied by the area of `tm` to get the number of sample points.
* If none of these parameters is set, the number of points sampled is `num_vertices(tm)`. * If none of these parameters is set, the number of points sampled is `num_vertices(tm)`.
* For edges, the number of the number of sample points is the value passed to the named * For edges, the number of the number of sample points is the value passed to the named
* parameter `number_of_points_on_edges()`. If not set, * parameter `number_of_points_on_edges`. If not set,
* the value passed to the named parameter `number_of_points_per_distance_unit()` * the value passed to the named parameter `number_of_points_per_distance_unit`
* is multiplied by the sum of the length of edges of `tm` to get the number of sample points. * is multiplied by the sum of the length of edges of `tm` to get the number of sample points.
* If none of these parameters is set, the number of points sampled is `num_vertices(tm)`. * If none of these parameters is set, the number of points sampled is `num_vertices(tm)`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{use_grid_sampling} *
* if `true` is passed, points are generated on a grid in each triangle, * \cgalParamNBegin{use_grid_sampling}
* with a minimum of one point per triangle. The distance between * \cgalParamDescription{If `true` is passed, points are generated on a grid in each triangle,
* two consecutive points in the grid is that of the length of the * with a minimum of one point per triangle.}
* smallest non-null edge of `tm` or the value passed to * \cgalParamType{Boolean}
* the named parameter `grid_spacing()`. Edges are also split using the * \cgalParamDefault{`false`}
* same distance, if requested. * \cgalParamExtra{The distance between two consecutive points in the grid is that of the length
* \cgalParamEnd * of the smallest non-null edge of `tm` or the value passed to the named parameter
* \cgalParamBegin{use_monte_carlo_sampling} * `grid_spacing`. Edges are also split using the same distance, if requested.}
* if `true` is passed, points are generated randomly in each triangle and/or * \cgalParamNEnd
* on each edge. *
* For faces, the number of points per triangle is the value passed to the named * \cgalParamNBegin{use_monte_carlo_sampling}
* parameter `number_of_points_per_face()`. If not set, the value passed * \cgalParamDescription{if `true` is passed, points are generated randomly in each triangle and/or on each edge.}
* to the named parameter `number_of_points_per_area_unit()` is * \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamExtra{For faces, the number of points per triangle is the value passed to the named
* parameter `number_of_points_per_face`. If not set, the value passed
* to the named parameter `number_of_points_per_area_unit` is
* used to pick a number of points per face proportional to the triangle * used to pick a number of points per face proportional to the triangle
* area with a minimum of one point per face. If none of these parameters * area with a minimum of one point per face. If none of these parameters
* is set, 2 divided by the square of the length of the smallest non-null * is set, 2 divided by the square of the length of the smallest non-null
* edge of `tm` is used as if it was passed to * edge of `tm` is used as if it was passed to
* `number_of_points_per_area_unit()`. * `number_of_points_per_area_unit`.
* For edges, the number of points per edge is the value passed to the named * For edges, the number of points per edge is the value passed to the named
* parameter `number_of_points_per_edge()`. If not set, the value passed * parameter `number_of_points_per_edge`. If not set, the value passed
* to the named parameter `number_of_points_per_distance_unit()` is * to the named parameter `number_of_points_per_distance_unit` is
* used to pick a number of points per edge proportional to the length of * used to pick a number of points per edge proportional to the length of
* the edge with a minimum of one point per face. If none of these parameters * the edge with a minimum of one point per face. If none of these parameters
* is set, 1 divided by the length of the smallest non-null edge of `tm` * is set, 1 divided by the length of the smallest non-null edge of `tm`
* is used as if it was passed to `number_of_points_per_distance_unit()`. * is used as if it was passed to `number_of_points_per_distance_unit`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{sample_vertices} if `true` is passed (default value), *
* vertices of `tm` are put into `out`.\cgalParamEnd * \cgalParamNBegin{sample_vertices}
* \cgalParamBegin{sample_edges} if `true` is passed (default value), * \cgalParamDescription{If `true` is passed, vertices of `tm` are put into `out`.}
* edges of `tm` are sampled.\cgalParamEnd * \cgalParamType{Boolean}
* \cgalParamBegin{sample_faces} if `true` is passed (default value), * \cgalParamDefault{`true`}
* faces of `tm` are sampled.\cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{grid_spacing} a double value used as the grid spacing *
* for the grid sampling method. * \cgalParamNBegin{sample_edges}
* \cgalParamEnd * \cgalParamDescription{If `true` is passed, edges of `tm` are sampled.}
* \cgalParamBegin{number_of_points_on_edges} an unsigned integral value used * \cgalParamType{Boolean}
* for the random sampling method as the number of points to pick exclusively * \cgalParamDefault{`true`}
* on edges. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{number_of_points_on_faces} an unsigned integral value used * \cgalParamNBegin{sample_faces}
* for the random sampling method as the number of points to pick on the surface. * \cgalParamDescription{If `true` is passed, faces of `tm` are sampled.}
* \cgalParamEnd * \cgalParamType{Boolean}
* \cgalParamBegin{number_of_points_per_distance_unit} a double value * \cgalParamDefault{`true`}
* used for the random sampling and the Monte Carlo sampling methods to * \cgalParamNEnd
* repectively determine the total number of points on edges and the *
* number of points per edge. * \cgalParamNBegin{grid_spacing}
* \cgalParamEnd * \cgalParamDescription{a value used as the grid spacing for the grid sampling method}
* \cgalParamBegin{number_of_points_per_edge} an unsigned integral value * \cgalParamType{double}
* used by the Monte-Carlo sampling method as the number of points per edge * \cgalParamDefault{the length of the shortest, non-degenerate edge of `tm`}
* to pick. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{number_of_points_per_face} an unsigned integral value * \cgalParamNBegin{number_of_points_on_edges}
* used by the Monte-Carlo sampling method as the number of points per face * \cgalParamDescription{a value used for the random sampling method as the number of points to pick exclusively on edges}
* to pick. * \cgalParamType{unsigned int}
* \cgalParamEnd * \cgalParamDefault{`num_vertices(tm)` or a value based on `nb_points_per_distance_unit`, if it is defined}
* \cgalParamBegin{number_of_points_per_area_unit} a double value * \cgalParamNEnd
* used for the random sampling and the Monte Carlo sampling methods to *
* repectively determine the total number of points inside faces * \cgalParamNBegin{number_of_points_on_faces}
* and the number of points per face. * \cgalParamDescription{a value used for the random sampling method as the number of points to pick on the surface}
* \cgalParamEnd * \cgalParamType{unsigned int}
* \cgalParamDefault{`num_vertices(tm)` or a value based on `nb_points_per_area_unit`, if it is defined}
* \cgalParamNEnd
*
* \cgalParamNBegin{number_of_points_per_distance_unit}
* \cgalParamDescription{a value used for the random sampling and the Monte Carlo sampling methods to
* respectively determine the total number of points on edges and the number of points per edge}
* \cgalParamType{double}
* \cgalParamDefault{`1` divided by the length of the shortest, non-degenerate edge of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{number_of_points_per_edge}
* \cgalParamDescription{a value used by the Monte-Carlo sampling method as the number of points per edge to pick}
* \cgalParamType{unsigned int}
* \cgalParamDefault{`0`}
* \cgalParamNEnd
*
* \cgalParamNBegin{number_of_points_per_area_unit}
* \cgalParamDescription{a value used for the random sampling and the Monte Carlo sampling methods to
* respectively determine the total number of points inside faces and the number of points per face}
* \cgalParamType{double}
* \cgalParamDefault{`2` divided by the squared length of the shortest, non-degenerate edge of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{number_of_points_per_face}
* \cgalParamDescription{a value used by the Monte-Carlo sampling method as the number of points per face to pick}
* \cgalParamType{unsigned int}
* \cgalParamDefault{`0`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template<class OutputIterator, class TriangleMesh, class NamedParameters> template<class OutputIterator, class TriangleMesh, class NamedParameters>
@ -595,18 +639,24 @@ double approximate_Hausdorff_distance(
* *
* @param tm1 the triangle mesh that will be sampled * @param tm1 the triangle mesh that will be sampled
* @param tm2 the triangle mesh to compute the distance to * @param tm2 the triangle mesh to compute the distance to
* @param np1 optional sequence of \ref pmp_namedparameters "Named Parameters" for `tm1` passed to `sample_triangle_mesh()`. * @param np1 an optional sequence of \ref pmp_namedparameters "Named Parameters" for `tm1`,
* forwarded to `sample_triangle_mesh()`.
* *
* @param np2 optional sequence of \ref pmp_namedparameters "Named Parameters" for `tm2` among the ones listed below * @param np2 an optional sequence of \ref pmp_namedparameters "Named Parameters" for `tm2` among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm2` * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` must be available in `TriangleMesh` * \cgalParamDescription{a property map associating points to the vertices of `tm2`}
* and in all places where `vertex_point_map` is used. * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm2)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `TriangleMesh`.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* The function `CGAL::parameters::all_default()` can be used to indicate to use the default values for *
* `np1` and specify custom values for `np2` * The function `CGAL::parameters::all_default()` can be used to indicate to use the default values
* for `np1` and specify custom values for `np2`.
*/ */
template< class Concurrency_tag, template< class Concurrency_tag,
class TriangleMesh, class TriangleMesh,
@ -659,11 +709,21 @@ double approximate_symmetric_Hausdorff_distance(
* @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. If this parameter is omitted, * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* an internal property map for `CGAL::vertex_point_t` must be available for the * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
vertices of `tm` \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPDistanceTraits`\cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `TriangleMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPDistanceTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template< class Concurrency_tag, template< class Concurrency_tag,
@ -696,11 +756,21 @@ double max_distance_to_triangle_mesh(const PointRange& points,
* @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. If this parameter is omitted, * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* an internal property map for `CGAL::vertex_point_t` must be available for the * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
vertices of `tm` \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPDistanceTraits`. \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `TriangleMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPDistanceTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template< class TriangleMesh, template< class TriangleMesh,

View File

@ -103,6 +103,7 @@ struct Identity_functor
/** /**
* \ingroup PMP_meshing_grp * \ingroup PMP_meshing_grp
*
* \brief performs a generalized extrusion of `input` and puts it in `output`. * \brief performs a generalized extrusion of `input` and puts it in `output`.
* *
* This function extrudes the open surface mesh `input` and puts the result in `output`. The mesh generated is a closed * This function extrudes the open surface mesh `input` and puts the result in `output`. The mesh generated is a closed
@ -112,7 +113,9 @@ struct Identity_functor
* vertices of the bottom and top part are first initialized to the same value as the corresponding * vertices of the bottom and top part are first initialized to the same value as the corresponding
* vertices of `input`. Then for each vertex, a call to `bot` and `top` is done for the vertices of the * vertices of `input`. Then for each vertex, a call to `bot` and `top` is done for the vertices of the
* bottom part and the top part, respectively. * bottom part and the top part, respectively.
*
* \attention `output` may be self intersecting. * \attention `output` may be self intersecting.
*
* @tparam InputMesh a model of `FaceListGraph` * @tparam InputMesh a model of `FaceListGraph`
* @tparam OutputMesh a model of `FaceListGraph` and `MutableFaceGraph` * @tparam OutputMesh a model of `FaceListGraph` and `MutableFaceGraph`
* @tparam NamedParameters1 a sequence of \ref pmp_namedparameters "Named Parameters" for `InputMesh` * @tparam NamedParameters1 a sequence of \ref pmp_namedparameters "Named Parameters" for `InputMesh`
@ -124,6 +127,7 @@ struct Identity_functor
* where `output_v` is the copy of `input_v` from `input` into the bottom part of `output`. * where `output_v` is the copy of `input_v` from `input` into the bottom part of `output`.
* *
* @tparam TopFunctor a functor providing a similar `operator()` as `BottomFunctor`. * @tparam TopFunctor a functor providing a similar `operator()` as `BottomFunctor`.
*
* @param input an open surface mesh to extrude. * @param input an open surface mesh to extrude.
* @param output a surface mesh that will contain the result of the extrusion. * @param output a surface mesh that will contain the result of the extrusion.
* @param bot functor that will transform all points copied from * @param bot functor that will transform all points copied from
@ -133,21 +137,26 @@ struct Identity_functor
* @param np_in an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_in an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map that contains the points associated to the vertices of `input`. * \cgalParamDescription{a property map associating points to the vertices of `input`}
* If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<InputMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* should be available for the vertices of `input` * \cgalParamDefault{`boost::get(CGAL::vertex_point, input)`}
* \cgalParamEnd * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `input`.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @param np_out an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_out an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map that will contain the points associated to the vertices of `output`. * \cgalParamDescription{a property map associating points to the vertices of `ouput`}
* If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<OutputMesh>::%vertex_descriptor`
* should be available for the vertices of `output` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, ouput)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `ouput`.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template <class InputMesh, template <class InputMesh,
@ -225,36 +234,46 @@ void extrude_mesh(const InputMesh& input,
/** /**
* \ingroup PMP_meshing_grp * \ingroup PMP_meshing_grp
*
* fills `output` with a closed mesh bounding the volume swept by `input` when translating its * fills `output` with a closed mesh bounding the volume swept by `input` when translating its
* vertices by `v`. The mesh is oriented so that the faces corresponding to `input` * vertices by `v`. The mesh is oriented so that the faces corresponding to `input`
* in `output` have the same orientation. * in `output` have the same orientation.
*
* \attention `output` may be self intersecting. * \attention `output` may be self intersecting.
*
* @tparam InputMesh a model of the concept `FaceListGraph` * @tparam InputMesh a model of the concept `FaceListGraph`
* @tparam OutputMesh a model of the concept `FaceListGraph` and `MutableFaceGraph` * @tparam OutputMesh a model of the concept `FaceListGraph` and `MutableFaceGraph`
* @tparam Vector_3 vector type from the same CGAL kernel as the point of the vertex point map used for `OutputMesh`. * @tparam Vector_3 vector type from the same CGAL kernel as the point of the vertex point map used for `OutputMesh`.
* @tparam NamedParameters1 a sequence of \ref pmp_namedparameters "Named Parameters" for `InputMesh` * @tparam NamedParameters1 a sequence of \ref pmp_namedparameters "Named Parameters" for `InputMesh`
* @tparam NamedParameters2 a sequence of \ref pmp_namedparameters "Named Parameters" for `OutputMesh` * @tparam NamedParameters2 a sequence of \ref pmp_namedparameters "Named Parameters" for `OutputMesh`
*
* @param input an open surface mesh to extrude. * @param input an open surface mesh to extrude.
* @param output a surface mesh that will contain the result of the extrusion. * @param output a surface mesh that will contain the result of the extrusion.
* @param v the vector defining the direction of the extrusion * @param v the vector defining the direction of the extrusion
* @param np_in an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_in an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map that contains the points associated to the vertices of `input`. * \cgalParamDescription{a property map associating points to the vertices of `input`}
* If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<InputMesh>::%vertex_descriptor`
* should be available for the vertices of `input` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, input)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `input`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @param np_out an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_out an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map that will contain the points associated to the vertices of `output`. * \cgalParamDescription{a property map associating points to the vertices of `ouput`}
* If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<OutputMesh>::%vertex_descriptor`
* should be available for the vertices of `output` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, ouput)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `ouput`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template <class InputMesh, template <class InputMesh,

View File

@ -82,14 +82,35 @@ namespace internal {
@param tmesh the triangle mesh with patches to be faired @param tmesh the triangle mesh with patches to be faired
@param vertices the vertices of the patches to be faired (the positions of only those vertices will be changed) @param vertices the vertices of the patches to be faired (the positions of only those vertices will be changed)
@param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tmesh`. \cgalParamNBegin{vertex_point_map}
If this parameter is omitted, an internal property map for \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
`CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
\cgalParamBegin{fairing_continuity} tangential continuity of the output surface patch. The larger `fairing_continuity` gets, the more fixed vertices are required \cgalParamEnd as key type and `%Point_3` as value type}
\cgalParamBegin{sparse_linear_solver} an instance of the sparse linear solver used for fairing \cgalParamEnd \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
\cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
should be available for the vertices of `input`.}
\cgalParamNEnd
\cgalParamNBegin{fairing_continuity}
\cgalParamDescription{A value controling the tangential continuity of the output surface patch.
The possible values are 0, 1 and 2, refering to the C<sup>0</sup>, C<sup>1</sup>
and C<sup>2</sup> continuity.}
\cgalParamType{unsigned int}
\cgalParamDefault{`1`}
\cgalParamExtra{The larger `fairing_continuity` gets, the more fixed vertices are required}
\cgalParamNEnd
\cgalParamNBegin{sparse_linear_solver}
\cgalParamDescription{an instance of the sparse linear solver used for fairing}
\cgalParamType{a class model of `SparseLinearAlgebraWithFactorTraits_d`}
\cgalParamDefault{If \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available and
`CGAL_EIGEN3_ENABLED` is defined, then the following overload of `Eigen_solver_traits`
is provided as default value:\n
`CGAL::Eigen_solver_traits<Eigen::SparseLU<CGAL::Eigen_sparse_matrix<double>::%EigenType, Eigen::COLAMDOrdering<int> > >`}
\cgalParamNEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
@return `true` if fairing is successful, otherwise no vertices are relocated @return `true` if fairing is successful, otherwise no vertices are relocated

View File

@ -50,7 +50,6 @@ template<class TM,
class VertexPointMap2> class VertexPointMap2>
struct Intersect_faces struct Intersect_faces
{ {
// typedefs // typedefs
typedef typename Kernel::Segment_3 Segment; typedef typename Kernel::Segment_3 Segment;
typedef typename Kernel::Triangle_3 Triangle; typedef typename Kernel::Triangle_3 Triangle;
@ -68,10 +67,6 @@ struct Intersect_faces
typename Kernel::Construct_triangle_3 triangle_functor; typename Kernel::Construct_triangle_3 triangle_functor;
typename Kernel::Do_intersect_3 do_intersect_3_functor; typename Kernel::Do_intersect_3 do_intersect_3_functor;
Intersect_faces(const TM& tm1, const TM& tm2, Intersect_faces(const TM& tm1, const TM& tm2,
OutputIterator it, OutputIterator it,
VertexPointMap1 vpmap1, VertexPointMap2 vpmap2, VertexPointMap1 vpmap1, VertexPointMap2 vpmap2,
@ -137,9 +132,6 @@ struct Intersect_face_polyline
typename Kernel::Construct_triangle_3 triangle_functor; typename Kernel::Construct_triangle_3 triangle_functor;
typename Kernel::Do_intersect_3 do_intersect_3_functor; typename Kernel::Do_intersect_3 do_intersect_3_functor;
Intersect_face_polyline(const TM& tm, Intersect_face_polyline(const TM& tm,
const std::vector<face_descriptor>& faces, const std::vector<face_descriptor>& faces,
const Polyline& polyline, const Polyline& polyline,
@ -193,7 +185,6 @@ struct Intersect_face_polylines
typedef typename boost::property_map<TM, boost::vertex_point_t>::const_type Ppmap; typedef typename boost::property_map<TM, boost::vertex_point_t>::const_type Ppmap;
typedef typename boost::property_traits<Ppmap>::value_type Point; typedef typename boost::property_traits<Ppmap>::value_type Point;
// members // members
const TM& m_tm; const TM& m_tm;
const std::vector<face_descriptor>& faces; const std::vector<face_descriptor>& faces;
@ -205,9 +196,6 @@ struct Intersect_face_polylines
typename Kernel::Construct_triangle_3 triangle_functor; typename Kernel::Construct_triangle_3 triangle_functor;
typename Kernel::Do_intersect_3 do_intersect_3_functor; typename Kernel::Do_intersect_3 do_intersect_3_functor;
Intersect_face_polylines(const TM& tm, Intersect_face_polylines(const TM& tm,
const std::vector<face_descriptor>& faces, const std::vector<face_descriptor>& faces,
const PolylineRange& polylines, const PolylineRange& polylines,
@ -249,8 +237,6 @@ template<class Polyline,
class OutputIterator> class OutputIterator>
struct Intersect_polylines struct Intersect_polylines
{ {
// typedefs // typedefs
typedef typename Kernel::Segment_3 Segment; typedef typename Kernel::Segment_3 Segment;
typedef typename Kernel::Point_3 Point; typedef typename Kernel::Point_3 Point;
@ -264,9 +250,6 @@ struct Intersect_polylines
typename Kernel::Construct_segment_3 segment_functor; typename Kernel::Construct_segment_3 segment_functor;
typename Kernel::Do_intersect_3 do_intersect_3_functor; typename Kernel::Do_intersect_3 do_intersect_3_functor;
Intersect_polylines(const Polyline& polyline1, Intersect_polylines(const Polyline& polyline1,
const Polyline& polyline2, const Polyline& polyline2,
OutputIterator it, OutputIterator it,
@ -299,8 +282,6 @@ template<class PolylineRange,
class OutputIterator> class OutputIterator>
struct Intersect_polyline_ranges struct Intersect_polyline_ranges
{ {
// typedefs // typedefs
typedef typename Kernel::Segment_3 Segment; typedef typename Kernel::Segment_3 Segment;
typedef typename Kernel::Point_3 Point; typedef typename Kernel::Point_3 Point;
@ -314,9 +295,6 @@ struct Intersect_polyline_ranges
typename Kernel::Construct_segment_3 segment_functor; typename Kernel::Construct_segment_3 segment_functor;
typename Kernel::Do_intersect_3 do_intersect_3_functor; typename Kernel::Do_intersect_3 do_intersect_3_functor;
Intersect_polyline_ranges(const PolylineRange& polyline1, Intersect_polyline_ranges(const PolylineRange& polyline1,
const PolylineRange& polyline2, const PolylineRange& polyline2,
OutputIterator it, OutputIterator it,
@ -367,7 +345,7 @@ struct Throw_at_first_output {
* model of `RandomAccessRange`. * model of `RandomAccessRange`.
* \tparam OutputIterator a model of `OutputIterator` holding objects of type * \tparam OutputIterator a model of `OutputIterator` holding objects of type
* `std::pair<boost::graph_traits<TriangleMesh>::%face_descriptor, boost::graph_traits<TriangleMesh>::%face_descriptor>` * `std::pair<boost::graph_traits<TriangleMesh>::%face_descriptor, boost::graph_traits<TriangleMesh>::%face_descriptor>`
* \tparam NamedParameters a sequence of \ref pmp_namedparameters * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param face_range1 the range of faces of `tm1` to check for intersections. * \param face_range1 the range of faces of `tm1` to check for intersections.
* \param face_range2 the range of faces of `tm2` to check for intersections. * \param face_range2 the range of faces of `tm2` to check for intersections.
@ -375,15 +353,29 @@ struct Throw_at_first_output {
* \param tm2 the second triangulated surface mesh. * \param tm2 the second triangulated surface mesh.
* \param out output iterator to be filled with all pairs of faces that intersect. * \param out output iterator to be filled with all pairs of faces that intersect.
* First and second element in the pairs correspond to faces of `tm1` and `tm2` respectively * First and second element in the pairs correspond to faces of `tm1` and `tm2` respectively
* \param np1 optional sequence of \ref pmp_namedparameters for `tm1`, among the ones listed below * \param np1 an optional sequence of \ref pmp_namedparameters for `tm1`, among the ones listed below
* \param np2 optional sequence of \ref pmp_namedparameters for `tm2`, among the ones listed below * \param np2 an optional sequence of \ref pmp_namedparameters for `tm2`, among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm1` (`tm2`)}
* \cgalParamExtra{Both vertex point map must have the same value type}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamExtra{np1 only}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*
* \return `out` * \return `out`
*/ */
template <class TriangleMesh, template <class TriangleMesh,
@ -493,20 +485,31 @@ compute_face_face_intersection(const FaceRange& face_range1,
* elements in their respective range. In the case of the polyline, this position is the index of * elements in their respective range. In the case of the polyline, this position is the index of
* the segment intersecting the face (which is the index of the first point of the * the segment intersecting the face (which is the index of the first point of the
* segment following the range order.) * segment following the range order.)
* \tparam NamedParameters a sequence of \ref pmp_namedparameters * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param face_range the range of faces of `tm` to check for intersections. * \param face_range the range of faces of `tm` to check for intersections.
* \param polyline the polyline to check for intersections. * \param polyline the polyline to check for intersections.
* \param tm the triangulated surface mesh to check for intersections. * \param tm the triangulated surface mesh to check for intersections.
* \param out output iterator to be filled with all pairs of face-segment that intersect * \param out output iterator to be filled with all pairs of face-segment that intersect
* \param np optional sequence of \ref pmp_namedparameters for `tm`, among the ones listed below * \param np an optional sequence of \ref pmp_namedparameters for `tm`, among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*
* \return `out` * \return `out`
*/ */
template <class TriangleMesh, template <class TriangleMesh,
@ -611,19 +614,30 @@ compute_face_polyline_intersection( const FaceRange& face_range,
* `std::pair<std::size_t, std::pair<std::size_t, std::size_t> >`. * `std::pair<std::size_t, std::pair<std::size_t, std::size_t> >`.
* Each pair holds the index of the face and a pair containing the index of the polyline in the range and the index of * Each pair holds the index of the face and a pair containing the index of the polyline in the range and the index of
* the first point of the segment in the polyline. * the first point of the segment in the polyline.
* \tparam NamedParameters a sequence of \ref pmp_namedparameters * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param face_range the range of `tm` faces to check for intersections. * \param face_range the range of `tm` faces to check for intersections.
* \param polyline_range the range of polylines to check for intersections. * \param polyline_range the range of polylines to check for intersections.
* \param tm the triangulated surface mesh to check for intersections. * \param tm the triangulated surface mesh to check for intersections.
* \param out output iterator to be filled with all pairs of face-segment that intersect * \param out output iterator to be filled with all pairs of face-segment that intersect
* \param np optional sequence of \ref pmp_namedparameters for `tm`, among the ones listed below * \param np an optional sequence of \ref pmp_namedparameters for `tm`, among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* \return `out` * \return `out`
*/ */
@ -921,20 +935,33 @@ compute_polylines_polylines_intersection(const PolylineRange& polylines1,
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \tparam OutputIterator a model of `OutputIterator` holding objects of type * \tparam OutputIterator a model of `OutputIterator` holding objects of type
* `std::pair<boost::graph_traits<TriangleMesh>::%face_descriptor, boost::graph_traits<TriangleMesh>::%face_descriptor>` * `std::pair<boost::graph_traits<TriangleMesh>::%face_descriptor, boost::graph_traits<TriangleMesh>::%face_descriptor>`
* \tparam NamedParameters a sequence of \ref pmp_namedparameters * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param tm1 the first triangulated surface mesh to check for intersections * \param tm1 the first triangulated surface mesh to check for intersections
* \param tm2 the second triangulated surface mesh to check for intersections * \param tm2 the second triangulated surface mesh to check for intersections
* \param out output iterator to be filled with all pairs of faces that intersect * \param out output iterator to be filled with all pairs of faces that intersect
* \param np1 optional sequence of \ref pmp_namedparameters for `tm1`, among the ones listed below * \param np1 an optional sequence of \ref pmp_namedparameters for `tm1`, among the ones listed below
* \param np2 optional sequence of \ref pmp_namedparameters for `tm2`, among the ones listed below * \param np2 an optional sequence of \ref pmp_namedparameters for `tm2`, among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm1` (`tm2`)}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamExtra{np1 only}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*
* \return `out` * \return `out`
*/ */
template <class TriangleMesh, template <class TriangleMesh,
@ -971,19 +998,30 @@ compute_face_face_intersection(const TriangleMesh& tm1,
* elements in their respective range. In the case of the polyline, this position is the index * elements in their respective range. In the case of the polyline, this position is the index
* of the segment that holds the intersection, so it is the index of the first point of the * of the segment that holds the intersection, so it is the index of the first point of the
* segment following the range order. * segment following the range order.
* \tparam NamedParameters a sequence of \ref pmp_namedparameters * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* \param tm the triangulated surface mesh to check for intersections. * \param tm the triangulated surface mesh to check for intersections.
* \param polyline the polyline to check for intersections. * \param polyline the polyline to check for intersections.
* \param out output iterator to be filled with all pairs of face-segment that intersect * \param out output iterator to be filled with all pairs of face-segment that intersect
* \param np optional sequence of \ref pmp_namedparameters for `tm`, among the ones listed below * \param np an optional sequence of \ref pmp_namedparameters for `tm`, among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*
* \return `out` * \return `out`
*/ */
template <class TriangleMesh, template <class TriangleMesh,
@ -1176,24 +1214,39 @@ bool do_intersect(const Polyline& polyline1,
* @pre `!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm2)` * @pre `!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm2)`
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`
* @tparam NamedParameters1 a sequence of \ref pmp_namedparameters for `tm1` * @tparam NamedParameters1 a sequence of \ref pmp_namedparameters "Named Parameters" for `tm1`
* @tparam NamedParameters2 a sequence of \ref pmp_namedparameters for `tm2` * @tparam NamedParameters2 a sequence of \ref pmp_namedparameters "Named Parameters" for `tm2`
* *
* @param tm1 the first triangulated surface mesh to check for intersections * @param tm1 the first triangulated surface mesh to check for intersections
* @param tm2 the second triangulated surface mesh to check for intersections * @param tm2 the second triangulated surface mesh to check for intersections
* @param np1 optional sequence of \ref pmp_namedparameters for `tm1`, among the ones listed below * @param np1 an optional sequence of \ref pmp_namedparameters for `tm1`, among the ones listed below
* @param np2 optional sequence of \ref pmp_namedparameters for `tm2`, among the ones listed below * @param np2 an optional sequence of \ref pmp_namedparameters for `tm2`, among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm1` (`tm2`). * \cgalParamNBegin{vertex_point_map}
* \attention The two property maps must have the same `value_type`. * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm1` (`tm2`)}
* \cgalParamExtra{Both vertex point map must have the same value type}
* \cgalParamNEnd
* *
* If this parameter is omitted, an internal property map for * \cgalParamNBegin{geom_traits}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamBegin{do_overlap_test_of_bounded_sides} if set to `true` tests also the overlap of the bounded sides of `tm1` and `tm2`. * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* If `false` (default), only the intersection of surface triangles are tested. * \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamEnd * \cgalParamExtra{np1 only}
* \cgalParamNEnd
*
* \cgalParamNBegin{do_overlap_test_of_bounded_sides}
* \cgalParamDescription{If `true`, also tests the overlap of the bounded sides of `tm1` and `tm2`.
* If `false`, only the intersection of surface triangles is tested.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -1269,13 +1322,23 @@ bool do_intersect(const TriangleMesh& tm1,
* *
* @param tm the triangulated surface mesh to check for intersections * @param tm the triangulated surface mesh to check for intersections
* @param polylines the range of polylines to check for intersections. * @param polylines the range of polylines to check for intersections.
* @param np optional sequence of \ref pmp_namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -1320,17 +1383,27 @@ bool do_intersect(const TriangleMesh& tm,
* \tparam Polyline a `RandomAccessRange` of points. The point type of the range must be the * \tparam Polyline a `RandomAccessRange` of points. The point type of the range must be the
* same as the value type of the vertex point map. * same as the value type of the vertex point map.
* \cgalDescribePolylineType * \cgalDescribePolylineType
* @tparam NamedParameters a sequence of \ref pmp_namedparameters * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tm the triangulated surface mesh to check for intersections * @param tm the triangulated surface mesh to check for intersections
* @param polyline the polyline to check for intersections. * @param polyline the polyline to check for intersections.
* @param np optional sequence of \ref pmp_namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tn`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -1530,31 +1603,41 @@ struct Mesh_callback
* *
* \tparam TriangleMeshRange a model of `RandomAccessRange` of triangulated surface meshes model of `FaceListGraph`. * \tparam TriangleMeshRange a model of `RandomAccessRange` of triangulated surface meshes model of `FaceListGraph`.
* \tparam OutputIterator an output iterator in which `std::pair<std::size_t, std::size_t>` can be put. * \tparam OutputIterator an output iterator in which `std::pair<std::size_t, std::size_t>` can be put.
* \tparam NamedParameters a sequence of \ref pmp_namedparameters for the algorithm * \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" for the algorithm
* \tparam NamedParametersRange a range of named parameters for the meshes. * \tparam NamedParametersRange a range of \ref pmp_namedparameters "Named Parameters" for the meshes.
* *
* \param range the range of triangulated surface meshes to be checked for intersections. * \param range the range of triangulated surface meshes to be checked for intersections.
* \param out output iterator used to collect pairs of intersecting meshes. * \param out output iterator used to collect pairs of intersecting meshes.
* \param np an optional sequence named parameters among the one listed below * \param np an optional sequence named parameters among the one listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits`. * \cgalParamNBegin{geom_traits}
* The default value for `geom_traits` is `CGAL::Kernel_traits<Point>::Kernel`, where `Point` is the * \cgalParamDescription{an instance of a geometric traits class}
* value type of the vertex point map of the meshes. * \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamEnd * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`,
* \cgalParamBegin{do_overlap_test_of_bounded_sides} if set to `true` reports also overlap of bounded sides of meshes. * where `Point` is the value type of the vertex point map of the meshes}
* If `false` (default), only the intersection of surface triangles are tested. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{do_overlap_test_of_bounded_sides}
* \cgalParamDescription{If set to `true` reports also overlap of bounded sides of meshes.
* If `false`, only the intersection of surface triangles are tested.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* \param nps an optional range of `vertex_point_map` named parameters containing the `VertexPointMap` of each mesh in `range`, in the same order. *
* If this parameter is omitted, then an internal property map for `CGAL::vertex_point_t` must be available for every mesh in the range. * \param nps an optional range of named parameters among the one listed below
* All the vertex point maps must be of the same type.
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of a mesh. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of a mesh `tm`}
* `CGAL::vertex_point_t` must be available in the triangle mesh type used in the range * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tm`}
* \cgalParamExtra{All vertex point maps must have the same value type}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
@ -1636,19 +1719,28 @@ OutputIterator intersecting_meshes(const TriangleMeshRange& range,
* @param tm2 second input triangulated surface mesh * @param tm2 second input triangulated surface mesh
* @param polyline_output output iterator of polylines. Each polyline will be * @param polyline_output output iterator of polylines. Each polyline will be
* given as a vector of points * given as a vector of points
* @param np1 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np1 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* @param np2 optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np2 an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* a property map with the points associated to the vertices of `tm1` * \cgalParamDescription{a property map associating points to the vertices of `tm1` (`tm2`)}
* (`tm2`). The two property map types must be the same. * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamBegin{throw_on_self_intersection} if `true`, for each input triangle mesh, * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm1 (tm2))`}
* the set of triangles close to the intersection of `tm1` and `tm2` will be * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* checked for self-intersection and `CGAL::Polygon_mesh_processing::Corefinement::Self_intersection_exception` * should be available for the vertices of `tm1` (`tm2`)}
* will be thrown if at least one is found (`np1` only). * \cgalParamExtra{Both vertex point map must have the same value type}
* \cgalParamEnd * \cgalParamNEnd
*
* \cgalParamNBegin{throw_on_self_intersection}
* \cgalParamDescription{If `true`, the set of triangles closed to the intersection of `tm1` and `tm2` will be
* checked for self-intersections and `Corefinement::Self_intersection_exception`
* will be thrown if at least one self-intersection is found.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamExtra{`np1` only}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */
@ -1688,10 +1780,10 @@ surface_intersection(const TriangleMesh& tm1,
namespace experimental { namespace experimental {
/** /**
* \ingroup PMP_corefinement_grp * \ingroup PMP_corefinement_grp
*
* computes the autointersection of triangles of `tm`. The output is a * computes the autointersection of triangles of `tm`. The output is a
* set of polylines with all vertices but endpoints being of degree 2. * set of polylines with all vertices but endpoints being of degree 2.
* *
*
* @tparam TriangleMesh a model of `HalfedgeListGraph` and `FaceListGraph` * @tparam TriangleMesh a model of `HalfedgeListGraph` and `FaceListGraph`
* @tparam NamedParameters a sequence of \ref namedparameters * @tparam NamedParameters a sequence of \ref namedparameters
* @tparam OutputIterator an output iterator in which `std::vector` of points * @tparam OutputIterator an output iterator in which `std::vector` of points
@ -1701,12 +1793,15 @@ namespace experimental {
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param polyline_output output iterator of polylines. Each polyline will be * @param polyline_output output iterator of polylines. Each polyline will be
* given as a vector of points * given as a vector of points
* @param np optional sequence of \ref namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* a property map with the points associated to the vertices of `tm` * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */

View File

@ -569,15 +569,21 @@ get_descriptor_from_location(const std::pair<typename boost::graph_traits<Triang
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel`. If such traits class is provided, ///
/// its type `FT` must be identical to the template parameter `FT` of this function. /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{a class model of `Kernel`}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamExtra{If such traits class is provided, its type `FT` must be identical
/// to the template parameter `FT` of this function.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \pre `loc.first` is a face descriptor corresponding to a face of `tm`. /// \pre `loc.first` is a face descriptor corresponding to a face of `tm`.
@ -1075,23 +1081,32 @@ locate_on_halfedge(const typename boost::graph_traits<TriangleMesh>::halfedge_de
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel`. If provided, the types `FT` and `Kernel::FT` ///
/// must be identical and the traits class must be compatible with the value type of the vertex point /// \cgalParamNBegin{geom_traits}
/// property map. /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamEnd /// \cgalParamType{a class model of `Kernel`}
/// \cgalParamBegin{snapping_tolerance} /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// a tolerance value used to snap barycentric coordinates. Depending on the geometric traits used, /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// the computation of the barycentric coordinates might be an inexact construction, thus leading /// \cgalParamExtra{If such traits class is provided, its type `FT` must be identical
/// to sometimes surprising values (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle /// to the template parameter `FT` of this function.}
/// of an edge). The coordinates will be snapped towards `0` and `1` if the difference is smaller than the tolerance value, while /// \cgalParamNEnd
/// still ensuring that the total sum of the coordinates is `1`. By default, the tolerance is `0`. ///
/// \cgalParamEnd /// \cgalParamNBegin{snapping_tolerance}
/// \cgalParamDescription{a tolerance value used to snap barycentric coordinates}
/// \cgalParamType{double}
/// \cgalParamDefault{`0`}
/// \cgalParamExtra{Depending on the geometric traits used, the computation of the barycentric coordinates
/// might be an inexact construction, thus leading to sometimes surprising values
/// (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle of an edge).
/// The coordinates will be snapped towards `0` and `1` if the difference is smaller
/// than the tolerance value, while still ensuring that the total sum of the coordinates is `1`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \pre `fd` is not the null face /// \pre `fd` is not the null face
@ -1563,16 +1578,20 @@ void build_AABB_tree(const TriangleMesh& tm,
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel` compatible with the point type held ///
/// in the vertex point property map (either user-provided or internal to the mesh). /// \cgalParamNBegin{geom_traits}
/// Must be identical to the traits used in the template parameter of the `AABB_traits`. /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamEnd /// \cgalParamType{a class model of `Kernel`}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamExtra{Must be identical to the traits used in the template parameter of the `AABB_traits`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
template <typename TriangleMesh, typename Point3VPM, typename NamedParameters> template <typename TriangleMesh, typename Point3VPM, typename NamedParameters>
@ -1626,23 +1645,31 @@ void build_AABB_tree(const TriangleMesh& tm, AABB_tree<AABBTraits>& outTree)
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel` compatible with the point type held ///
/// in the vertex point property map (either user-provided or internal to the mesh). /// \cgalParamNBegin{geom_traits}
/// Must be identical to the traits used in the template parameter of the `AABB_traits`. /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamEnd /// \cgalParamType{a class model of `Kernel`}
/// \cgalParamBegin{snapping_tolerance} /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// a tolerance value used to snap barycentric coordinates. Depending on the geometric traits used, /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// the computation of the barycentric coordinates might be an inexact construction, thus leading /// \cgalParamExtra{Must be identical to the traits used in the template parameter of the `AABB_traits`.}
/// to sometimes surprising values (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle /// \cgalParamNEnd
/// of an edge). The coordinates will be snapped towards `0` and `1` if the difference is smaller than the tolerance value, while ///
/// still ensuring that the total sum of the coordinates is `1`. By default, the tolerance is `0`. /// \cgalParamNBegin{snapping_tolerance}
/// \cgalParamEnd /// \cgalParamDescription{a tolerance value used to snap barycentric coordinates}
/// \cgalParamType{double}
/// \cgalParamDefault{`0`}
/// \cgalParamExtra{Depending on the geometric traits used, the computation of the barycentric coordinates
/// might be an inexact construction, thus leading to sometimes surprising values
/// (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle of an edge).
/// The coordinates will be snapped towards `0` and `1` if the difference is smaller
/// than the tolerance value, while still ensuring that the total sum of the coordinates is `1`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \returns a face location. The type `FT` is deduced from the geometric traits, either provided by /// \returns a face location. The type `FT` is deduced from the geometric traits, either provided by
@ -1722,22 +1749,30 @@ locate_with_AABB_tree(const typename internal::Location_traits<TriangleMesh>::Po
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel` compatible with the point type held ///
/// in the vertex point property map (either user-provided or internal to the mesh). /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamBegin{snapping_tolerance} /// \cgalParamType{a class model of `Kernel`}
/// a tolerance value used to snap barycentric coordinates. Depending on the geometric traits used, /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// the computation of the barycentric coordinates might be an inexact construction, thus leading /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// to sometimes surprising values (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle /// \cgalParamNEnd
/// of an edge). The coordinates will be snapped towards `0` and `1` if the difference is smaller than the tolerance value, while ///
/// still ensuring that the total sum of the coordinates is `1`. By default, the tolerance is `0`. /// \cgalParamNBegin{snapping_tolerance}
/// \cgalParamEnd /// \cgalParamDescription{a tolerance value used to snap barycentric coordinates}
/// \cgalParamType{double}
/// \cgalParamDefault{`0`}
/// \cgalParamExtra{Depending on the geometric traits used, the computation of the barycentric coordinates
/// might be an inexact construction, thus leading to sometimes surprising values
/// (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle of an edge).
/// The coordinates will be snapped towards `0` and `1` if the difference is smaller
/// than the tolerance value, while still ensuring that the total sum of the coordinates is `1`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
template <typename TriangleMesh, typename NamedParameters> template <typename TriangleMesh, typename NamedParameters>
@ -1808,23 +1843,31 @@ locate(const typename property_map_value<TriangleMesh, boost::vertex_point_t>::t
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel` compatible with the point type held ///
/// in the vertex point property map (either user-provided or internal to the mesh). /// \cgalParamNBegin{geom_traits}
/// Must be identical to the traits used in the template parameter of the `AABB_traits`. /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamEnd /// \cgalParamType{a class model of `Kernel`}
/// \cgalParamBegin{snapping_tolerance} /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// a tolerance value used to snap barycentric coordinates. Depending on the geometric traits used, /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// the computation of the barycentric coordinates might be an inexact construction, thus leading /// \cgalParamExtra{Must be identical to the traits used in the template parameter of the `AABB_traits`.}
/// to sometimes surprising values (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle /// \cgalParamNEnd
/// of an edge). The coordinates will be snapped towards `0` and `1` if the difference is smaller than the tolerance value, while ///
/// still ensuring that the total sum of the coordinates is `1`. By default, the tolerance is `0`. /// \cgalParamNBegin{snapping_tolerance}
/// \cgalParamEnd /// \cgalParamDescription{a tolerance value used to snap barycentric coordinates}
/// \cgalParamType{double}
/// \cgalParamDefault{`0`}
/// \cgalParamExtra{Depending on the geometric traits used, the computation of the barycentric coordinates
/// might be an inexact construction, thus leading to sometimes surprising values
/// (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle of an edge).
/// The coordinates will be snapped towards `0` and `1` if the difference is smaller
/// than the tolerance value, while still ensuring that the total sum of the coordinates is `1`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \pre `ray` is an object with the same ambient dimension as the point type (the value type of the vertex point map). /// \pre `ray` is an object with the same ambient dimension as the point type (the value type of the vertex point map).
@ -1943,22 +1986,30 @@ locate_with_AABB_tree(const typename internal::Location_traits<TriangleMesh>::Ra
/// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below: /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below:
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `tm`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `boost::vertex_point_t` must be available in `TriangleMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} /// \cgalParamNEnd
/// a geometric traits class instance, model of `Kernel` compatible with the point type held ///
/// in the vertex point property map (either user-provided or internal to the mesh). /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamBegin{snapping_tolerance} /// \cgalParamType{a class model of `Kernel`}
/// a tolerance value used to snap barycentric coordinates. Depending on the geometric traits used, /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// the computation of the barycentric coordinates might be an inexact construction, thus leading /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// to sometimes surprising values (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle /// \cgalParamNEnd
/// of an edge). The coordinates will be snapped towards `0` and `1` if the difference is smaller than the tolerance value, while ///
/// still ensuring that the total sum of the coordinates is `1`. By default, the tolerance is `0`. /// \cgalParamNBegin{snapping_tolerance}
/// \cgalParamEnd /// \cgalParamDescription{a tolerance value used to snap barycentric coordinates}
/// \cgalParamType{double}
/// \cgalParamDefault{`0`}
/// \cgalParamExtra{Depending on the geometric traits used, the computation of the barycentric coordinates
/// might be an inexact construction, thus leading to sometimes surprising values
/// (e.g. a triplet `[0.5, 0.5, -1-e17]` for a point at the middle of an edge).
/// The coordinates will be snapped towards `0` and `1` if the difference is smaller
/// than the tolerance value, while still ensuring that the total sum of the coordinates is `1`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \pre `ray` is an object with the same ambient dimension as the point type (the value type of the vertex point map). /// \pre `ray` is an object with the same ambient dimension as the point type (the value type of the vertex point map).

View File

@ -60,13 +60,22 @@ namespace Polygon_mesh_processing {
* *
* @param h one halfedge of the edge to compute the length * @param h one halfedge of the edge to compute the length
* @param pmesh the polygon mesh to which `h` belongs * @param pmesh the polygon mesh to which `h` belongs
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the length of `h`. The return type `FT` is a number type. It is * @return the length of `h`. The return type `FT` is a number type. It is
@ -140,13 +149,22 @@ edge_length(typename boost::graph_traits<PolygonMesh>::edge_descriptor e,
* *
* @param h a halfedge of the border polyline of which the length is computed * @param h a halfedge of the border polyline of which the length is computed
* @param pmesh the polygon mesh to which `h` belongs * @param pmesh the polygon mesh to which `h` belongs
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the length of the sequence of border edges of `face(h, pmesh)`. * @return the length of the sequence of border edges of `face(h, pmesh)`.
@ -201,13 +219,22 @@ face_border_length(typename boost::graph_traits<PolygonMesh>::halfedge_descripto
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param pmesh the polygon mesh * @param pmesh the polygon mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return a pair composed of two members: * @return a pair composed of two members:
@ -282,13 +309,22 @@ longest_border(const PolygonMesh& pmesh)
* *
* @param f the face of which the area is computed * @param f the face of which the area is computed
* @param tmesh the triangulated surface mesh to which `f` belongs * @param tmesh the triangulated surface mesh to which `f` belongs
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @pre `f != boost::graph_traits<TriangleMesh>::%null_face()` * @pre `f != boost::graph_traits<TriangleMesh>::%null_face()`
@ -356,13 +392,22 @@ face_area(typename boost::graph_traits<TriangleMesh>::face_descriptor f,
* *
* @param face_range the range of faces of which the area is computed * @param face_range the range of faces of which the area is computed
* @param tmesh the triangulated surface mesh to which the faces of `face_range` belong * @param tmesh the triangulated surface mesh to which the faces of `face_range` belong
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel` \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return sum of face areas of `faces`. * @return sum of face areas of `faces`.
@ -416,13 +461,22 @@ area(FaceRange face_range, const TriangleMesh& tmesh)
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tmesh the triangulated surface mesh * @param tmesh the triangulated surface mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits}an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the surface area of `tmesh`. * @return the surface area of `tmesh`.
@ -466,15 +520,24 @@ area(const TriangleMesh& tmesh)
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tmesh the closed triangulated surface mesh bounding the volume * @param tmesh the closed triangulated surface mesh bounding the volume
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `tmesh` is closed * @pre `tmesh` is closed
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the volume bounded by `tmesh`. * @return the volume bounded by `tmesh`.
@ -539,13 +602,22 @@ volume(const TriangleMesh& tmesh)
* *
* @param f the face of which the aspect ratio is computed * @param f the face of which the aspect ratio is computed
* @param tmesh the triangulated surface mesh to which `f` belongs * @param tmesh the triangulated surface mesh to which `f` belongs
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @pre `f != boost::graph_traits<TriangleMesh>::%null_face()` * @pre `f != boost::graph_traits<TriangleMesh>::%null_face()`
@ -649,15 +721,24 @@ face_aspect_ratio(typename boost::graph_traits<TriangleMesh>::face_descriptor f,
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tmesh the closed triangulated surface mesh bounding the volume * @param tmesh the closed triangulated surface mesh bounding the volume
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `tmesh` is closed * @pre `tmesh` is closed
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return the centroid of the domain bounded by `tmesh`. * @return the centroid of the domain bounded by `tmesh`.

View File

@ -9,6 +9,7 @@
// //
// //
// Author(s) : Sebastien Loriot // Author(s) : Sebastien Loriot
// Mael Rouxel-Labbé
#ifndef CGAL_POLYGON_MESH_PROCESSING_MERGE_BORDER_VERTICES_H #ifndef CGAL_POLYGON_MESH_PROCESSING_MERGE_BORDER_VERTICES_H
#define CGAL_POLYGON_MESH_PROCESSING_MERGE_BORDER_VERTICES_H #define CGAL_POLYGON_MESH_PROCESSING_MERGE_BORDER_VERTICES_H
@ -265,14 +266,15 @@ void merge_vertices_in_range(const HalfedgeRange& sorted_hedges,
/// ///
/// @param h a halfedge that belongs to a boundary cycle. /// @param h a halfedge that belongs to a boundary cycle.
/// @param pm the polygon mesh which contains the boundary cycle. /// @param pm the polygon mesh which contains the boundary cycle.
/// @param np optional parameter of \ref pmp_namedparameters "Named Parameters" listed below. /// @param np an optional parameter of \ref pmp_namedparameters "Named Parameters" listed below.
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `pm`. /// \cgalParamDescription{a property map associating points to the vertices of `pm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `PolygonMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, pm)`}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
template <class PolygonMesh, class NamedParameter> template <class PolygonMesh, class NamedParameter>
void merge_duplicated_vertices_in_boundary_cycle( void merge_duplicated_vertices_in_boundary_cycle(
@ -318,14 +320,15 @@ void merge_duplicated_vertices_in_boundary_cycle(
/// @tparam NamedParameter a sequence of \ref pmp_namedparameters "Named Parameters". /// @tparam NamedParameter a sequence of \ref pmp_namedparameters "Named Parameters".
/// ///
/// @param pm the polygon mesh which contains the cycles. /// @param pm the polygon mesh which contains the cycles.
/// @param np optional parameter of \ref pmp_namedparameters "Named Parameters" listed below. /// @param np an optional parameter of \ref pmp_namedparameters "Named Parameters" listed below.
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `pm`. /// \cgalParamDescription{a property map associating points to the vertices of `pm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `PolygonMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, pm)`}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \sa `merge_duplicated_vertices_in_boundary_cycle()` /// \sa `merge_duplicated_vertices_in_boundary_cycle()`

View File

@ -154,14 +154,22 @@ namespace internal{
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param pmesh the closed polygon mesh to be tested * @param pmesh the closed polygon mesh to be tested
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh` * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \note This function is only doing an orientation test for one connected component of `pmesh`. * \note This function is only doing an orientation test for one connected component of `pmesh`.
@ -361,22 +369,36 @@ void reverse_face_orientations(const FaceRange& face_range, PolygonMesh& pmesh)
* @tparam NamedParameters a sequence of \ref pmp_namedparameters * @tparam NamedParameters a sequence of \ref pmp_namedparameters
* *
* @param tm a closed triangulated surface mesh * @param tm a closed triangulated surface mesh
* @param np optional sequence of \ref pmp_namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters among the ones listed below
* *
* \pre `CGAL::is_closed(tm)` * \pre `CGAL::is_closed(tm)`
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing the index of each face of `tm`. *
* \cgalParamEnd * \cgalParamNBegin{geom_traits}
* \cgalParamBegin{outward_orientation} * \cgalParamDescription{an instance of a geometric traits class}
* if set to `true` (default) indicates that each connected component will be outward oriented, * \cgalParamType{a class model of `Kernel`}
* (inward oriented if `false`). * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_index_map}
* \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{outward_orientation}
* \cgalParamDescription{If `true`, each connected component will be outward oriented (and inward oriented if `false`).}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamEnd * \cgalParamEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
@ -663,90 +685,125 @@ void set_cc_intersecting_pairs(
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`
* @tparam VolumeFaceIndexMap a model of `WritablePropertyMap` with * @tparam VolumeFaceIndexMap a model of `WritablePropertyMap` with
* `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and * `boost::graph_traits<TriangleMesh>::%face_descriptor` as key type and
* `boost::graph_traits<PolygonMesh>::%faces_size_type` as value type. * `boost::graph_traits<TriangleMesh>::%faces_size_type` as value type.
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tm the input triangle mesh * @param tm the input triangle mesh
* @param volume_id_map the property map filled by this function with indices of volume components associated to the faces of `tm` * @param volume_id_map the property map filled by this function with indices of volume components associated to the faces of `tm`
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `CGAL::is_closed(tm)` * @pre `CGAL::is_closed(tm)`
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing a unique id per face of `tm`, in the range `[0, num_faces(tm)[` *
* \cgalParamEnd * \cgalParamNBegin{geom_traits}
* \cgalParamBegin{face_connected_component_map} * \cgalParamDescription{an instance of a geometric traits class}
* a property map filled by this function and that will contain for each face the id * \cgalParamType{a class model of `Kernel`}
* of its surface component in the range `[0, number of surface components - 1[` * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamEnd * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamBegin{volume_inclusions} * \cgalParamNEnd
* a `reference_wrapper` (either from `boost` or the standard library) containing *
* a reference to an object that must be a model of the `BackInsertionSequence` concept, * \cgalParamNBegin{face_index_map}
* with a value type being a model of `BackInsertionSequence` of `std::size_t`, * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* both types having the functions `reserve()` and `push_back()`. * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* The size of the container is exactly the number of surface components of `tm`. * as key type and `std::size_t` as value type}
* The container at position `k` contains the ids of all the * \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_connected_component_map}
* \cgalParamDescription{a property map filled by this function and that will contain for each face the id
* of its surface component in the range `[0, number of surface components - 1[`}
* \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{volume_inclusions}
* \cgalParamDescription{a container, which contains at position `k` the ids of all the
* surface components that are the first intersected by any ray with source on * surface components that are the first intersected by any ray with source on
* the surface component `k` and directed outside the volume enclosed by the * the surface component `k` and directed outside the volume enclosed by the
* surface component `k`. There is only one such id but when some surface components intersect. * surface component `k`. There is only one such id but when some surface components intersect.
* \cgalParamEnd * The size of the container is exactly the number of surface components of `tm`.}
* \cgalParamBegin{do_orientation_tests} * \cgalParamType{a `reference_wrapper` (either from `boost` or the standard library) containing
* if `true` (the default value), the orientation of the faces of * a reference to an object that must be a model of the `BackInsertionSequence` concept,
* each surface components will be taken into account for the definition of the volume. * with a value type being a model of `BackInsertionSequence` of `std::size_t`,
* If `false`, the face orientation is ignored and the volumes are defined only by the * both types having the functions `reserve()` and `push_back()`}
* nesting of surface components. * \cgalParamDefault{unused}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{error_codes} *
* a `reference_wrapper` (either from `boost` or the standard library) containing * \cgalParamNBegin{do_orientation_tests}
* a reference to a container that must be a model of the `BackInsertionSequence` concept, * \cgalParamDescription{If `true`, the orientation of the faces of each surface components
* with a `value_type` being \link PMP_orientation_grp `Volume_error_code` \endlink * will be taken into account for the definition of the volume.
* The size of the container is exactly the number of volume components. * If `false`, the face orientation is ignored and the volumes are defined
* The container indicates the status of a volume assigned to a set of faces. * only by the nesting of surface components.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
*
* \cgalParamNBegin{error_codes}
* \cgalParamDescription{a container which indicates the status of a volume assigned to a set of faces.
* The description of the value type is given in the documentation of the enumeration type. * The description of the value type is given in the documentation of the enumeration type.
* \cgalParamEnd * The size of the container is exactly the number of volume components.}
* \cgalParamBegin{do_self_intersection_tests} * \cgalParamType{a `reference_wrapper` (either from `boost` or the standard library) containing
* If `false` (the default value), it is assumed that `tm` does not contains any self-intersections.
* if `true`, the input might contain some self-intersections and a test is done
* prior to the volume decomposition.
* \cgalParamEnd
* \cgalParamBegin{connected_component_id_to_volume_id}
* a `reference_wrapper` (either from `boost` or the standard library) containing
* a reference to a container that must be a model of the `BackInsertionSequence` concept, * a reference to a container that must be a model of the `BackInsertionSequence` concept,
* with a value_type being `std::size_t`. * with value type \link PMP_orientation_grp `Volume_error_code` \endlink}
* The size of the container is exactly the number of connected components. * \cgalParamDefault{unused}
* For each connected component identified using its id `ccid`, the id of the volume it contributes * \cgalParamNEnd
* to describe is the value at the position `ccid` in the container. *
* \cgalParamEnd * \cgalParamNBegin{do_self_intersection_tests}
* \cgalParamBegin{nesting_levels} * \cgalParamDescription{If `false`, it is assumed that `tm` does not contains any self-intersections.
* a `reference_wrapper` (either from `boost` or the standard library) containing * If `true`, the input might contain some self-intersections and a test is done prior to the volume decomposition.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
*
* \cgalParamNBegin{connected_component_id_to_volume_id}
* \cgalParamDescription{For each connected component identified using its id `ccid`, the id
* of the volume it contributes to describe is the value at the position
* `ccid` in the container. The size of the container is exactly the number
* of connected components.}
* \cgalParamType{a `reference_wrapper` (either from `boost` or the standard library) containing
* a reference to a container that must be a model of the `BackInsertionSequence` concept, * a reference to a container that must be a model of the `BackInsertionSequence` concept,
* with a `value_type` being `std::size_t`. * with value type `std::size_t`}
* The size of the container is exactly the number of connected components. * \cgalParamDefault{unused}
* For each connected component identified using its id `ccid`, the container contains the number of * \cgalParamNEnd
*
*
* \cgalParamNBegin{nesting_levels}
* \cgalParamDescription{For each connected component identified using its id `ccid`, the container contains the number of
* connected components containing on its bounded side this component. * connected components containing on its bounded side this component.
* \cgalParamEnd * The size of the container is exactly the number of connected components.}
* \cgalParamBegin{is_cc_outward_oriented} * \cgalParamType{a `reference_wrapper` (either from `boost` or the standard library) containing
* a `reference_wrapper` (either from `boost` or the standard library) containing
* a reference to a container that must be a model of the `BackInsertionSequence` concept, * a reference to a container that must be a model of the `BackInsertionSequence` concept,
* with a `value_type` being `bool`. * with value type `std::size_t`}
* The size of the container is exactly the number of connected components. * \cgalParamDefault{unused}
* For each connected component identified using its id `ccid`, the output of `is_outward_oriented()` * \cgalParamNEnd
*
* \cgalParamNBegin{is_cc_outward_oriented}
* \cgalParamDescription{For each connected component identified using its id `ccid`, the output of `is_outward_oriented()`
* called on the triangle mesh corresponding to this connected component * called on the triangle mesh corresponding to this connected component
* is the value at the position `ccid` in the container. * is the value at the position `ccid` in the container.
* \cgalParamEnd * The size of the container is exactly the number of connected components.}
* \cgalParamBegin{intersecting_volume_pairs_output_iterator} * \cgalParamType{a `reference_wrapper` (either from `boost` or the standard library) containing
* Output iterator into which pairs of ids (id must be convertible to `std::size_t`) can be put. * a reference to a container that must be a model of the `BackInsertionSequence` concept,
* Each pair of connected components intersecting will be reported using their ids. * with value type `bool`}
* If `do_self_intersection_tests` named parameter is set to `false`, nothing will be reported. * \cgalParamDefault{unused}
* \cgalParamEnd * \cgalParamNEnd
* *
* \cgalParamNBegin{intersecting_volume_pairs_output_iterator}
* \cgalParamDescription{Output iterator into which pairs of ids (id must be convertible to `std::size_t`) can be put.
* Each pair of connected components intersecting will be reported using their ids.
* If `do_self_intersection_tests` named parameter is set to `false`, nothing will be reported.}
* \cgalParamType{a model of `OutputIterator`}
* \cgalParamDefault{unused}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \return the number of volume components defined by `tm` * \return the number of volume components defined by `tm`
@ -1179,27 +1236,35 @@ volume_connected_components(const TriangleMesh& tm,
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tm a closed triangulated surface mesh * @param tm a closed triangulated surface mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `CGAL::is_closed(tm)` * @pre `CGAL::is_closed(tm)`
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing the index of each face of `tm`. *
* \cgalParamEnd * \cgalParamNBegin{face_index_map}
* \cgalParamBegin{is_cc_outward_oriented} * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* a `reference_wrapper` (either from `boost` or the standard library) containing * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* a reference to an object of type `std::vector<bool>`. * as key type and `std::size_t` as value type}
* The size of the vector is exactly the number of connected components. * \cgalParamDefault{an automatically indexed internal map}
* For each connected component identified using its id `ccid`, the output of `is_outward_oriented` * \cgalParamNEnd
* called on the submesh corresponding to this connected component *
* is the value at the position `ccid` in the parameter vector. * \cgalParamNBegin{is_cc_outward_oriented}
* \cgalParamEnd * \cgalParamDescription{For each connected component identified using its id `ccid`, the output of `is_outward_oriented()`
* called on the triangle mesh corresponding to this connected component
* is the value at the position `ccid` in the container.
* The size of the container is exactly the number of connected components.}
* \cgalParamType{a `reference_wrapper` (either from `boost` or the standard library) containing
* a reference to a container that must be a model of the `BackInsertionSequence` concept,
* with value type `bool`}
* \cgalParamDefault{unused}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \see `CGAL::Polygon_mesh_processing::orient_to_bound_a_volume()` * \see `CGAL::Polygon_mesh_processing::orient_to_bound_a_volume()`
@ -1246,23 +1311,31 @@ std::size_t volume_connected_components(const TriangleMesh& tm, VolumeFaceIndexM
* @tparam NamedParameters a sequence of \ref pmp_namedparameters * @tparam NamedParameters a sequence of \ref pmp_namedparameters
* *
* @param tm a closed triangulated surface mesh * @param tm a closed triangulated surface mesh
* @param np optional sequence of \ref pmp_namedparameters among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters among the ones listed below
* *
* @pre `CGAL::is_closed(tm)` * @pre `CGAL::is_closed(tm)`
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing the index of each face of `tm`. *
* \cgalParamEnd * \cgalParamNBegin{face_index_map}
* \cgalParamBegin{outward_orientation} * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* if set to `true` (default) the outer connected components will be outward oriented (inward oriented if set to `false`). * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* If the outer connected components are inward oriented, it means that the infinity will be considered * as key type and `std::size_t` as value type}
* as part of the volume bounded by `tm`. * \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{outward_orientation}
* \cgalParamDescription{If `true`, each connected component will be outward oriented (and inward oriented if `false`).}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamExtra{If the outer connected components are inward oriented,
* it means that the infinity will be considered as part of the volume bounded by `tm`.}
* \cgalParamEnd * \cgalParamEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *

View File

@ -44,14 +44,15 @@ namespace Polygon_mesh_processing {
/// \param mesh the mesh whose faces are being put in the polygon soup /// \param mesh the mesh whose faces are being put in the polygon soup
/// \param points points making the polygons of the soup /// \param points points making the polygons of the soup
/// \param polygons each element in the vector describes a polygon using the indices of the points in `points` /// \param polygons each element in the vector describes a polygon using the indices of the points in `points`
/// \param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// a model of `ReadablePropertyMap`, the property map with the points associated to the vertices of `mesh`. /// \cgalParamDescription{a property map associating points to the vertices of `mesh`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` must be available in `PolygonMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, mesh)`}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \cgalAdvancedBegin /// \cgalAdvancedBegin

View File

@ -227,20 +227,23 @@ bool is_polygon_soup_a_polygon_mesh(const PolygonRange& polygons)
* @param np_ps optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_ps optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{point_map} * \cgalParamNBegin{point_map}
* a model of `ReadablePropertyMap` whose value type is a point type convertible to the point type * \cgalParamDescription{a property map associating points to the elements of the range `points`}
* of the vertex point map associated to the polygon mesh. If this parameter is omitted, `CGAL::Identity_property_map` is used. * \cgalParamType{a model of `ReadablePropertyMap` whose value type is a point type convertible to the point type
* \cgalParamEnd * of the vertex point map associated to the polygon mesh}
* \cgalParamDefault{`CGAL::Identity_property_map`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @param np_pm optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np_pm optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* a model of `WritablePropertyMap`, the property map with the points associated to the vertices of `out`. * \cgalParamDescription{a property map associating points to the vertices of `out`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* `CGAL::vertex_point_t` must be available in `PolygonMesh`. * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, out)`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* \sa `CGAL::Polygon_mesh_processing::orient_polygon_soup()` * \sa `CGAL::Polygon_mesh_processing::orient_polygon_soup()`

View File

@ -112,24 +112,43 @@ namespace internal {
* @param tmesh the triangulated surface mesh * @param tmesh the triangulated surface mesh
* @param perturbation_max_size the maximal length of moves that can be applied to * @param perturbation_max_size the maximal length of moves that can be applied to
* vertices of `tmesh`. * vertices of `tmesh`.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{geom_traits} a geometric traits class instance, model of `Kernel`. * \cgalParamNBegin{vertex_point_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* \cgalParamBegin{vertex_point_map} the property map with the points associated * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* to the vertices of `tmesh`. Instance of a class model of `ReadWritePropertyMap`. * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* \cgalParamBegin{vertex_is_constrained_map} a property map containing the * \cgalParamNEnd
* constrained-or-not status of each vertex of `tmesh`. A constrained vertex *
* cannot be modified at all during perturbation * \cgalParamNBegin{geom_traits}
* \cgalParamEnd * \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamBegin{do_project} a boolean that sets whether vertices are reprojected * \cgalParamType{a class model of `Kernel`}
* on the input surface after their coordinates random perturbation * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamEnd * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamBegin{random_seed} a non-negative integer value to seed the random * \cgalParamNEnd
number generator, and make the perturbation deterministic *
* \cgalParamEnd * \cgalParamNBegin{vertex_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each vertex of `tmesh`}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `bool` as value type. It must be default constructible.}
* \cgalParamDefault{a default property map where no vertex is constrained}
* \cgalParamExtra{A constrained vertex cannot be modified at all during perturbation}
* \cgalParamNEnd
*
* \cgalParamNBegin{do_project}
* \cgalParamDescription{indicates whether vertices are reprojected on the input surface
* after their coordinates random perturbation}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
*
* \cgalParamNBegin{random_seed}
* \cgalParamDescription{a value to seed the random number generator, and make the perturbation deterministic}
* \cgalParamType{unsigned int}
* \cgalParamDefault{`unsigned int(-1)`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */

View File

@ -42,19 +42,25 @@ namespace Polygon_mesh_processing {
@param faces the range of faces defining the patches to refine @param faces the range of faces defining the patches to refine
@param faces_out output iterator into which descriptors of new faces are recorded @param faces_out output iterator into which descriptors of new faces are recorded
@param vertices_out output iterator into which descriptors of new vertices are recorded @param vertices_out output iterator into which descriptors of new vertices are recorded
@param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tmesh` \cgalParamNBegin{vertex_point_map}
Instance of a class model of `ReadWritePropertyMap`. \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
If this parameter is omitted, an internal property map for \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
`CGAL::vertex_point_t` must be available in `TriangleMesh` as key type and `%Point_3` as value type}
\cgalParamEnd \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
\cgalParamBegin{density_control_factor} factor to control density of the output mesh, \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
where larger values lead to denser refinements. must be available in `TriangleMesh`}
The density of vertices of `faces_out` is this factor times higher than the vertices of `faces.` \cgalParamEnd \cgalParamNEnd
\cgalNamedParamsEnd
\cgalParamNBegin{density_control_factor}
\cgalParamDescription{a factor to control density of the output mesh, where larger values lead to denser refinements.}
\cgalParamType{double}
\cgalParamDefault{\f$ \sqrt{2}\f$}
\cgalParamExtra{The density of vertices of `faces_out` is this factor times higher than the vertices of `faces`.}
\cgalParamNEnd
\cgalNamedParamsEnd
@return pair of `faces_out` and `vertices_out` @return pair of `faces_out` and `vertices_out`

View File

@ -41,7 +41,6 @@ namespace Polygon_mesh_processing {
* The descriptor types `boost::graph_traits<PolygonMesh>::%face_descriptor` * The descriptor types `boost::graph_traits<PolygonMesh>::%face_descriptor`
* and `boost::graph_traits<PolygonMesh>::%halfedge_descriptor` must be * and `boost::graph_traits<PolygonMesh>::%halfedge_descriptor` must be
* models of `Hashable`. * models of `Hashable`.
*
* @tparam FaceRange range of `boost::graph_traits<PolygonMesh>::%face_descriptor`, * @tparam FaceRange range of `boost::graph_traits<PolygonMesh>::%face_descriptor`,
model of `Range`. Its iterator type is `ForwardIterator`. model of `Range`. Its iterator type is `ForwardIterator`.
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
@ -50,66 +49,114 @@ namespace Polygon_mesh_processing {
* @param faces the range of triangular faces defining one or several surface patches to be remeshed * @param faces the range of triangular faces defining one or several surface patches to be remeshed
* @param target_edge_length the edge length that is targeted in the remeshed patch. * @param target_edge_length the edge length that is targeted in the remeshed patch.
* If `0` is passed then only the edge-flip, tangential relaxation, and projection steps will be done. * If `0` is passed then only the edge-flip, tangential relaxation, and projection steps will be done.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* @pre if constraints protection is activated, the constrained edges must * @pre if constraints protection is activated, the constrained edges must
* not be longer than 4/3*`target_edge_length` * not be longer than 4/3*`target_edge_length`
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{geom_traits} a geometric traits class instance, model of `Kernel`. * \cgalParamNBegin{vertex_point_map}
* Exact constructions kernels are not supported by this function. * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* \cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{vertex_point_map} the property map with the points associated * as key type and `%Point_3` as value type}
* to the vertices of `pmesh`. Instance of a class model of `ReadWritePropertyMap`. * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` *
* \cgalParamEnd * \cgalParamNBegin{geom_traits}
* \cgalParamBegin{number_of_iterations} the number of iterations for the * \cgalParamDescription{an instance of a geometric traits class}
* sequence of atomic operations performed (listed in the above description) * \cgalParamType{a class model of `Kernel`}
* \cgalParamEnd * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* constrained-or-not status of each edge of `pmesh`. A constrained edge can be split * \cgalParamExtra{Exact constructions kernels are not supported by this function.}
* or collapsed, but not flipped, nor its endpoints moved by smoothing. * \cgalParamNEnd
* Sub-edges generated by splitting are set to be constrained. *
* Note that patch boundary edges (i.e. incident to only one face in the range) * \cgalParamNBegin{face_index_map}
* are always considered as constrained edges. * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamEnd * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
* \cgalParamBegin{vertex_is_constrained_map} a property map containing the * as key type and `std::size_t` as value type}
* constrained-or-not status of each vertex of `pmesh`. A constrained vertex * \cgalParamDefault{an automatically indexed internal map}
* cannot be modified at all during remeshing * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{protect_constraints} If `true`, the edges set as constrained * \cgalParamNBegin{number_of_iterations}
* in `edge_is_constrained_map` (or by default the boundary edges) * \cgalParamDescription{the number of iterations for the sequence of atomic operations performed (listed in the above description)}
* are not split nor collapsed during remeshing. * \cgalParamType{unsigned int}
* Note that around constrained edges that have their length higher than * \cgalParamDefault{`1`}
* twice `target_edge_length`, remeshing will fail to provide * \cgalParamNEnd
* good quality results. It can even fail to terminate because of cascading vertex *
* insertions. * \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamEnd * \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamBegin{collapse_constraints} If `true`, the edges set as constrained * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* in `edge_is_constrained_map` (or by default the boundary edges) * as key type and `bool` as value type. It must be default constructible.}
* are collapsed during remeshing. This value is ignored if `protect_constraints` is true; * \cgalParamDefault{a default property map where no edge is constrained}
* \cgalParamEnd * \cgalParamExtra{A constrained edge can be split or collapsed, but not flipped, nor its endpoints moved by smoothing.}
* \cgalParamBegin{face_patch_map} a property map with the patch id's associated to the * \cgalParamExtra{Sub-edges generated by splitting are set to be constrained.}
faces of `faces`. Instance of a class model of `ReadWritePropertyMap`. It gets * \cgalParamExtra{Patch boundary edges (i.e. incident to only one face in the range) are always considered as constrained edges.}
updated during the remeshing process while new faces are created. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{number_of_relaxation_steps} the number of iterations of tangential * \cgalParamNBegin{vertex_is_constrained_map}
* relaxation that are performed at each iteration of the remeshing process * \cgalParamDescription{a property map containing the constrained-or-not status of each vertex of `pmesh`.}
* \cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{relax_constraints} If `true`, the end vertices of the edges set as * as key type and `bool` as value type. It must be default constructible.}
* constrained in `edge_is_constrained_map` and boundary edges move along the * \cgalParamDefault{a default property map where no vertex is constrained}
* constrained polylines they belong to. * \cgalParamExtra{A constrained vertex cannot be modified during remeshing.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{do_project} a boolean that sets whether vertices should be reprojected *
* on the input surface after creation or displacement. * \cgalParamNBegin{protect_constraints}
* \cgalParamEnd * \cgalParamDescription{If `true`, the edges set as constrained in `edge_is_constrained_map`
* \cgalParamBegin{projection_functor} * (or by default the boundary edges) are not split nor collapsed during remeshing.}
* A function object used to project input vertices (moved by the smoothing) and created vertices. * \cgalParamType{Boolean}
* It must have `%Point_3 operator()(vertex_descriptor)`, `%Point_3` being the value type * \cgalParamDefault{`false`}
* of the vertex point map. * \cgalParamExtra{Note that around constrained edges that have their length higher than
* If not provided, vertices are projected on the input surface mesh. * twice `target_edge_length`, remeshing will fail to provide good quality results.
* \cgalParamEnd * It can even fail to terminate because of cascading vertex insertions.}
* \cgalParamNEnd
*
* \cgalParamNBegin{collapse_constraints}
* \cgalParamDescription{If `true`, the edges set as constrained in `edge_is_constrained_map`
* (or by default the boundary edges) are collapsed during remeshing.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamExtra{This value is ignored if `protect_constraints` is `true`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{face_patch_map}
* \cgalParamDescription{a property map with the patch id's associated to the faces of `faces`}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and the desired property, model of `CopyConstructible` as value type.}
* \cgalParamDefault{a default property map where each face is associated with the ID of
* the connected component it belongs to. Connected components are
* computed with respect to the constrained edges listed in the property map
* `edge_is_constrained_map`}
* \cgalParamExtra{The map is updated during the remeshing process while new faces are created.}
* \cgalParamNEnd
*
* \cgalParamNBegin{number_of_relaxation_steps}
* \cgalParamDescription{the number of iterations of tangential relaxation that are performed
* at each iteration of the remeshing process}
* \cgalParamType{unsigned int}
* \cgalParamDefault{`1`}
* \cgalParamNEnd
*
* \cgalParamNBegin{relax_constraints}
* \cgalParamDescription{If `true`, the end vertices of the edges set as constrained
* in `edge_is_constrained_map` and boundary edges move along the}
* constrained polylines they belong to.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
*
* \cgalParamNBegin{do_project}
* \cgalParamDescription{whether vertices should be reprojected on the input surface after creation or displacement}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
*
* \cgalParamNBegin{projection_functor}
* \cgalParamDescription{A function object used to project input vertices (moved by the smoothing) and created vertices}
* \cgalParamType{Unary functor that provides `%Point_3 operator()(vertex_descriptor)`, `%Point_3` being the value type
* of the vertex point map.}
* \cgalParamDefault{If not provided, vertices are projected on the input surface mesh.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @sa `split_long_edges()` * @sa `split_long_edges()`
@ -298,18 +345,30 @@ void isotropic_remeshing(
* @param edges the range of edges to be split if they are longer than given threshold * @param edges the range of edges to be split if they are longer than given threshold
* @param max_length the edge length above which an edge from `edges` is split * @param max_length the edge length above which an edge from `edges` is split
* into to sub-edges * into to sub-edges
* @param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below * @param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated * \cgalParamNBegin{vertex_point_map}
* to the vertices of `pmesh`. Instance of a class model of `ReadWritePropertyMap`. * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* \cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `pmesh` * as key type and `%Point_3` as value type}
* \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamBegin{edge_is_constrained_map} a property map containing the * \cgalParamNEnd
* constrained-or-not status of each edge of `pmesh`. A constrained edge can be split, *
* and the sub-edges are set to be constrained. * \cgalParamNBegin{face_index_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
* \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and `std::size_t` as value type}
* \cgalParamDefault{an automatically indexed internal map}
* \cgalParamNEnd
*
* \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `pmesh`}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type. It must be default constructible.}
* \cgalParamDefault{a default property map where no edge is constrained}
* \cgalParamExtra{A constrained edge can be split or collapsed, but not flipped, nor its endpoints moved by smoothing.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @sa `isotropic_remeshing()` * @sa `isotropic_remeshing()`

View File

@ -115,22 +115,74 @@ std::size_t remove_isolated_vertices(PolygonMesh& pmesh)
/// \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" /// \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
/// ///
/// \param tmesh the triangulated polygon mesh /// \param tmesh the triangulated polygon mesh
/// \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below /// \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{area_threshold} a fixed value such that only connected components whose area is /// \cgalParamNBegin{vertex_point_map}
/// larger than this value are kept \cgalParamEnd /// \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
/// \cgalParamBegin{volume_threshold} a fixed value such that only connected components whose volume is /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// larger than this value are kept (only applies to closed connected components) \cgalParamEnd /// as key type and `%Point_3` as value type}
/// \cgalParamBegin{edge_is_constrained_map} a property map containing the constrained-or-not status of each edge of `pmesh` \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
/// \cgalParamBegin{face_index_map} a property map containing the index of each face of `tmesh` \cgalParamEnd /// \cgalParamNEnd
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tmesh`. ///
/// \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel` \cgalParamEnd /// \cgalParamNBegin{geom_traits}
/// \cgalParamBegin{dry_run} a Boolean parameter. If set to `true`, the mesh will not be altered, /// \cgalParamDescription{an instance of a geometric traits class}
/// but the number of components that would be removed is returned. The default value is `false`.\cgalParamEnd /// \cgalParamType{a class model of `Kernel`}
/// \cgalParamBegin{output_iterator} a model of `OutputIterator` with value type `face_descriptor`. /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// When using the "dry run" mode (see parameter `dry_run`), faces /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// that would be removed by the algorithm can be collected with this output iterator. \cgalParamEnd /// \cgalParamExtra{Exact constructions kernels are not supported by this function.}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{face_index_map}
/// \cgalParamDescription{a property map associating to each face of `tmesh` a unique index between `0` and `num_faces(tmesh) - 1`}
/// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor`
/// as key type and `std::size_t` as value type}
/// \cgalParamDefault{an automatically indexed internal map}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{area_threshold}
/// \cgalParamDescription{a fixed value such that only connected components whose area is larger than this value are kept}
/// \cgalParamType{`geom_traits::FT`}
/// \cgalParamDefault{1\% of the length of the diagonal of the axis-aligned bounding box of the mesh, squared}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{volume_threshold}
/// \cgalParamDescription{a fixed value such that only connected components whose volume is
/// larger than this value are kept (only applies to closed connected components)}
/// \cgalParamType{`geom_traits::FT`}
/// \cgalParamDefault{1\% of the length of the diagonal of the axis-aligned bounding box of the mesh, cubed}
/// \cgalParamExtra{The mesh must be closed.}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{volume_threshold}
/// \cgalParamDescription{a fixed value such that only connected components whose volume is
/// larger than this value are kept (only applies to closed connected components)}
/// \cgalParamType{`geom_traits::FT`}
/// \cgalParamDefault{1\% of the length of the diagonal of the axis-aligned bounding box of the mesh, cubed}
/// \cgalParamExtra{The mesh must be closed.}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{edge_is_constrained_map}
/// \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tmesh`}
/// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%edge_descriptor`
/// as key type and `bool` as value type. It must be default constructible.}
/// \cgalParamDefault{a default property map where no edge is constrained}
/// \cgalParamExtra{A constrained edge can be split or collapsed, but not flipped, nor its endpoints moved by smoothing.}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{dry_run}
/// \cgalParamDescription{If set to `true`, the mesh will not be altered, but the number of components
/// that would be removed is returned.}
/// \cgalParamType{Boolean}
/// \cgalParamDefault{`false`}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{output_iterator}
/// \cgalParamDescription{An output iterator to collect the faces that would be removed by the algorithm,
/// when using the "dry run" mode (see parameter `dry_run`)}
/// \cgalParamType{a model of `OutputIterator` with value type `face_descriptor`}
/// \cgalParamDefault{`false`}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \return the number of connected components removed (ignoring isolated vertices). /// \return the number of connected components removed (ignoring isolated vertices).
@ -452,19 +504,25 @@ struct Less_vertex_point{
/// @param edges a subset of edges of `tm` /// @param edges a subset of edges of `tm`
/// @param tm a triangle mesh /// @param tm a triangle mesh
/// @param out an output iterator in which the degenerate edges are written /// @param out an output iterator in which the degenerate edges are written
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `TriangleMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNEnd
/// The traits class must provide the nested type `Point_3`, ///
/// and the nested functor `Equal_3` to check whether two points are identical. /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{The traits class must provide the nested type `Point_3`,
/// and the nested functor `Equal_3` to check whether two points are identical.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
///
template <class EdgeRange, class TriangleMesh, class OutputIterator, class NamedParameters> template <class EdgeRange, class TriangleMesh, class OutputIterator, class NamedParameters>
OutputIterator degenerate_edges(const EdgeRange& edges, OutputIterator degenerate_edges(const EdgeRange& edges,
const TriangleMesh& tm, const TriangleMesh& tm,
@ -528,18 +586,23 @@ degenerate_edges(const TriangleMesh& tm, OutputIterator out)
/// @param faces a subset of faces of `tm` /// @param faces a subset of faces of `tm`
/// @param tm a triangle mesh /// @param tm a triangle mesh
/// @param out an output iterator in which the degenerate faces are put /// @param out an output iterator in which the degenerate faces are put
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `TriangleMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNEnd
/// The traits class must provide the nested functor `Collinear_3` ///
/// to check whether three points are collinear. /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{The traits class must provide the nested type `Point_3`,
/// and the nested functor `Collinear_3` to check whether two points are identical.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
template <class FaceRange, class TriangleMesh, class OutputIterator, class NamedParameters> template <class FaceRange, class TriangleMesh, class OutputIterator, class NamedParameters>
@ -1348,23 +1411,27 @@ bool remove_degenerate_edges(TriangleMesh& tmesh)
// @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" // @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
// //
// @param tmesh the triangulated surface mesh to be repaired // @param tmesh the triangulated surface mesh to be repaired
// @param np optional \ref pmp_namedparameters "Named Parameters" described below // @param np an optional \ref pmp_namedparameters "Named Parameters" described below
// //
// \cgalNamedParamsBegin // \cgalNamedParamsBegin
// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. // \cgalParamNBegin{vertex_point_map}
// The type of this map is model of `ReadWritePropertyMap`. // \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
// If this parameter is omitted, an internal property map for // \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
// `CGAL::vertex_point_t` must be available in `TriangleMesh` // as key type and `%Point_3` as value type}
// \cgalParamEnd // \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
// \cgalParamBegin{geom_traits} a geometric traits class instance. // \cgalParamNEnd
// The traits class must provide the nested type `Point_3`, //
// and the nested functors: // \cgalParamNBegin{geom_traits}
// \cgalParamDescription{an instance of a geometric traits class}
// \cgalParamType{a class providing the nested type `Point_3` and the nested functors:
// - `Compare_distance_3` to compute the distance between 2 points // - `Compare_distance_3` to compute the distance between 2 points
// - `Collinear_3` to check whether 3 points are collinear // - `Collinear_3` to check whether 3 points are collinear
// - `Less_xyz_3` to compare lexicographically two points // - `Less_xyz_3` to compare lexicographically two points
// - `Equal_3` to check whether 2 points are identical. // - `Equal_3` to check whether 2 points are identical.
// For each functor Foo, a function `Foo foo_object()` must be provided. // For each functor Foo, a function `Foo foo_object()` must be provided.}
// \cgalParamEnd // \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
// \cgalParamNEnd
// \cgalNamedParamsEnd // \cgalNamedParamsEnd
// //
// @todo the function might not be able to remove all degenerate faces. // @todo the function might not be able to remove all degenerate faces.
@ -2581,23 +2648,33 @@ OutputIterator non_manifold_vertices(const PolygonMesh& pm,
/// @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" /// @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
/// ///
/// @param pm the surface mesh to be repaired /// @param pm the surface mesh to be repaired
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `PolygonMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
/// \cgalParamBegin{vertex_is_constrained_map} a writable property map with `vertex_descriptor` /// \cgalParamNEnd
/// as key and `bool` as `value_type`. `put(pmap, v, true)` will be called for each duplicated ///
/// vertices, as well as the original non-manifold vertex in the input mesh. /// \cgalParamNBegin{vertex_is_constrained_map}
/// \cgalParamEnd /// \cgalParamDescription{a property map containing the constrained-or-not status of each vertex of `pmesh`.}
/// \cgalParamBegin{output_iterator} a model of `OutputIterator` with value type /// \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `std::vector<vertex_descriptor>`. The first vertex of each vector is a non-manifold vertex /// as key type and `bool` as value type. It must be default constructible.}
/// \cgalParamDefault{a default property map where no vertex is constrained}
/// \cgalParamExtra{`put(pmap, v, true)` will be called for each duplicated vertices,
/// as well as the original non-manifold vertex in the input mesh..}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{output_iterator}
/// \cgalParamDescription{a way to link newly created vertices to the previously non-manifold vertices.}
/// \cgalParamType{a model of `OutputIterator` with value type `std::vector<vertex_descriptor>`}
/// \cgalParamDefault{unused}
/// \cgalParamExtra{The first vertex of each vector is a non-manifold vertex
/// of the input mesh, followed by the new vertices that were created to fix this precise /// of the input mesh, followed by the new vertices that were created to fix this precise
/// non-manifold configuration. /// non-manifold configuration.}
/// \cgalParamEnd /// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \return the number of vertices created. /// \return the number of vertices created.

View File

@ -174,13 +174,16 @@ bool simplify_polygon(PointRange& points,
// \param points points of the soup of polygons. // \param points points of the soup of polygons.
// \param polygons a vector of polygons. Each element in the vector describes a polygon // \param polygons a vector of polygons. Each element in the vector describes a polygon
// using the indices of the points in `points`. // using the indices of the points in `points`.
// \param np optional \ref pmp_namedparameters "Named Parameters" described below // \param np an optional \ref pmp_namedparameters "Named Parameters" described below
// //
// \cgalNamedParamsBegin // \cgalNamedParamsBegin
// \cgalParamBegin{geom_traits} a geometric traits class instance. // \cgalParamNBegin{geom_traits}
// The traits class must provide the nested functor `Equal_3` // \cgalParamDescription{an instance of a geometric traits class}
// to compare lexicographically two points a function `Equal_3 equal_3_object()`. // \cgalParamType{The traits class must provide the nested functor `Equal_3`
// \cgalParamEnd // to compare lexicographically two points a function `Equal_3 equal_3_object()`.}
// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
// \cgalParamNEnd
// \cgalNamedParamsEnd // \cgalNamedParamsEnd
// //
template <typename Traits, typename PointRange, typename PolygonRange> template <typename Traits, typename PointRange, typename PolygonRange>
@ -225,13 +228,16 @@ std::size_t simplify_polygons_in_polygon_soup(PointRange& points,
// \param points points of the soup of polygons. // \param points points of the soup of polygons.
// \param polygons a vector of polygons. Each element in the vector describes a polygon // \param polygons a vector of polygons. Each element in the vector describes a polygon
// using the indices of the points in `points`. // using the indices of the points in `points`.
// \param np optional \ref pmp_namedparameters "Named Parameters" described below // \param np an optional \ref pmp_namedparameters "Named Parameters" described below
// //
// \cgalNamedParamsBegin // \cgalNamedParamsBegin
// \cgalParamBegin{geom_traits} a geometric traits class instance. // \cgalParamNBegin{geom_traits}
// The traits class must provide the nested functor `Less_xyz_3` // \cgalParamDescription{an instance of a geometric traits class}
// to compare lexicographically two points a function `Less_xyz_3 less_xyz_3_object()`. // \cgalParamType{The traits class must provide the nested functor `Less_xyz_3`
// \cgalParamEnd // to compare lexicographically two points a function `Less_xyz_3 less_xyz_3_object()`.}
// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
// \cgalParamNEnd
// \cgalNamedParamsEnd // \cgalNamedParamsEnd
// //
template <typename Traits, typename PointRange, typename PolygonRange> template <typename Traits, typename PointRange, typename PolygonRange>
@ -489,13 +495,16 @@ std::size_t remove_isolated_points_in_polygon_soup(PointRange& points,
/// \param points points of the soup of polygons. /// \param points points of the soup of polygons.
/// \param polygons a vector of polygons. Each element in the vector describes a polygon /// \param polygons a vector of polygons. Each element in the vector describes a polygon
/// using the indices of the points in `points`. /// using the indices of the points in `points`.
/// \param np optional \ref pmp_namedparameters "Named Parameters" described below /// \param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNBegin{geom_traits}
/// The traits class must provide the nested functor `Less_xyz_3` /// \cgalParamDescription{an instance of a geometric traits class}
/// to compare lexicographically two points a function `Less_xyz_3 less_xyz_3_object()`. /// \cgalParamType{The traits class must provide the nested functor `Less_xyz_3`
/// \cgalParamEnd /// to compare lexicographically two points a function `Less_xyz_3 less_xyz_3_object()`.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \returns the number of removed points /// \returns the number of removed points
@ -876,22 +885,32 @@ DuplicateOutputIterator collect_duplicate_polygons(const PointRange& points,
/// \param points points of the soup of polygons. /// \param points points of the soup of polygons.
/// \param polygons a vector of polygons. Each element in the vector describes a polygon /// \param polygons a vector of polygons. Each element in the vector describes a polygon
/// using the indices of the points in `points`. /// using the indices of the points in `points`.
/// \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below /// \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNBegin{geom_traits}
/// The traits class must provide the nested functor `Less_xyz_3` /// \cgalParamDescription{an instance of a geometric traits class}
/// to compare lexicographically two points a function `Less_xyz_3 less_xyz_3_object()`. /// \cgalParamType{The traits class must provide the nested functor `Less_xyz_3`
/// \cgalParamEnd /// to compare lexicographically two points a function `Less_xyz_3 less_xyz_3_object()`.}
/// \cgalParamBegin{erase_all_duplicates} /// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// Parameter to indicate, when multiple polygons are duplicates, whether all the duplicate polygons /// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// should be removed or if one (arbitrarily chosen) face should be kept. %Default is `false`. /// \cgalParamNEnd
/// \cgalParamEnd ///
/// \cgalParamBegin{require_same_orientation} /// \cgalParamNBegin{erase_all_duplicates}
/// Parameter to indicate if polygon orientation should be taken into account when determining /// \cgalParamDescription{Parameter to indicate, when multiple polygons are duplicates,
/// whether two polygons are duplicates, that is, whether e.g. the triangles `0,1,2` and `0,2,1` /// whether all the duplicate polygons should be removed
/// are duplicates. %Default is `false`. /// or if one (arbitrarily chosen) face should be kept.}
/// \cgalParamEnd /// \cgalParamType{Boolean}
/// \cgalParamDefault{`false`}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{require_same_orientation}
/// \cgalParamDescription{Parameter to indicate if polygon orientation should be taken
/// into account when determining whether two polygons are duplicates,
/// that is, whether e.g. the triangles `0,1,2` and `0,2,1` are duplicates.}
/// \cgalParamType{Boolean}
/// \cgalParamDefault{`false`}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \returns the number of removed polygons /// \returns the number of removed polygons
@ -1030,27 +1049,33 @@ std::size_t merge_duplicate_polygons_in_polygon_soup(PointRange& points,
/// \param points points of the soup of polygons. /// \param points points of the soup of polygons.
/// \param polygons a vector of polygons. Each element in the vector describes a polygon /// \param polygons a vector of polygons. Each element in the vector describes a polygon
/// using the indices of the points in `points`. /// using the indices of the points in `points`.
/// \param np optional \ref pmp_namedparameters "Named Parameters", amongst those described below /// \param np an optional \ref pmp_namedparameters "Named Parameters", amongst those described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNBegin{geom_traits}
/// The traits class must provide the nested functors : /// \cgalParamDescription{an instance of a geometric traits class}
/// - `Less_xyz_3` to compare lexicographically two points /// \cgalParamType{The traits class must provide the nested functors `Less_xyz_3` and `Equal_3`
/// - `Equal_3` to check whether 2 points are identical /// to respectivelycompare lexicographically two points and to check if 2 points
/// are identical. For each functor `Foo`, a function `Foo foo_object()` must be provided.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// ///
/// and, for each functor `Foo`, a function `Foo foo_object()`. /// \cgalParamNBegin{erase_all_duplicates}
/// \cgalParamEnd /// \cgalParamDescription{Parameter to indicate, when multiple polygons are duplicates,
/// \cgalParamBegin{erase_all_duplicates} /// whether all the duplicate polygons should be removed
/// Parameter forwarded to the function `merge_duplicate_polygons_in_polygon_soup()` to indicate, /// or if one (arbitrarily chosen) face should be kept.}
/// when multiple polygons are duplicates, whether all the duplicate polygons /// \cgalParamType{Boolean}
/// should be removed or if one (arbitrarily chosen) face should be kept. %Default is `false`. /// \cgalParamDefault{`false`}
/// \cgalParamEnd /// \cgalParamNEnd
/// \cgalParamBegin{require_same_orientation} ///
/// Parameter forwarded to the function `merge_duplicate_polygons_in_polygon_soup()` /// \cgalParamNBegin{require_same_orientation}
/// to indicate if polygon orientation should be taken into account when determining whether /// \cgalParamDescription{Parameter to indicate if polygon orientation should be taken
/// two polygons are duplicates, that is, whether e.g. the triangles `0,1,2` and `0,2,1` are duplicates. /// into account when determining whether two polygons are duplicates,
/// %Default is `false`. /// that is, whether e.g. the triangles `0,1,2` and `0,2,1` are duplicates.}
/// \cgalParamEnd /// \cgalParamType{Boolean}
/// \cgalParamDefault{`false`}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
template <typename PointRange, typename PolygonRange, typename NamedParameters> template <typename PointRange, typename PolygonRange, typename NamedParameters>

View File

@ -342,13 +342,23 @@ self_intersections_impl(const FaceRange& face_range,
* @param face_range the range of faces to check for self-intersection. * @param face_range the range of faces to check for self-intersection.
* @param tmesh the triangulated surface mesh to be checked * @param tmesh the triangulated surface mesh to be checked
* @param out output iterator to be filled with all pairs of non-adjacent faces that intersect * @param out output iterator to be filled with all pairs of non-adjacent faces that intersect
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tmesh`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template < class ConcurrencyTag = Sequential_tag, template < class ConcurrencyTag = Sequential_tag,
@ -401,13 +411,23 @@ self_intersections(const FaceRange& face_range,
In case `tmesh` contains some degenerate faces, for each degenerate face `f` a pair `(f,f)` In case `tmesh` contains some degenerate faces, for each degenerate face `f` a pair `(f,f)`
will be put in `out` before any other self intersection between non-degenerate faces. will be put in `out` before any other self intersection between non-degenerate faces.
These are the only pairs where degenerate faces will be reported. These are the only pairs where degenerate faces will be reported.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tmesh`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `out` * @return `out`
@ -447,13 +467,23 @@ self_intersections(const TriangleMesh& tmesh, FacePairOutputIterator out)
* *
* @param face_range the set of faces to test for self-intersection * @param face_range the set of faces to test for self-intersection
* @param tmesh the triangulated surface mesh to be tested * @param tmesh the triangulated surface mesh to be tested
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `SelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tmesh`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `true` if the faces in `face_range` self-intersect * @return `true` if the faces in `face_range` self-intersect
@ -493,13 +523,23 @@ bool does_self_intersect(const FaceRange& face_range,
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param tmesh the triangulated surface mesh to be tested * @param tmesh the triangulated surface mesh to be tested
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* `CGAL::vertex_point_t` must be available in `TriangleMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `PMPSelfIntersectionTraits` \cgalParamEnd * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* should be available for the vertices of `tmesh`}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `PMPSelfIntersectionTraits`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{the geometric traits class must be compatible with the vertex point types}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `true` if `tmesh` self-intersects * @return `true` if `tmesh` self-intersects

View File

@ -43,18 +43,23 @@ namespace Polygon_mesh_processing {
/// ///
/// @param e an edge of `pm` /// @param e an edge of `pm`
/// @param pm polygon mesh containing `e` /// @param pm polygon mesh containing `e`
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pm`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `pm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `PolygonMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, pm)`}
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNEnd
/// The traits class must provide the nested type `Point_3`, ///
/// and the nested functor `Equal_3` to check whether two points are identical. /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{The traits class must provide the nested type `Point_3`,
/// and the nested functor `Equal_3` to check whether two points are identical.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \sa `degenerate_edges()` /// \sa `degenerate_edges()`
@ -94,18 +99,23 @@ bool is_degenerate_edge(typename boost::graph_traits<PolygonMesh>::edge_descript
/// ///
/// @param f a triangle face of `tm` /// @param f a triangle face of `tm`
/// @param tm a triangle mesh containing `f` /// @param tm a triangle mesh containing `f`
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `TriangleMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNEnd
/// The traits class must provide the nested functor `Collinear_3` ///
/// to check whether three points are collinear. /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{The traits class must provide the nested type `Point_3`,
/// and the nested functor `Collinear_3` to check whether three points are aligned.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \sa `degenerate_faces()` /// \sa `degenerate_faces()`
@ -152,18 +162,23 @@ bool is_degenerate_triangle_face(typename boost::graph_traits<TriangleMesh>::fac
/// @param f a triangle face of `tm` /// @param f a triangle face of `tm`
/// @param tm triangle mesh containing `f` /// @param tm triangle mesh containing `f`
/// @param threshold a bound on the ratio of the longest edge length and the shortest edge length /// @param threshold a bound on the ratio of the longest edge length and the shortest edge length
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `TriangleMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNEnd
/// The traits class must provide the nested type `FT` and ///
/// the nested functor `Compute_squared_distance_3`. /// \cgalParamNBegin{geom_traits}
/// \cgalParamEnd /// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{The traits class must provide the nested type `FT`,
/// and the nested functor `Compute_squared_distance_3`.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \return the shortest halfedge if the triangle face is a needle, and a null halfedge otherwise. /// \return the shortest halfedge if the triangle face is a needle, and a null halfedge otherwise.
@ -252,18 +267,23 @@ is_needle_triangle_face(typename boost::graph_traits<TriangleMesh>::face_descrip
/// @param threshold the cosine of a minimum angle such that if `f` has an angle greater than this bound, /// @param threshold the cosine of a minimum angle such that if `f` has an angle greater than this bound,
/// it is a cap. The threshold is in range `[-1 0]` and corresponds to an angle /// it is a cap. The threshold is in range `[-1 0]` and corresponds to an angle
/// between `90` and `180` degrees. /// between `90` and `180` degrees.
/// @param np optional \ref pmp_namedparameters "Named Parameters" described below /// @param np an optional \ref pmp_namedparameters "Named Parameters" described below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `tm`. /// \cgalParamNBegin{vertex_point_map}
/// The type of this map is model of `ReadWritePropertyMap`. /// \cgalParamDescription{a property map associating points to the vertices of `tm`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` should be available in `TriangleMesh` /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
/// \cgalParamBegin{geom_traits} a geometric traits class instance. /// \cgalParamNEnd
/// The traits class must provide the nested type `Point_3` and ///
/// \cgalParamNBegin{geom_traits}
/// \cgalParamDescription{an instance of a geometric traits class}
/// \cgalParamType{The traits class must provide the nested type `Point_3`,
/// the nested functors `Compute_squared_distance_3`, `Construct_vector_3`, /// the nested functors `Compute_squared_distance_3`, `Construct_vector_3`,
/// and `Compute_scalar_product_3`. /// and `Compute_scalar_product_3`.}
/// \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
/// \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
/// \cgalParamEnd /// \cgalParamEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///

View File

@ -56,41 +56,77 @@ namespace Polygon_mesh_processing {
* *
* @param tmesh a polygon mesh with triangulated surface patches to be smoothed. * @param tmesh a polygon mesh with triangulated surface patches to be smoothed.
* @param faces the range of triangular faces defining one or several surface patches to be smoothed. * @param faces the range of triangular faces defining one or several surface patches to be smoothed.
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below. * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below.
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{use_angle_smoothing} Boolean value to indicate whether angle-based smoothing should be used. * \cgalParamNBegin{number_of_iterations}
* %Default is `true`. * \cgalParamDescription{the number of iterations for the sequence of the smoothing iterations performed}
* \cgalParamEnd * \cgalParamType{unsigned int}
* \cgalParamBegin{use_area_smoothing} Boolean value to indicate whether area-based smoothing should be used. * \cgalParamDefault{`1`}
* %Default is `true`. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{number_of_iterations} the number of iterations for the * \cgalParamNBegin{use_angle_smoothing}
* sequence of the smoothing iterations performed (default is 1). * \cgalParamDescription{value to indicate whether angle-based smoothing should be used}
* \cgalParamEnd * \cgalParamType{Boolean}
* \cgalParamBegin{use_safety_constraints} if `true`, vertex moves that would worsen the mesh * \cgalParamDefault{`true`}
* are ignored. %Default is `false`. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{use_Delaunay_flips} if `true` (default value), area-based smoothing will be completed * \cgalParamNBegin{use_area_smoothing}
* by a phase of Delaunay-based edge-flips to prevent the creation of elongated triangles. * \cgalParamDescription{value to indicate whether area-based smoothing should be used}
* \cgalParamEnd * \cgalParamType{Boolean}
* \cgalParamBegin{do_project} if `true` (default value), points are projected onto the initial surface * \cgalParamDefault{`true`}
* after each iteration. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamBegin{vertex_is_constrained_map} a property map containing the * \cgalParamNBegin{vertex_point_map}
* constrained-or-not status of each vertex of `tmesh`. A constrained vertex * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* cannot be modified at all during smoothing. * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamBegin{edge_is_constrained_map} a property map, model of `ReadWritePropertyMap`, containing the * \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* constrained-or-not status of each edge of `tmesh`. A constrained edge cannot be flipped and its extremities * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* are tagged as constrained vertices. * must be available in `TriangleMesh`.}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{vertex_point_map} the property map, model of `ReadWritePropertyMap`, with the points *
* associated to the vertices of `tmesh`. * \cgalParamNBegin{geom_traits}
* \cgalParamEnd * \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamBegin{geom_traits} a geometric traits class instance, model of `Kernel`. * \cgalParamType{a class model of `Kernel`}
* Exact constructions kernels are not supported by this function. * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamEnd * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
*
* \cgalParamNBegin{use_safety_constraints}
* \cgalParamDescription{If `true`, vertex moves that would worsen the mesh are ignored.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`false`}
* \cgalParamNEnd
*
* \cgalParamNBegin{use_Delaunay_flips}
* \cgalParamDescription{If `true`, area-based smoothing will be completed by a phase of
* Delaunay-based edge-flips to prevent the creation of elongated triangles.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
*
* \cgalParamNBegin{do_project}
* \cgalParamDescription{If `true`, points are projected onto the initial surface after each iteration.}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
*
* \cgalParamNBegin{vertex_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each vertex of `tmesh`.}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `bool` as value type. It must be default constructible.}
* \cgalParamDefault{a default property map where no vertex is constrained}
* \cgalParamExtra{A constrained vertex cannot be modified at all during smoothing.}
* \cgalParamNEnd
*
* \cgalParamNBegin{edge_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each edge of `tmesh`.}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%edge_descriptor`
* as key type and `bool` as value type. It must be default constructible.}
* \cgalParamDefault{a default property map where no edge is constrained}
* \cgalParamExtra{A constrained edge cannot be modified at all during smoothing.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @warning The third party library \link thirdpartyCeres Ceres \endlink is required * @warning The third party library \link thirdpartyCeres Ceres \endlink is required

View File

@ -55,24 +55,48 @@ namespace Polygon_mesh_processing {
* @param time a time step that corresponds to the speed by which the surface is smoothed. * @param time a time step that corresponds to the speed by which the surface is smoothed.
* A larger time step results in faster convergence but details may be distorted to have a larger extent * A larger time step results in faster convergence but details may be distorted to have a larger extent
* compared to more iterations with a smaller step. Typical values scale in the interval (1e-6, 1]. * compared to more iterations with a smaller step. Typical values scale in the interval (1e-6, 1].
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below. * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below.
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated * \cgalParamNBegin{number_of_iterations}
* to the vertices of `tmesh`. Instance of a class model of `ReadWritePropertyMap`. * \cgalParamDescription{the number of iterations for the sequence of the smoothing iterations performed}
* \cgalParamEnd * \cgalParamType{unsigned int}
* \cgalParamBegin{geom_traits} a geometric traits class instance, model of `Kernel`. * \cgalParamDefault{`1`}
* \cgalParamEnd * \cgalParamNEnd
* \cgalParamBegin{vertex_is_constrained_map} a property map containing the *
* constrained-or-not status of each vertex of `tmesh`. A constrained vertex * \cgalParamNBegin{vertex_point_map}
* cannot be modified at all during smoothing. * \cgalParamDescription{a property map associating points to the vertices of `tmesh`}
* \cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor`
* \cgalParamBegin{number_of_iterations} the number of iterations for the * as key type and `%Point_3` as value type}
* sequence of the smoothing iterations performed. Each iteration is performed * \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`}
* with the given time step. * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* \cgalParamEnd * must be available in `TriangleMesh`.}
* \cgalParamBegin{sparse_linear_solver} an instance of the sparse linear solver used for smoothing \cgalParamEnd * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
*
*
* \cgalParamNBegin{vertex_is_constrained_map}
* \cgalParamDescription{a property map containing the constrained-or-not status of each vertex of `tmesh`.}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `bool` as value type. It must be default constructible.}
* \cgalParamDefault{a default property map where no vertex is constrained}
* \cgalParamExtra{A constrained vertex cannot be modified at all during smoothing.}
* \cgalParamNEnd
*
* \cgalParamNBegin{sparse_linear_solver}
* \cgalParamDescription{an instance of the sparse linear solver used for smoothing}
* \cgalParamType{a class model of `SparseLinearAlgebraWithFactorTraits_d`}
* \cgalParamDefault{if \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available and
* `CGAL_EIGEN3_ENABLED` is defined, then the following overload of `Eigen_solver_traits`
* is provided as default value:
* `CGAL::Eigen_solver_traits<Eigen::BiCGSTAB<CGAL::Eigen_sparse_matrix<double>::%EigenType, Eigen::IncompleteLUT<double> > >`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @warning This function involves linear algebra, that is computed using a non-exact floating-point arithmetic. * @warning This function involves linear algebra, that is computed using a non-exact floating-point arithmetic.

View File

@ -579,12 +579,17 @@ std::size_t stitch_borders_impl(PM& pmesh,
/// ///
/// \param h a border halfedge of the polygon mesh `pm` /// \param h a border halfedge of the polygon mesh `pm`
/// \param pm the polygon mesh to be stitched /// \param pm the polygon mesh to be stitched
/// \param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. /// \cgalParamNBegin{vertex_point_map}
/// If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` must be available in `PolygonMesh`. /// \cgalParamDescription{a property map associating points to the vertices of `pm`}
/// \cgalParamEnd /// \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// as key type and `%Point_3` as value type}
/// \cgalParamDefault{`boost::get(CGAL::vertex_point, pm)`}
/// \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
/// must be available in `PolygonMesh`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \returns the number of pairs of halfedges that were stitched. /// \returns the number of pairs of halfedges that were stitched.
@ -761,12 +766,17 @@ std::size_t stitch_boundary_cycle(const typename boost::graph_traits<PolygonMesh
/// \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" /// \tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
/// ///
/// \param pm the polygon mesh to be stitched /// \param pm the polygon mesh to be stitched
/// \param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below /// \param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. /// \cgalParamNBegin{vertex_point_map}
/// If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` must be available in `PolygonMesh`. /// \cgalParamDescription{a property map associating points to the vertices of `pm`}
/// \cgalParamEnd /// \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// as key type and `%Point_3` as value type}
/// \cgalParamDefault{`boost::get(CGAL::vertex_point, pm)`}
/// \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
/// must be available in `PolygonMesh`.}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// \returns the number of pairs of halfedges that were stitched. /// \returns the number of pairs of halfedges that were stitched.
@ -857,21 +867,30 @@ std::size_t stitch_borders(PolygonMesh& pmesh,
/// @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" /// @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
/// ///
/// @param pmesh the polygon mesh to be modified by stitching /// @param pmesh the polygon mesh to be modified by stitching
/// @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below /// @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
/// ///
/// \cgalNamedParamsBegin /// \cgalNamedParamsBegin
/// \cgalParamBegin{vertex_point_map} /// \cgalParamNBegin{vertex_point_map}
/// the property map with the points associated to the vertices of `pmesh`. /// \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
/// If this parameter is omitted, an internal property map for /// \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
/// `CGAL::vertex_point_t` must be available in `PolygonMesh`. /// as key type and `%Point_3` as value type}
/// \cgalParamEnd /// \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
/// \cgalParamBegin{apply_per_connected_component} /// \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
/// specifies if the borders should only be stitched inside their own connected component. /// must be available in `PolygonMesh`.}
/// Default value is `false`. /// \cgalParamNEnd
/// \cgalParamEnd ///
/// \cgalParamBegin{face_index_map} /// \cgalParamNBegin{apply_per_connected_component}
/// a property map containing for each face of `pmesh` a unique index between `0` and `num_faces(pmesh)-1` /// \cgalParamDescription{specifies if the borders should only be stitched only within their own connected component.}
/// \cgalParamEnd /// \cgalParamType{Boolean}
/// \cgalParamDefault{`false`}
/// \cgalParamNEnd
///
/// \cgalParamNBegin{face_index_map}
/// \cgalParamDescription{a property map associating to each face of `pmesh` a unique index between `0` and `num_faces(pmesh) - 1`}
/// \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
/// as key type and `std::size_t` as value type}
/// \cgalParamDefault{an automatically indexed internal map}
/// \cgalParamNEnd
/// \cgalNamedParamsEnd /// \cgalNamedParamsEnd
/// ///
/// @return the number of pairs of halfedges that were stitched. /// @return the number of pairs of halfedges that were stitched.

View File

@ -30,12 +30,17 @@ namespace Polygon_mesh_processing{
* *
* @param transformation the transformation functor to apply to the points of `mesh`. * @param transformation the transformation functor to apply to the points of `mesh`.
* @param mesh the `PolygonMesh` to transform. * @param mesh the `PolygonMesh` to transform.
* @param np optional sequence of \ref pmp_namedparameters for `mesh`, among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters for `mesh`, among the ones listed below
* *
* * \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `mesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `mesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, mesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
*/ */

View File

@ -404,14 +404,25 @@ public:
* *
* @param f face to be triangulated * @param f face to be triangulated
* @param pmesh the polygon mesh to which the face to be triangulated belongs * @param pmesh the polygon mesh to which the face to be triangulated belongs
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `true` if the face has been triangulated. * @return `true` if the face has been triangulated.
@ -459,16 +470,28 @@ bool triangulate_face(typename boost::graph_traits<PolygonMesh>::face_descriptor
* *
* @param face_range the range of faces to be triangulated * @param face_range the range of faces to be triangulated
* @param pmesh the polygon mesh to be triangulated * @param pmesh the polygon mesh to be triangulated
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `true` if all the faces have been triangulated. * @return `true` if all the faces have been triangulated.
*
* @see triangulate_face() * @see triangulate_face()
*/ */
template <typename FaceRange, typename PolygonMesh, typename NamedParameters> template <typename FaceRange, typename PolygonMesh, typename NamedParameters>
@ -508,16 +531,28 @@ bool triangulate_faces(FaceRange face_range, PolygonMesh& pmesh)
* @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref pmp_namedparameters "Named Parameters"
* *
* @param pmesh the polygon mesh to be triangulated * @param pmesh the polygon mesh to be triangulated
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamNBegin{vertex_point_map}
* If this parameter is omitted, an internal property map for * \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
* `CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* \cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd * as key type and `%Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
*
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{a class model of `Kernel`}
* \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
* \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
* *
* @return `true` if all the faces have been triangulated. * @return `true` if all the faces have been triangulated.
*
* @see triangulate_face() * @see triangulate_face()
*/ */
template <typename PolygonMesh, typename NamedParameters> template <typename PolygonMesh, typename NamedParameters>

View File

@ -55,16 +55,32 @@ namespace Polygon_mesh_processing {
@param pmesh polygon mesh containing the hole @param pmesh polygon mesh containing the hole
@param border_halfedge a border halfedge incident to the hole @param border_halfedge a border halfedge incident to the hole
@param out iterator over patch faces @param out iterator over patch faces
@param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. \cgalParamNBegin{vertex_point_map}
If this parameter is omitted, an internal property map for \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
`CGAL::vertex_point_t` must be available in `PolygonMesh`\cgalParamEnd \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
\cgalParamBegin{use_delaunay_triangulation} if `true`, use the Delaunay triangulation facet search space. as key type and `%Point_3` as value type}
If no valid triangulation can be found in this search space, the algorithm falls back to the \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
non-Delaunay triangulations search space to find a solution \cgalParamEnd \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
\cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd must be available in `PolygonMesh`.}
\cgalParamNEnd
\cgalParamNBegin{geom_traits}
\cgalParamDescription{an instance of a geometric traits class}
\cgalParamType{a class model of `Kernel`}
\cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
\cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
\cgalParamNEnd
\cgalParamNBegin{use_delaunay_triangulation}
\cgalParamDescription{If `true`, use the Delaunay triangulation facet search space.}
\cgalParamType{Boolean}
\cgalParamDefault{`true`}
\cgalParamExtra{If no valid triangulation can be found in this search space, the algorithm
falls back to the non-Delaunay triangulations search space to find a solution.}
\cgalParamNEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
@return `out` @return `out`
@ -149,18 +165,39 @@ namespace Polygon_mesh_processing {
@param border_halfedge a border halfedge incident to the hole @param border_halfedge a border halfedge incident to the hole
@param face_out output iterator over patch faces @param face_out output iterator over patch faces
@param vertex_out output iterator over patch vertices without including the boundary @param vertex_out output iterator over patch vertices without including the boundary
@param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. \cgalParamNBegin{vertex_point_map}
If this parameter is omitted, an internal property map for \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
`CGAL::vertex_point_t` should be available in `PolygonMesh`\cgalParamEnd \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
\cgalParamBegin{density_control_factor} factor to control density of the ouput mesh, where larger values as key type and `%Point_3` as value type}
cause denser refinements, as in `refine()` \cgalParamEnd \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
\cgalParamBegin{use_delaunay_triangulation} if `true`, use the Delaunay triangulation facet search space. \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
If no valid triangulation can be found in this search space, the algorithm falls back to the must be available in `PolygonMesh`.}
non-Delaunay triangulations search space to find a solution \cgalParamEnd \cgalParamNEnd
\cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd
\cgalParamNBegin{geom_traits}
\cgalParamDescription{an instance of a geometric traits class}
\cgalParamType{a class model of `Kernel`}
\cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
\cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
\cgalParamNEnd
\cgalParamNBegin{use_delaunay_triangulation}
\cgalParamDescription{If `true`, use the Delaunay triangulation facet search space.}
\cgalParamType{Boolean}
\cgalParamDefault{`true`}
\cgalParamExtra{If no valid triangulation can be found in this search space, the algorithm
falls back to the non-Delaunay triangulations search space to find a solution.}
\cgalParamNEnd
\cgalParamNBegin{density_control_factor}
\cgalParamDescription{factor to control density of the ouput mesh,
where larger values cause denser refinements, as in `refine()`}
\cgalParamType{double}
\cgalParamDefault{\f$ \sqrt{2}\f$}
\cgalParamNEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
@return pair of `face_out` and `vertex_out` @return pair of `face_out` and `vertex_out`
@ -219,21 +256,57 @@ namespace Polygon_mesh_processing {
@param border_halfedge a border halfedge incident to the hole @param border_halfedge a border halfedge incident to the hole
@param face_out output iterator over patch faces @param face_out output iterator over patch faces
@param vertex_out output iterator over patch vertices without including the boundary @param vertex_out output iterator over patch vertices without including the boundary
@param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. \cgalParamNBegin{vertex_point_map}
If this parameter is omitted, an internal property map for \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
`CGAL::vertex_point_t` should be available in `PolygonMesh` \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
\cgalParamEnd as key type and `%Point_3` as value type}
\cgalParamBegin{use_delaunay_triangulation} if `true`, use the Delaunay triangulation facet search space. \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
If no valid triangulation can be found in this search space, the algorithm falls back to the \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
non-Delaunay triangulations search space to find a solution \cgalParamEnd must be available in `PolygonMesh`.}
\cgalParamBegin{density_control_factor} factor to control density of the ouput mesh, where larger values \cgalParamNEnd
cause denser refinements, as in `refine()` \cgalParamEnd
\cgalParamBegin{fairing_continuity} tangential continuity of the output surface patch \cgalParamEnd \cgalParamNBegin{geom_traits}
\cgalParamBegin{sparse_linear_solver} an instance of the sparse linear solver used for fairing \cgalParamEnd \cgalParamDescription{an instance of a geometric traits class}
\cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd \cgalParamType{a class model of `Kernel`}
\cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
\cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
\cgalParamNEnd
\cgalParamNBegin{use_delaunay_triangulation}
\cgalParamDescription{If `true`, use the Delaunay triangulation facet search space.}
\cgalParamType{Boolean}
\cgalParamDefault{`true`}
\cgalParamExtra{If no valid triangulation can be found in this search space, the algorithm
falls back to the non-Delaunay triangulations search space to find a solution.}
\cgalParamNEnd
\cgalParamNBegin{density_control_factor}
\cgalParamDescription{factor to control density of the ouput mesh,
where larger values cause denser refinements, as in `refine()`}
\cgalParamType{double}
\cgalParamDefault{\f$ \sqrt{2}\f$}
\cgalParamNEnd
\cgalParamNBegin{fairing_continuity}
\cgalParamDescription{A value controling the tangential continuity of the output surface patch.
The possible values are 0, 1 and 2, refering to the C<sup>0</sup>, C<sup>1</sup>
and C<sup>2</sup> continuity.}
\cgalParamType{unsigned int}
\cgalParamDefault{`1`}
\cgalParamExtra{The larger `fairing_continuity` gets, the more fixed vertices are required}
\cgalParamNEnd
\cgalParamNBegin{sparse_linear_solver}
\cgalParamDescription{an instance of the sparse linear solver used for fairing}
\cgalParamType{a class model of `SparseLinearAlgebraWithFactorTraits_d`}
\cgalParamDefault{If \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available and
`CGAL_EIGEN3_ENABLED` is defined, then the following overload of `Eigen_solver_traits`
is provided as default value:\n
`CGAL::Eigen_solver_traits<Eigen::SparseLU<CGAL::Eigen_sparse_matrix<double>::%EigenType, Eigen::COLAMDOrdering<int> > >`}
\cgalParamNEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
@return tuple of @return tuple of
@ -319,13 +392,23 @@ namespace Polygon_mesh_processing {
@param third_points the range of third points @param third_points the range of third points
@param out iterator over output patch triangles, described by indices of points @param out iterator over output patch triangles, described by indices of points
in `points` in `points`
@param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{use_delaunay_triangulation} if `true`, use the Delaunay triangulation facet search space. \cgalParamNBegin{geom_traits}
If no valid triangulation can be found in this search space, the algorithm falls back to the \cgalParamDescription{an instance of a geometric traits class}
non-Delaunay triangulations search space to find a solution \cgalParamEnd \cgalParamType{a class model of `Kernel`}
\cgalParamBegin{geom_traits} a geometric traits class instance \cgalParamEnd \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`}
\cgalParamExtra{The geometric traits class must be compatible with the vertex point type.}
\cgalParamNEnd
\cgalParamNBegin{use_delaunay_triangulation}
\cgalParamDescription{If `true`, use the Delaunay triangulation facet search space.}
\cgalParamType{Boolean}
\cgalParamDefault{`true`}
\cgalParamExtra{If no valid triangulation can be found in this search space, the algorithm
falls back to the non-Delaunay triangulations search space to find a solution.}
\cgalParamNEnd
\cgalNamedParamsEnd \cgalNamedParamsEnd
\todo handle islands \todo handle islands

View File

@ -193,22 +193,27 @@ public:
* \return the id of `tm` used to refer to that mesh. * \return the id of `tm` used to refer to that mesh.
* *
* @param tm triangulated surface mesh to add * @param tm triangulated surface mesh to add
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamEnd * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` should be available for the vertices of `tm`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing the index of each face of `tm`. It must be initialized *
* and the value must be unique per face and in the range `[0, num_faces(tm)[`. * \cgalParamNBegin{face_index_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamBegin{apply_per_connected_component} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and `std::size_t` as value type}
* if `false`, `tm` is assumed to have only one connected component, avoiding * \cgalParamDefault{an automatically indexed internal map}
* the extraction of connected components. Default is `true`. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{apply_per_connected_component}
* \cgalParamDescription{If `false`, `tm` is assumed to have only one connected component, avoiding the extraction of connected components}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template <class NamedParameters> template <class NamedParameters>
@ -250,22 +255,27 @@ public:
* *
* @param tree an AABB-tree of faces of a mesh * @param tree an AABB-tree of faces of a mesh
* @param tm triangulated surface mesh * @param tm triangulated surface mesh
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamEnd * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` should be available for the vertices of `tm`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing the index of each face of `tm`. It must be initialized *
* and the value must be unique per face and in the range `[0, num_faces(tm)[`. * \cgalParamNBegin{face_index_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamBegin{apply_per_connected_component} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and `std::size_t` as value type}
* if `false`, `tm` is assumed to have only one connected component, avoiding * \cgalParamDefault{an automatically indexed internal map}
* the extraction of connected components. Default is `true`. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{apply_per_connected_component}
* \cgalParamDescription{If `false`, `tm` is assumed to have only one connected component, avoiding the extraction of connected components}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template <class NamedParameters> template <class NamedParameters>
@ -491,22 +501,27 @@ public:
* *
* @param tm input triangulated surface mesh * @param tm input triangulated surface mesh
* @param [out] points will contain one point per connected component of `tm` * @param [out] points will contain one point per connected component of `tm`
* @param np optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref pmp_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`. * \cgalParamDescription{a property map associating points to the vertices of `tm`}
* If this parameter is omitted, an internal property map for * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%vertex_descriptor` as key type and `%Point_3` as value type}
* `CGAL::vertex_point_t` must be available in `TriangleMesh` * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`}
* \cgalParamEnd * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` should be available for the vertices of `tm`}
* \cgalParamBegin{face_index_map} * \cgalParamNEnd
* a property map containing the index of each face of `tm`. It must be initialized *
* and the value must be unique per face and in the range `[0, num_faces(tm)[`. * \cgalParamNBegin{face_index_map}
* \cgalParamEnd * \cgalParamDescription{a property map associating to each face of `tm` a unique index between `0` and `num_faces(tm) - 1`}
* \cgalParamBegin{apply_per_connected_component} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor` as key type and `std::size_t` as value type}
* if `false`, `tm` is assumed to have only one connected component, avoiding * \cgalParamDefault{an automatically indexed internal map}
* the extraction of connected components. %Default is `true`. * \cgalParamNEnd
* \cgalParamEnd *
* \cgalParamNBegin{apply_per_connected_component}
* \cgalParamDescription{If `false`, `tm` is assumed to have only one connected component, avoiding the extraction of connected components}
* \cgalParamType{Boolean}
* \cgalParamDefault{`true`}
* \cgalParamNEnd
* \cgalNamedParamsEnd * \cgalNamedParamsEnd
*/ */
template <class NamedParameters> template <class NamedParameters>

View File

@ -62,7 +62,7 @@ void PQQ(PolygonMesh& pmesh, Mask mask, int step = 1) {
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param mask a geometry policy mask * @param mask a geometry policy mask
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.
@ -109,7 +109,7 @@ void PTQ(PolygonMesh& pmesh, Mask mask, int step = 1) {
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param mask a geometry policy mask * @param mask a geometry policy mask
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.
@ -157,7 +157,7 @@ void DQQ(PolygonMesh& pmesh, Mask mask, int step = 1) {
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param mask a geometry policy mask * @param mask a geometry policy mask
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.
@ -209,7 +209,7 @@ void Sqrt3(PolygonMesh& pmesh, Mask mask, int step = 1) {
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param mask a geometry policy mask * @param mask a geometry policy mask
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.

View File

@ -105,7 +105,7 @@ void CatmullClark_subdivision(PolygonMesh& pmesh, int step) {
* @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters"
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.
@ -161,7 +161,7 @@ void Loop_subdivision(PolygonMesh& pmesh, int step) {
* @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters"
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.
@ -215,7 +215,7 @@ void DooSabin_subdivision(PolygonMesh& pmesh, int step) {
* @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters"
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.
@ -272,7 +272,7 @@ void Sqrt3_subdivision(PolygonMesh& pmesh, int step) {
* @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters" * @tparam NamedParameters a sequence of \ref sm_namedparameters "Named Parameters"
* *
* @param pmesh a polygon mesh * @param pmesh a polygon mesh
* @param np optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref sm_namedparameters "Named Parameters" among the ones listed below
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`. * \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `pmesh`.

View File

@ -65,7 +65,7 @@ unspecified_type all_default();
* @tparam NamedParameters a sequence of \ref vsa_namedparameters * @tparam NamedParameters a sequence of \ref vsa_namedparameters
* *
* @param tm triangle surface mesh to be approximated * @param tm triangle surface mesh to be approximated
* @param np optional sequence of \ref vsa_namedparameters among the ones listed below * @param np an optional sequence of \ref vsa_namedparameters among the ones listed below
* @return `true` if the indexed triangles represent a 2-manifold, oriented surface mesh, and `false` otherwise. * @return `true` if the indexed triangles represent a 2-manifold, oriented surface mesh, and `false` otherwise.
* *
* \cgalNamedParamsBegin{Approximation Named Parameters} * \cgalNamedParamsBegin{Approximation Named Parameters}

View File

@ -297,7 +297,7 @@ public:
* Parameters out of range are ignored. * Parameters out of range are ignored.
* @tparam NamedParameters a sequence of \ref vsa_namedparameters * @tparam NamedParameters a sequence of \ref vsa_namedparameters
* @param np optional sequence of \ref vsa_namedparameters among the ones listed below * @param np an optional sequence of \ref vsa_namedparameters among the ones listed below
* @return number of proxies initialized * @return number of proxies initialized
* \cgalNamedParamsBegin{Seeding Named Parameters} * \cgalNamedParamsBegin{Seeding Named Parameters}
@ -769,7 +769,7 @@ public:
* @brief extracts the output mesh in the form of an indexed triangle set. * @brief extracts the output mesh in the form of an indexed triangle set.
* @tparam NamedParameters a sequence of \ref vsa_namedparameters * @tparam NamedParameters a sequence of \ref vsa_namedparameters
* *
* @param np optional sequence of \ref vsa_namedparameters among the ones listed below * @param np an optional sequence of \ref vsa_namedparameters among the ones listed below
* @return `true` if the extracted surface mesh is manifold, and `false` otherwise. * @return `true` if the extracted surface mesh is manifold, and `false` otherwise.
* *
* \cgalNamedParamsBegin{Meshing Named Parameters} * \cgalNamedParamsBegin{Meshing Named Parameters}
@ -833,7 +833,7 @@ public:
* @brief outputs approximation results. * @brief outputs approximation results.
* @tparam NamedParameters a sequence of \ref vsa_namedparameters * @tparam NamedParameters a sequence of \ref vsa_namedparameters
* @param np optional sequence of \ref vsa_namedparameters among the ones listed below * @param np an optional sequence of \ref vsa_namedparameters among the ones listed below
* \cgalNamedParamsBegin{Output Named Parameters} * \cgalNamedParamsBegin{Output Named Parameters}
* \cgalParamBegin{face_proxy_map} a `WritePropertyMap` with * \cgalParamBegin{face_proxy_map} a `WritePropertyMap` with

View File

@ -13,7 +13,7 @@ the number of edges effectively removed.
@param surface_mesh a triangle mesh @param surface_mesh a triangle mesh
@param should_stop the stop-condition policy @param should_stop the stop-condition policy
@param np optional sequence of \ref sms_namedparameters "Named Parameters" among the ones listed below @param np an optional sequence of \ref sms_namedparameters "Named Parameters" among the ones listed below
\cgalNamedParamsBegin \cgalNamedParamsBegin
\cgalParamBegin{vertex_point_map} \cgalParamBegin{vertex_point_map}