Use \link / \ref to add missing links of functions with parameters

This commit is contained in:
Mael Rouxel-Labbé 2025-09-19 00:26:17 +02:00
parent b3e2f204a4
commit 0721be1a58
36 changed files with 147 additions and 132 deletions

View File

@ -18,7 +18,7 @@ public:
/*! accepts two <I>mergeable</I> \f$x\f$-monotone curves `xc1` and `xc2` /*! accepts two <I>mergeable</I> \f$x\f$-monotone curves `xc1` and `xc2`
* and assigns `xc` with the merged curve. * and assigns `xc` with the merged curve.
* *
* \pre `are_mergeable_2`(`xc1`, `xc2`) is true. * \pre \link AosTraits::AreMergeable_2 `are_mergeable_2`\endlink(`xc1`, `xc2`) is true.
*/ */
void merge(AosTraits::X_monotone_curve_2 xc1, void merge(AosTraits::X_monotone_curve_2 xc1,
AosTraits::X_monotone_curve_2 xc2, AosTraits::X_monotone_curve_2 xc2,

View File

@ -1552,7 +1552,7 @@ does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor
* *
* \returns vertex `v1`. * \returns vertex `v1`.
* \pre g must be a triangulated graph * \pre g must be a triangulated graph
* \pre `does_satisfy_link_condition(e,g) == true`. * \pre \link CGAL::Euler::does_satisfy_link_condition `does_satisfy_link_condition`\endlink(e,g) == `true`.
*/ */
template<typename Graph> template<typename Graph>
typename boost::graph_traits<Graph>::vertex_descriptor typename boost::graph_traits<Graph>::vertex_descriptor

View File

@ -64,7 +64,7 @@ namespace Barycentric_coordinates {
\return an output iterator to the element in the destination range, \return an output iterator to the element in the destination range,
one past the last coordinate stored one past the last coordinate stored
\pre area_2(p0, p1, p2) != 0 \pre \link BarycentricTraits_2::Compute_area_2 `area_2`\endlink(p0, p1, p2) != 0
*/ */
template< template<
typename OutIterator, typename OutIterator,
@ -133,7 +133,7 @@ namespace Barycentric_coordinates {
\return a tuple `std::tuple<GeomTraits::FT, GeomTraits::FT, GeomTraits::FT>` \return a tuple `std::tuple<GeomTraits::FT, GeomTraits::FT, GeomTraits::FT>`
with the computed coordinates with the computed coordinates
\pre area_2(p0, p1, p2) != 0 \pre \link BarycentricTraits_2::Compute_area_2 `area_2`\endlink(p0, p1, p2) != 0
*/ */
template<typename GeomTraits> template<typename GeomTraits>
std::tuple< std::tuple<

View File

@ -27,7 +27,7 @@ the source and target points of `xc`, respectively. If the target
point of `xc2` and the source point of `xc1` coincide; then point of `xc2` and the source point of `xc1` coincide; then
the source point of `xc2` and the target point of `xc1` become the source point of `xc2` and the target point of `xc1` become
the source and target points of `xc`, respectively. the source and target points of `xc`, respectively.
\pre `are_mergeable_2`(`xc1`, `xc2`) is true. \pre \link ArrDirectionalTraits::AreMergeable_2 `are_mergeable_2`\endlink(`xc1`, `xc2`) is `true`.
*/ */
void operator()(ArrDirectionalTraits::X_monotone_curve_2 xc1, void operator()(ArrDirectionalTraits::X_monotone_curve_2 xc1,
ArrDirectionalTraits::X_monotone_curve_2 xc2, ArrDirectionalTraits::X_monotone_curve_2 xc2,

View File

@ -149,7 +149,7 @@ template <unsigned int i> bool is_sewable(Dart_const_descriptor d1, Dart_const_d
Links by \f$ \beta_i \f$ two by two all the darts of the orbit <I>D1</I>=\f$ \langle{}\f$\f$ \beta_1\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(`d1`) and <I>D2</I>=\f$ \langle{}\f$\f$ \beta_0\f$,\f$ \beta_2\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(`d2`) such that <I>d2</I>=<I>f</I>(<I>d1</I>), where <I>f</I> is the bijection between <I>D1</I> and <I>D2</I> satisfying: <I>f</I>(<I>d1</I>)=<I>d2</I>, and for all <I>e</I> \f$ \in \f$ <I>D1</I>, for all <I>j</I> \f$ \in \f$ {1,\f$ \ldots\f$,<I>i</I>-2,<I>i</I>+2,\f$ \ldots\f$,<I>d</I>}, <I>f</I>(\f$ \beta_j\f$(<I>e</I>))=\f$ \beta_j^{-1}\f$(<I>f</I>(<I>e</I>)). Links by \f$ \beta_i \f$ two by two all the darts of the orbit <I>D1</I>=\f$ \langle{}\f$\f$ \beta_1\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(`d1`) and <I>D2</I>=\f$ \langle{}\f$\f$ \beta_0\f$,\f$ \beta_2\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(`d2`) such that <I>d2</I>=<I>f</I>(<I>d1</I>), where <I>f</I> is the bijection between <I>D1</I> and <I>D2</I> satisfying: <I>f</I>(<I>d1</I>)=<I>d2</I>, and for all <I>e</I> \f$ \in \f$ <I>D1</I>, for all <I>j</I> \f$ \in \f$ {1,\f$ \ldots\f$,<I>i</I>-2,<I>i</I>+2,\f$ \ldots\f$,<I>d</I>}, <I>f</I>(\f$ \beta_j\f$(<I>e</I>))=\f$ \beta_j^{-1}\f$(<I>f</I>(<I>e</I>)).
If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each <I>j</I>-cells <I>c1</I> and <I>c2</I> which are merged into one <I>j</I>-cell during the sew, the two associated attributes <I>attr1</I> and <I>attr2</I> are considered. If one attribute is `null_descriptor` and the other not, the non `null_descriptor` attribute is associated to all the darts of the resulting cell. When the two attributes are non `null_descriptor`, functor \link CellAttribute::On_merge `Attribute_type<i>::type::On_merge`\endlink is called on the two attributes <I>attr1</I> and <I>attr2</I>. If set, the dynamic onmerge function of <i>i</i>-attributes is also called on <I>attr1</I> and <I>attr2</I>. Then, the attribute <I>attr1</I> is associated to all darts of the resulting <I>j</I>-cell. Finally, attribute <I>attr2</I> is removed from the generic map. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each <I>j</I>-cells <I>c1</I> and <I>c2</I> which are merged into one <I>j</I>-cell during the sew, the two associated attributes <I>attr1</I> and <I>attr2</I> are considered. If one attribute is `null_descriptor` and the other not, the non `null_descriptor` attribute is associated to all the darts of the resulting cell. When the two attributes are non `null_descriptor`, functor \link CellAttribute::On_merge `Attribute_type<i>::type::On_merge`\endlink is called on the two attributes <I>attr1</I> and <I>attr2</I>. If set, the dynamic onmerge function of <i>i</i>-attributes is also called on <I>attr1</I> and <I>attr2</I>. Then, the attribute <I>attr1</I> is associated to all darts of the resulting <I>j</I>-cell. Finally, attribute <I>attr2</I> is removed from the generic map.
\pre \link CombinatorialMap::is_sewable `is_sewable<i>(d1,d2)`\endlink. \pre \link CombinatorialMap::is_sewable `is_sewable<i>`\endlink(`d1`,`d2`).
\cgalAdvancedBegin \cgalAdvancedBegin
If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the generic map can be no more valid after this operation. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the generic map can be no more valid after this operation.

View File

@ -467,14 +467,14 @@ const typename Attribute_type<i>::type::Info & info(Dart_const_descriptor adart)
/*! /*!
A shortcut for \link GenericMap::dart_of_attribute `dart_of_attribute<i>`\endlink`(`\link GenericMap::attribute `attribute<i>`\endlink`(adart))`. A shortcut for \link GenericMap::dart_of_attribute `dart_of_attribute<i>`\endlink`(`\link GenericMap::attribute `attribute<i>`\endlink`(adart))`.
\pre `attribute<i>(adart)!=nullptr`. \pre \link GenericMap::attribute `attribute<i>`\endlink`(adart)!=nullptr`.
*/ */
template<unsigned int i> template<unsigned int i>
Dart_descriptor & dart(Dart_descriptor adart); Dart_descriptor & dart(Dart_descriptor adart);
/*! /*!
A shortcut for \link GenericMap::dart_of_attribute(typename Attribute_const_descriptor<i>::type)const `dart_of_attribute<i>`\endlink`(`\link GenericMap::attribute(Dart_const_descriptor)const `attribute<i>`\endlink`(adart))` for const descriptor. A shortcut for \link GenericMap::dart_of_attribute(typename Attribute_const_descriptor<i>::type)const `dart_of_attribute<i>`\endlink`(`\link GenericMap::attribute(Dart_const_descriptor)const `attribute<i>`\endlink`(adart))` for const descriptor.
\pre `attribute<i>(adart)!=nullptr`. \pre \link GenericMap::attribute(Dart_const_descriptor)const `attribute<i>`\endlink`(adart)!=nullptr`.
*/ */
template<unsigned int i> template<unsigned int i>
Dart_const_descriptor dart(Dart_const_descriptor adart) const; Dart_const_descriptor dart(Dart_const_descriptor adart) const;
@ -771,13 +771,13 @@ bool is_marked(Dart_const_descriptor d, size_type m) const;
/*! /*!
Marks dart `d` for `m`. Marks dart `d` for `m`.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink and `d`\f$ \in \f$ `darts()`. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`) and `d`\f$ \in \f$ `darts()`.
*/ */
void mark(Dart_const_descriptor d, size_type m) const; void mark(Dart_const_descriptor d, size_type m) const;
/*! /*!
Unmarks dart `d` for the mark `m`. Unmarks dart `d` for the mark `m`.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink and `d`\f$ \in \f$ `darts()`. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`) and `d`\f$ \in \f$ `darts()`.
*/ */
void unmark(Dart_const_descriptor d, size_type m) const; void unmark(Dart_const_descriptor d, size_type m) const;
@ -785,31 +785,31 @@ void unmark(Dart_const_descriptor d, size_type m) const;
Inverse the mark `m` for all the darts of the generic map. Inverse the mark `m` for all the darts of the generic map.
All the marked darts become unmarked and all the unmarked darts All the marked darts become unmarked and all the unmarked darts
become marked. become marked.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`).
*/ */
void negate_mark(size_type m) const; void negate_mark(size_type m) const;
/*! /*!
Unmarks all the darts of the generic map for `m`. Unmarks all the darts of the generic map for `m`.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`).
*/ */
void unmark_all(size_type m) const; void unmark_all(size_type m) const;
/*! /*!
Returns the number of marked darts for `m`. Returns the number of marked darts for `m`.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`).
*/ */
size_type number_of_marked_darts(size_type m) const; size_type number_of_marked_darts(size_type m) const;
/*! /*!
Return the number of unmarked darts for `m`. Return the number of unmarked darts for `m`.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`).
*/ */
size_type number_of_unmarked_darts(size_type m) const; size_type number_of_unmarked_darts(size_type m) const;
/*! /*!
Frees mark `m`. Frees mark `m`.
\pre \link GenericMap::is_reserved `is_reserved(m)`\endlink. \pre \link GenericMap::is_reserved `is_reserved`\endlink(`m`).
*/ */
void free_mark(size_type m) const; void free_mark(size_type m) const;
@ -820,7 +820,7 @@ void free_mark(size_type m) const;
/*! /*!
Creates a combinatorial hexahedron (six combinatorial quadrangles 2-sewn together), and adds it in the generic map. Returns a descriptor on one dart of this combinatorial hexahedron. Creates a combinatorial hexahedron (six combinatorial quadrangles 2-sewn together), and adds it in the generic map. Returns a descriptor on one dart of this combinatorial hexahedron.
\pre `dimension` \f$\geq\f$ 2. \pre \link GenericMap::dimension `dimension`\endlink \f$\geq\f$ 2.
\sa `make_edge()` \sa `make_edge()`
\sa `make_combinatorial_polygon()` \sa `make_combinatorial_polygon()`
@ -831,7 +831,7 @@ Dart_descriptor make_combinatorial_hexahedron();
/*! /*!
Creates a combinatorial polygon of length `lg` (a cycle of `lg` edges), and adds it in the generic map. Returns a descriptor on one dart of this combinatorial polygon. Creates a combinatorial polygon of length `lg` (a cycle of `lg` edges), and adds it in the generic map. Returns a descriptor on one dart of this combinatorial polygon.
\pre `dimension`\f$ \geq\f$ 1 and `lg`\f$ >\f$ 0. \pre \link GenericMap::dimension `dimension`\endlink \f$ \geq\f$ 1 and `lg`\f$ >\f$ 0.
\sa `make_edge()` \sa `make_edge()`
\sa `make_combinatorial_tetrahedron()` \sa `make_combinatorial_tetrahedron()`
@ -841,7 +841,7 @@ Dart_descriptor make_combinatorial_polygon(unsigned int lg);
/*! /*!
Creates a combinatorial tetrahedron (four combinatorial triangles 2-sewn together), and adds it in the generic map. Returns a descriptor on one dart of this combinatorial tetrahedron. Creates a combinatorial tetrahedron (four combinatorial triangles 2-sewn together), and adds it in the generic map. Returns a descriptor on one dart of this combinatorial tetrahedron.
\pre `dimension`\f$ \geq\f$ 2. \pre \link GenericMap::dimension `dimension`\endlink \f$ \geq\f$ 2.
\sa `make_edge()` \sa `make_edge()`
\sa `make_combinatorial_polygon()` \sa `make_combinatorial_polygon()`
@ -851,7 +851,7 @@ Dart_descriptor make_combinatorial_tetrahedron();
/*! /*!
Creates an isolated edge (two darts sewn to represent one edge and two vertices) and adds it in the generic map. Returns a descriptor on one dart of this edge. Creates an isolated edge (two darts sewn to represent one edge and two vertices) and adds it in the generic map. Returns a descriptor on one dart of this edge.
\pre `dimension`\f$ \geq\f$ 2. \pre \link GenericMap::dimension `dimension`\endlink \f$ \geq\f$ 2.
\sa `make_combinatorial_polygon()` \sa `make_combinatorial_polygon()`
\sa `make_combinatorial_tetrahedron()` \sa `make_combinatorial_tetrahedron()`
@ -908,7 +908,7 @@ Dart_descriptor insert_cell_0_in_cell_2(Dart_descriptor d);
/*! /*!
Inserts a 1-cell in the 2-cell containing `d1` and `d2`. Returns `previous(d1)`, a descriptor on one dart belonging to the new 1-cell. Inserts a 1-cell in the 2-cell containing `d1` and `d2`. Returns `previous(d1)`, a descriptor on one dart belonging to the new 1-cell.
\pre `is_insertable_cell_1_in_cell_2(d1,d2)`. \pre \link GenericMap::is_insertable_cell_1_in_cell_2 `is_insertable_cell_1_in_cell_2`\endlink(`d1`,`d2`).
See examples for combinatorial map in \cgalFigureRef{fig_cmap_insert_edge} and for generalized map in \cgalFigureRef{fig_gmap_insert_edge}. See examples for combinatorial map in \cgalFigureRef{fig_cmap_insert_edge} and for generalized map in \cgalFigureRef{fig_gmap_insert_edge}.
@ -930,7 +930,7 @@ Dart_descriptor insert_cell_1_in_cell_2(Dart_descriptor d1, Dart_descriptor d2);
/*! /*!
Inserts a 1-cell between the 2-cell containing `d1` and the one containing `d2`. Returns `previous(d1)`, a descriptor on one dart belonging to the new 1-cell. Inserts a 1-cell between the 2-cell containing `d1` and the one containing `d2`. Returns `previous(d1)`, a descriptor on one dart belonging to the new 1-cell.
\pre `is_insertable_cell_1_between_two_cells_2(d1,d2)`. \pre \link GenericMap::is_insertable_cell_1_between_two_cells_2 `is_insertable_cell_1_between_two_cells_2`\endlink(`d1`,`d2`).
If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, call \link CellAttribute::On_merge `Attribute_type<i>::type::On_merge`\endlink(<I>a</I>,<I>a'</I>) is called for all enabled i-attributes, for i>=2, with <I>a</I> the original 2-attribute associated with `d1` and <I>a'</I> the original 2-attribute associated with `d2`. If set, the dynamic on-merge function of i-attributes is also called on <I>a</I> and <I>a'</I>. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, call \link CellAttribute::On_merge `Attribute_type<i>::type::On_merge`\endlink(<I>a</I>,<I>a'</I>) is called for all enabled i-attributes, for i>=2, with <I>a</I> the original 2-attribute associated with `d1` and <I>a'</I> the original 2-attribute associated with `d2`. If set, the dynamic on-merge function of i-attributes is also called on <I>a</I> and <I>a'</I>.
@ -957,7 +957,7 @@ Dart_descriptor insert_cell_1(Dart_descriptor d1, Dart_descriptor d2);
/*! /*!
Inserts a 2-cell along the path of 1-cells containing darts given by the range `[afirst,alast)`. Returns `opposite<2>(*afirst)`, a descriptor on one dart belonging to the new 2-cell. Inserts a 2-cell along the path of 1-cells containing darts given by the range `[afirst,alast)`. Returns `opposite<2>(*afirst)`, a descriptor on one dart belonging to the new 2-cell.
\pre `is_insertable_cell_2_in_cell_3(afirst,alast)`. \pre \link GenericMap::is_insertable_cell_2_in_cell_3 `is_insertable_cell_2_in_cell_3`\endlink(`afirst`,`alast`).
See examples for combinatorial map in \cgalFigureRef{fig_cmap_insert_facet} and for generalized map in \cgalFigureRef{fig_gmap_insert_facet}. See examples for combinatorial map in \cgalFigureRef{fig_cmap_insert_facet} and for generalized map in \cgalFigureRef{fig_gmap_insert_facet}.
@ -1045,7 +1045,7 @@ bool is_removable(Dart_const_descriptor d);
/*! /*!
Removes the <I>i</I>-cell containing `d`. Returns the number of darts removed from the generic map. Removes the <I>i</I>-cell containing `d`. Returns the number of darts removed from the generic map.
\pre `is_removable<i>(d)`. \pre \link GenericMap::is_removable `is_removable<i>`\endlink(`d`).
See examples in \cgalFigureRef{fig_cmap_insert_vertex}, \cgalFigureRef{fig_cmap_insert_edge} and \cgalFigureRef{fig_cmap_insert_facet}. See examples in \cgalFigureRef{fig_cmap_insert_vertex}, \cgalFigureRef{fig_cmap_insert_edge} and \cgalFigureRef{fig_cmap_insert_facet}.

View File

@ -924,7 +924,7 @@ public:
/*! /*!
* @brief same as `face_constraint_index(f)` with `f` being `Triangulation::Facet(ch, index)`. * @brief same as `face_constraint_index(f)` with `f` being `Triangulation::Facet(ch, index)`.
* @pre `is_facet_constrained(f)` * @pre \link Conforming_constrained_Delaunay_triangulation_3::is_facet_constrained `is_facet_constrained`\endlink(`f`)
*/ */
CDT_3_signed_index face_constraint_index(typename Triangulation::Cell_handle ch, int i) const CDT_3_signed_index face_constraint_index(typename Triangulation::Cell_handle ch, int i) const
{ {
@ -934,7 +934,7 @@ public:
/*! /*!
* @brief returns the index of the constraint that constrains the * @brief returns the index of the constraint that constrains the
* facet \p f * facet \p f
* @pre `is_facet_constrained(f)` * @pre \link Conforming_constrained_Delaunay_triangulation_3::is_facet_constrained `is_facet_constrained`\endlink(`f`)
*/ */
CDT_3_signed_index face_constraint_index(const typename Triangulation::Facet& f) const CDT_3_signed_index face_constraint_index(const typename Triangulation::Facet& f) const
{ {

View File

@ -113,7 +113,7 @@ template <unsigned int i> bool is_sewable(Dart_const_descriptor d1, Dart_const_d
Links by \f$ \alpha_i\f$ two by two all the darts of the orbit <I>D1</I>=\f$ \langle{}\f$\f$ \alpha_0\f$,\f$ \ldots\f$,\f$ \alpha_{i-2}\f$,\f$ \alpha_{i+2}\f$,\f$ \ldots\f$,\f$ \alpha_d\f$\f$ \rangle{}\f$(`d1`) and <I>D2</I>=\f$ \langle{}\f$\f$ \alpha_0\f$,\f$ \alpha_2\f$,\f$ \ldots\f$,\f$ \alpha_{i-2}\f$,\f$ \alpha_{i+2}\f$,\f$ \ldots\f$,\f$ \alpha_d\f$\f$ \rangle{}\f$(`d2`) such that <I>d2</I>=<I>f</I>(<I>d1</I>), where <I>f</I> is the bijection between <I>D1</I> and <I>D2</I> satisfying: <I>f</I>(<I>d1</I>)=<I>d2</I>, and for all <I>e</I>\f$ \in\f$ <I>D1</I>, for all <I>j</I>\f$ \in\f$ {1,\f$ \ldots\f$,<I>i</I>-2,<I>i</I>+2,\f$ \ldots\f$,<I>d</I>}, <I>f</I>(\f$ \alpha_j\f$(<I>e</I>))=\f$ \alpha_j\f$(<I>f</I>(<I>e</I>)). Links by \f$ \alpha_i\f$ two by two all the darts of the orbit <I>D1</I>=\f$ \langle{}\f$\f$ \alpha_0\f$,\f$ \ldots\f$,\f$ \alpha_{i-2}\f$,\f$ \alpha_{i+2}\f$,\f$ \ldots\f$,\f$ \alpha_d\f$\f$ \rangle{}\f$(`d1`) and <I>D2</I>=\f$ \langle{}\f$\f$ \alpha_0\f$,\f$ \alpha_2\f$,\f$ \ldots\f$,\f$ \alpha_{i-2}\f$,\f$ \alpha_{i+2}\f$,\f$ \ldots\f$,\f$ \alpha_d\f$\f$ \rangle{}\f$(`d2`) such that <I>d2</I>=<I>f</I>(<I>d1</I>), where <I>f</I> is the bijection between <I>D1</I> and <I>D2</I> satisfying: <I>f</I>(<I>d1</I>)=<I>d2</I>, and for all <I>e</I>\f$ \in\f$ <I>D1</I>, for all <I>j</I>\f$ \in\f$ {1,\f$ \ldots\f$,<I>i</I>-2,<I>i</I>+2,\f$ \ldots\f$,<I>d</I>}, <I>f</I>(\f$ \alpha_j\f$(<I>e</I>))=\f$ \alpha_j\f$(<I>f</I>(<I>e</I>)).
If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each <I>j</I>-cells <I>c1</I> and <I>c2</I> which are merged into one <I>j</I>-cell during the sew, the two associated attributes <I>attr1</I> and <I>attr2</I> are considered. If one attribute is `null_descriptor` and the other not, the non `null_descriptor` attribute is associated to all the darts of the resulting cell. When the two attributes are non `null_descriptor`, functor \link CellAttribute::On_merge `Attribute_type<i>::type::On_merge`\endlink is called on the two attributes <I>attr1</I> and <I>attr2</I>. If set, the dynamic onmerge function of <i>i</i>-attributes is also called on <I>attr1</I> and <I>attr2</I>. Then, the attribute <I>attr1</I> is associated to all darts of the resulting <I>j</I>-cell. Finally, attribute <I>attr2</I> is removed from the generic map. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each <I>j</I>-cells <I>c1</I> and <I>c2</I> which are merged into one <I>j</I>-cell during the sew, the two associated attributes <I>attr1</I> and <I>attr2</I> are considered. If one attribute is `null_descriptor` and the other not, the non `null_descriptor` attribute is associated to all the darts of the resulting cell. When the two attributes are non `null_descriptor`, functor \link CellAttribute::On_merge `Attribute_type<i>::type::On_merge`\endlink is called on the two attributes <I>attr1</I> and <I>attr2</I>. If set, the dynamic onmerge function of <i>i</i>-attributes is also called on <I>attr1</I> and <I>attr2</I>. Then, the attribute <I>attr1</I> is associated to all darts of the resulting <I>j</I>-cell. Finally, attribute <I>attr2</I> is removed from the generic map.
\pre \link GeneralizedMap::is_sewable `is_sewable<i>(d1,d2)`\endlink. \pre \link GeneralizedMap::is_sewable `is_sewable<i>`\endlink(`d1`,`d2`).
\cgalAdvancedBegin \cgalAdvancedBegin
If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the generic map can be no more valid after this operation. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the generic map can be no more valid after this operation.

View File

@ -164,7 +164,7 @@ returns the relative position of point
`p` to the sphere defined by `A = tuple [first,last)`. The `p` to the sphere defined by `A = tuple [first,last)`. The
order of the points of \f$ A\f$ does not matter. order of the points of \f$ A\f$ does not matter.
\pre `orientation(first,last)` is not `ZERO`. \pre \ref CGAL::orientation(ForwardIterator, ForwardIterator) "orientation(first,last)" is not `ZERO`.
\tparam ForwardIterator has `Point_d<R>` as value type. \tparam ForwardIterator has `Point_d<R>` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side

View File

@ -21,7 +21,7 @@ int dimension(const Kernel_d::Point_d& p);
/*! /*!
returns the ith homogeneous coordinate of \f$ p\f$. returns the ith homogeneous coordinate of \f$ p\f$.
\pre `0 <= i <= dimension(p)`. \pre `0 <= i <=` \link Kernel_d::Component_accessor_d::dimension `dimension`\endlink(`p`).
*/ */
Kernel_d::RT homogeneous(const Kernel_d::Point_d& p, Kernel_d::RT homogeneous(const Kernel_d::Point_d& p,
int i); int i);
@ -29,7 +29,7 @@ int i);
/*! /*!
returns the ith %Cartesian coordinate of \f$ p\f$. returns the ith %Cartesian coordinate of \f$ p\f$.
\pre `0 <= i < dimension(p)`. \pre `0 <= i <` \link Kernel_d::Component_accessor_d::dimension `dimension`\endlink(`p`).
*/ */
Kernel_d::FT cartesian(const Kernel_d::Point_d& p, int Kernel_d::FT cartesian(const Kernel_d::Point_d& p, int
i); i);

View File

@ -17,7 +17,7 @@ returns the relative position of point
`p` to the sphere defined by `A = tuple [first,last)`. The `p` to the sphere defined by `A = tuple [first,last)`. The
order of the points of \f$ A\f$ does not matter. order of the points of \f$ A\f$ does not matter.
\pre `orientation(first,last)` is not `ZERO`. \pre \ref CGAL::orientation(ForwardIterator, ForwardIterator) "orientation(first,last)" is not `ZERO`.
\tparam ForwardIterator has `Kernel_d::Point_d` as value type. \tparam ForwardIterator has `Kernel_d::Point_d` as value type.
*/ */
template <class ForwardIterator> Bounded_side template <class ForwardIterator> Bounded_side

View File

@ -66,7 +66,7 @@ Vector& c);
returns the returns the
inverse matrix of `M`. More precisely, \f$ 1/D\f$ times the matrix inverse matrix of `M`. More precisely, \f$ 1/D\f$ times the matrix
returned is the inverse of `M`. returned is the inverse of `M`.
\pre `determinant(M) != 0`. \pre \ref determinant(const Matrix&) "determinant(M)"` != 0`.
\pre \f$ M\f$ is square. \pre \f$ M\f$ is square.
*/ */

View File

@ -172,7 +172,8 @@ intersection between an object of type `Segment_3`, `Ray_3` or
`Intersection operator()(Ray_3 r)` `Intersection operator()(Ray_3 r)`
`Intersection operator()(Line_3 l)` `Intersection operator()(Line_3 l)`
\pre do_intersect_surface(s/r/l) == true
\pre `do_intersect_surface_object(s/r/l)` == `true`
*/ */
typedef unspecified_type Construct_intersection; typedef unspecified_type Construct_intersection;

View File

@ -432,16 +432,15 @@ bool is_isolated(Vertex_const_handle v) ;
returns one halfedge with source `v`. It's the starting point for returns one halfedge with source `v`. It's the starting point for
the circular iteration over the halfedges with source `v`. the circular iteration over the halfedges with source `v`.
\pre `!is_isolated(v)`. \pre `!`\ref is_isolated(Vertex_const_handle) "is_isolated" `(v)`.
*/ */
Halfedge_const_handle first_out_edge(Vertex_const_handle v) ; Halfedge_const_handle first_out_edge(Vertex_const_handle v) ;
/*! /*!
returns the halfedge with source `v` that is the last returns the halfedge with source `v` that is the last
in the circular iteration before encountering `first_out_edge(v)` in the circular iteration before encountering `first_out_edge(v)` again.
again. \pre `!is_isolated(v)`. \pre `!`\ref is_isolated(Vertex_const_handle) "is_isolated" `(v)`.
*/ */
Halfedge_const_handle last_out_edge(Vertex_const_handle v) ; Halfedge_const_handle last_out_edge(Vertex_const_handle v) ;
@ -482,7 +481,8 @@ Face_const_handle face(Halfedge_const_handle e) ;
/*! /*!
returns the face incident to `v`. \pre `is_isolated(v)`. returns the face incident to `v`.
\pre `!`\ref is_isolated(Vertex_const_handle) "is_isolated" `(v)`.
*/ */
Face_const_handle face(Vertex_const_handle v) ; Face_const_handle face(Vertex_const_handle v) ;
@ -733,13 +733,15 @@ bool is_standard(Vertex_const_handle v) ;
/*! /*!
returns the standard returns the standard
point that is the embedding of `v`. \pre `E.is_standard(v)`. point that is the embedding of `v`.
\pre \ref is_standard(Vertex_const_handle v) "is_standard"(`v`).
*/ */
Point point(Vertex_const_handle v) ; Point point(Vertex_const_handle v) ;
/*! /*!
returns the ray defining returns the ray defining
the non-standard point on the frame. \pre `!E.is_standard(v)`. the non-standard point on the frame.
\pre !\ref is_standard(Vertex_const_handle v) "is_standard"(`v`).
*/ */
Ray ray(Vertex_const_handle v) ; Ray ray(Vertex_const_handle v) ;

View File

@ -191,21 +191,20 @@ returns `true` iff
bool is_standard(const Point_2& p) ; bool is_standard(const Point_2& p) ;
/*! /*!
returns returns the standard point represented by `p`.
the standard point represented by `p`. \pre `K.is_standard(p)`. \pre \ref is_standard(const Point_2& p) "is_standard"(`p`).
*/ */
Standard_point_2 standard_point(const Point_2& p) ; Standard_point_2 standard_point(const Point_2& p) ;
/*! /*!
returns returns the oriented line representing the bundle of rays defining `p`.
the oriented line representing the bundle of rays defining `p`. \pre ! \ref is_standard(const Point_2& p) "is_standard"(`p`).
\pre `!K.is_standard(p)`.
*/ */
Standard_line_2 standard_line(const Point_2& p) ; Standard_line_2 standard_line(const Point_2& p) ;
/*! /*!
a ray a ray defining `p`.
defining `p`. \pre `!K.is_standard(p)`. \pre ! \ref is_standard(const Point_2& p) "is_standard"(`p`).
*/ */
Standard_ray_2 standard_ray(const Point_2& p) ; Standard_ray_2 standard_ray(const Point_2& p) ;

View File

@ -1276,7 +1276,7 @@ Cell_handle start, int f) const;
/*! /*!
Copies the `Cell_handle`s of all cells incident to `v` to the output Copies the `Cell_handle`s of all cells incident to `v` to the output
iterator `cells`. Returns the resulting output iterator. iterator `cells`. Returns the resulting output iterator.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `t`.`is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()` and \ref CGAL::Periodic_3_triangulation_3::is_vertex "is_vertex"(`v`)
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1286,7 +1286,7 @@ incident_cells(Vertex_handle v, OutputIterator cells) const;
Copies the `Facet`s incident to `v` to the output iterator Copies the `Facet`s incident to `v` to the output iterator
`facets`. `facets`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `t`.`is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()` and \ref CGAL::Periodic_3_triangulation_3::is_vertex "is_vertex"(`v`)
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1296,7 +1296,7 @@ incident_facets(Vertex_handle v, OutputIterator facets) const;
Copies the `Edge`s incident to `v` to the output iterator Copies the `Edge`s incident to `v` to the output iterator
`edges`. `edges`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `t`.`is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()` and \ref CGAL::Periodic_3_triangulation_3::is_vertex "is_vertex"(`v`)
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1305,7 +1305,7 @@ incident_edges(Vertex_handle v, OutputIterator edges) const;
/*! /*!
Copies the `Vertex_handle`s of all vertices adjacent to `v` to the Copies the `Vertex_handle`s of all vertices adjacent to `v` to the
output iterator `vertices`. Returns the resulting output iterator. output iterator `vertices`. Returns the resulting output iterator.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `t`.`is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()` and \ref CGAL::Periodic_3_triangulation_3::is_vertex "is_vertex"(`v`)
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1313,7 +1313,7 @@ adjacent_vertices(Vertex_handle v, OutputIterator vertices) const;
/*! /*!
Returns the degree of `v`, that is, the number of adjacent vertices. Returns the degree of `v`, that is, the number of adjacent vertices.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `t`.`is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()` and \ref CGAL::Periodic_3_triangulation_3::is_vertex "is_vertex"(`v`)
*/ */
size_type degree(Vertex_handle v) const; size_type degree(Vertex_handle v) const;

View File

@ -314,7 +314,7 @@ Bounded_side bounded_side_2(ForwardIterator first,
const PolygonTraits& traits); const PolygonTraits& traits);
/// Computes if a polygon is clockwise or counterclockwise oriented. /// Computes if a polygon is clockwise or counterclockwise oriented.
/// \pre `is_simple_2(first, last, traits);` /// \pre \link CGAL::is_simple_2 `is_simple_2`\endlink(`first`, `last`, `traits`)
/// ///
/// \tparam Traits is a model of the concept /// \tparam Traits is a model of the concept
/// `PolygonTraits_2`. /// `PolygonTraits_2`.

View File

@ -118,7 +118,7 @@ bool fair(TriangleMesh& tmesh,
@return `true` if fairing is successful, otherwise no vertices are relocated. @return `true` if fairing is successful, otherwise no vertices are relocated.
@pre `is_triangle_mesh(tmesh)` @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
@warning This function involves linear algebra, that is computed using non-exact, floating-point arithmetic. @warning This function involves linear algebra, that is computed using non-exact, floating-point arithmetic.

View File

@ -337,8 +337,8 @@ struct Throw_at_first_output {
* reports all the pairs of faces intersecting between two triangulated surface meshes. * reports all the pairs of faces intersecting between two triangulated surface meshes.
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* \pre `CGAL::is_triangle_mesh(tm1)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm1)` \endlink
* \pre `CGAL::is_triangle_mesh(tm2)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm2)` \endlink
* *
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \tparam FaceRange range of `boost::graph_traits<TriangleMesh>::%face_descriptor`, * \tparam FaceRange range of `boost::graph_traits<TriangleMesh>::%face_descriptor`,
@ -475,7 +475,7 @@ compute_face_face_intersection(const FaceRange& face_range1,
* \attention If a polyline vertex intersects a face, the intersection will * \attention If a polyline vertex intersects a face, the intersection will
* be reported twice (or more if it is on a vertex, edge, or point). * be reported twice (or more if it is on a vertex, edge, or point).
* *
* \pre `CGAL::is_triangle_mesh(tm)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* *
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \tparam FaceRange range of `boost::graph_traits<TriangleMesh>::%face_descriptor`, * \tparam FaceRange range of `boost::graph_traits<TriangleMesh>::%face_descriptor`,
@ -607,7 +607,7 @@ compute_face_polyline_intersection(const FaceRange& face_range,
* \attention If a polyline vertex intersects a face, the intersection will * \attention If a polyline vertex intersects a face, the intersection will
* be reported twice (even more if it is on a vertex, edge, or point). * be reported twice (even more if it is on a vertex, edge, or point).
* *
* \pre `CGAL::is_triangle_mesh(tm)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* *
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \tparam FaceRange range of `boost::graph_traits<TriangleMesh>::%face_descriptor`, * \tparam FaceRange range of `boost::graph_traits<TriangleMesh>::%face_descriptor`,
@ -939,8 +939,8 @@ compute_polylines_polylines_intersection(const PolylineRange& polylines1,
* reports all the pairs of faces intersecting between two triangulated surface meshes. * reports all the pairs of faces intersecting between two triangulated surface meshes.
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tm1)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm1)` \endlink
* @pre `CGAL::is_triangle_mesh(tm2)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm2)` \endlink
* *
* \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
@ -998,7 +998,7 @@ compute_face_face_intersection(const TriangleMesh& tm1,
* \attention If a polyline vertex intersects a face or another polyline, the intersection will * \attention If a polyline vertex intersects a face or another polyline, the intersection will
* be reported twice (even more if it is on a vertex, edge, or point). * be reported twice (even more if it is on a vertex, edge, or point).
* *
* \pre `CGAL::is_triangle_mesh(tm)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* *
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \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
@ -1223,10 +1223,10 @@ bool do_intersect(const Polyline& polyline1,
* In that case, the meshes must be closed. * In that case, the meshes must be closed.
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tm1)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm1)` \endlink
* @pre `CGAL::is_triangle_mesh(tm2)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm2)` \endlink
* @pre `!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm1)` * @pre `!do_overlap_test_of_bounded_sides` || \link CGAL::is_closed `CGAL::is_closed(tm1)` \endlink
* @pre `!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm2)` * @pre `!do_overlap_test_of_bounded_sides` || \link CGAL::is_closed `CGAL::is_closed(tm2)` \endlink
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`
* @tparam NamedParameters1 a sequence of \ref bgl_namedparameters "Named Parameters" for `tm1` * @tparam NamedParameters1 a sequence of \ref bgl_namedparameters "Named Parameters" for `tm1`
@ -1323,7 +1323,7 @@ bool do_intersect(const TriangleMesh& tm1,
* and `false` otherwise. * and `false` otherwise.
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tm)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* *
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \tparam PolylineRange a `RandomAccessRange` of `RandomAccessRange` of points. The point type of the range must be the * \tparam PolylineRange a `RandomAccessRange` of `RandomAccessRange` of points. The point type of the range must be the
@ -1390,7 +1390,7 @@ bool do_intersect(const TriangleMesh& tm,
* returns `true` if there exists a face of `tm` and a segment of `polyline` which intersect, and `false` otherwise. * returns `true` if there exists a face of `tm` and a segment of `polyline` which intersect, and `false` otherwise.
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tm)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* *
* \tparam TriangleMesh a model of `FaceListGraph` * \tparam TriangleMesh a model of `FaceListGraph`
* \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

View File

@ -149,8 +149,8 @@ namespace internal{
* The normal vector to each face is chosen pointing on the side of the face * The normal vector to each face is chosen pointing on the side of the face
* where its sequence of vertices is seen counterclockwise. * where its sequence of vertices is seen counterclockwise.
* *
* @pre `CGAL::is_closed(tm)` * @pre \link CGAL::is_closed `CGAL::is_closed(tm)` \endlink
* @pre `CGAL::is_triangle_mesh(tm)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* @pre If `tm` contains several connected components, they are oriented consistently. * @pre If `tm` contains several connected components, they are oriented consistently.
* In other words, the answer to this predicate would be the same for each * In other words, the answer to this predicate would be the same for each
* isolated connected component. * isolated connected component.
@ -374,7 +374,7 @@ void reverse_face_orientations(const FaceRange& face_range, PolygonMesh& pmesh)
* @param tm a closed triangulated surface mesh * @param tm a closed triangulated surface mesh
* @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
* *
* \pre `CGAL::is_closed(tm)` * @pre \link CGAL::is_closed `CGAL::is_closed(tm)` \endlink
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
@ -700,7 +700,7 @@ void set_cc_intersecting_pairs(
* @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 an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `CGAL::is_closed(tm)` * @pre \link CGAL::is_closed `CGAL::is_closed(tm)` \endlink
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map} * \cgalParamNBegin{vertex_point_map}
@ -1244,7 +1244,7 @@ volume_connected_components(const TriangleMesh& tm,
* @param tm a closed triangulated surface mesh * @param tm a closed triangulated surface mesh
* @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `CGAL::is_closed(tm)` * @pre \link CGAL::is_closed `CGAL::is_closed(tm)` \endlink
* *
* @attention if `tm` is self-intersecting the behavior of this function is undefined. * @attention if `tm` is self-intersecting the behavior of this function is undefined.
* *
@ -1307,7 +1307,7 @@ bool does_bound_a_volume(const TriangleMesh& tm, const NamedParameters& np = par
* @param tm a closed triangulated surface mesh * @param tm a closed triangulated surface mesh
* @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
* *
* @pre `CGAL::is_closed(tm)` * @pre \link CGAL::is_closed `CGAL::is_closed(tm)` \endlink
* *
* \cgalNamedParamsBegin * \cgalNamedParamsBegin
* \cgalParamNBegin{outward_orientation} * \cgalParamNBegin{outward_orientation}

View File

@ -65,7 +65,7 @@ namespace Polygon_mesh_processing {
@return pair of `faces_out` and `vertices_out` @return pair of `faces_out` and `vertices_out`
\pre `is_triangle_mesh(tmesh)` @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
@todo current algorithm iterates 10 times at most, since (I guess) there is no termination proof. @todo current algorithm iterates 10 times at most, since (I guess) there is no termination proof.
*/ */

View File

@ -562,7 +562,7 @@ struct Filter_wrapper_for_cap_needle_removal<TriangleMesh, VPM, Traits, Identity
/// removed by flipping the edge opposite to the largest angle (with the exception of caps on the boundary that are /// removed by flipping the edge opposite to the largest angle (with the exception of caps on the boundary that are
/// simply removed from the mesh). /// simply removed from the mesh).
/// ///
/// @pre `CGAL::is_triangle_mesh(tmesh)` /// @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
/// ///
/// @tparam TriangleMesh a model of `FaceListGraph` and `MutableFaceGraph` /// @tparam TriangleMesh a model of `FaceListGraph` and `MutableFaceGraph`
/// @tparam FaceRange a model of `ConstRange` with `boost::graph_traits<TriangleMesh>::%face_descriptor` as value type /// @tparam FaceRange a model of `ConstRange` with `boost::graph_traits<TriangleMesh>::%face_descriptor` as value type
@ -1371,7 +1371,7 @@ remove_a_border_edge(typename boost::graph_traits<TriangleMesh>::edge_descriptor
// removes the degenerate edges from a triangulated surface mesh. // removes the degenerate edges from a triangulated surface mesh.
// An edge is considered degenerate if its two extremities share the same location. // An edge is considered degenerate if its two extremities share the same location.
// //
// @pre `CGAL::is_triangle_mesh(tmesh)` // @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
// //
// @tparam TriangleMesh a model of `FaceListGraph` and `MutableFaceGraph` // @tparam TriangleMesh a model of `FaceListGraph` and `MutableFaceGraph`
// @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" // @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters"
@ -1926,7 +1926,7 @@ bool remove_degenerate_edges(TriangleMesh& tmesh,
// A face is considered degenerate if two of its vertices share the same location, // A face is considered degenerate if two of its vertices share the same location,
// or more generally if all its vertices are collinear. // or more generally if all its vertices are collinear.
// //
// @pre `CGAL::is_triangle_mesh(tmesh)` // @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
// //
// @tparam TriangleMesh a model of `FaceListGraph` and `MutableFaceGraph` // @tparam TriangleMesh a model of `FaceListGraph` and `MutableFaceGraph`
// @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" // @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters"

View File

@ -523,7 +523,7 @@ self_intersections_impl(const FaceRange& face_range,
* *
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tmesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* *
* @tparam ConcurrencyTag enables sequential versus parallel algorithm. * @tparam ConcurrencyTag enables sequential versus parallel algorithm.
* Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`. * Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`.
@ -591,7 +591,7 @@ self_intersections(const FaceRange& face_range,
* *
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tmesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* *
* @tparam ConcurrencyTag enables sequential versus parallel algorithm. * @tparam ConcurrencyTag enables sequential versus parallel algorithm.
* Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`. * Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`.
@ -656,7 +656,7 @@ self_intersections(const TriangleMesh& tmesh,
* *
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tmesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* *
* @tparam ConcurrencyTag enables sequential versus parallel algorithm. * @tparam ConcurrencyTag enables sequential versus parallel algorithm.
* Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`. * Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`.
@ -727,7 +727,7 @@ bool does_self_intersect(const FaceRange& face_range,
* *
* This function depends on the package \ref PkgBoxIntersectionD. * This function depends on the package \ref PkgBoxIntersectionD.
* *
* @pre `CGAL::is_triangle_mesh(tmesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* *
* @tparam ConcurrencyTag enables sequential versus parallel algorithm. * @tparam ConcurrencyTag enables sequential versus parallel algorithm.
* Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`. * Possible values are `Sequential_tag`, `Parallel_tag`, and `Parallel_if_available_tag`.

View File

@ -124,7 +124,8 @@ public:
* @param vpmap the property map with the points associated to the vertices of `tmesh` * @param vpmap the property map with the points associated to the vertices of `tmesh`
* @param gt an instance of the geometric traits class * @param gt an instance of the geometric traits class
* *
* @pre `CGAL::is_closed(tmesh) && CGAL::is_triangle_mesh(tmesh)` * @pre \link CGAL::is_closed `CGAL::is_closed(tmesh)` \endlink
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
*/ */
Side_of_triangle_mesh(const TriangleMesh& tmesh, Side_of_triangle_mesh(const TriangleMesh& tmesh,
VertexPointMap vpmap, VertexPointMap vpmap,
@ -150,7 +151,8 @@ public:
* @param tmesh the triangulated surface mesh bounding the domain to be tested * @param tmesh the triangulated surface mesh bounding the domain to be tested
* @param gt an instance of the geometric traits class * @param gt an instance of the geometric traits class
* *
* @pre `CGAL::is_closed(tmesh) && CGAL::is_triangle_mesh(tmesh)` * @pre \link CGAL::is_closed `CGAL::is_closed(tmesh)` \endlink
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
*/ */
Side_of_triangle_mesh(const TriangleMesh& tmesh, Side_of_triangle_mesh(const TriangleMesh& tmesh,
const GeomTraits& gt=GeomTraits()) const GeomTraits& gt=GeomTraits())

View File

@ -532,7 +532,7 @@ bool is_used(size_type i) const;
/*! /*!
returns the element at pos `i` in the container. returns the element at pos `i` in the container.
\pre `is_used(i) == true` and \f$ 0 \leq \f$ `i` \f$ < \f$ `capacity()` \pre \link is_used(size_type)const `is_used(i)`\endlink`== true` and \f$ 0 \leq \f$ `i` \f$ < \f$ `capacity()`
*/ */
const T& operator[] (size_type i) const; const T& operator[] (size_type i) const;
@ -545,7 +545,7 @@ const T& operator[] (size_type i) const;
/*! /*!
returns the element at pos `i` in the container. returns the element at pos `i` in the container.
\pre `is_used(i) == true` and \f$ 0 \leq \f$ `i` \f$ < \f$ `capacity()` \pre `\link is_used(size_type)const `is_used(i)`\endlink`== true` and \f$ 0 \leq \f$ `i` \f$ < \f$ `capacity()`
*/ */
T& operator[] (size_type i); T& operator[] (size_type i);

View File

@ -239,14 +239,14 @@ Point_2 target_of_supporting_site(unsigned int i);
/*! /*!
Returns the source point of the `i`-th crossing site of the Returns the source point of the `i`-th crossing site of the
this site. this site.
\pre `is_segment()` must be `true`, `is_input(i)` must be `false` and `i` must either be `0` or `1`. \pre `is_segment()` must be `true`, \link is_input(unsigned int) `is_input(i)`\endlink must be `false` and `i` must either be `0` or `1`.
*/ */
Point_2 source_of_crossing_site(unsigned int i); Point_2 source_of_crossing_site(unsigned int i);
/*! /*!
Returns the target point of the `i`-th supporting site of the Returns the target point of the `i`-th supporting site of the
this site. this site.
\pre `is_segment()` must be `true`, `is_input(i)` must be `false` and `i` must either be `0` or `1`. \pre `is_segment()` must be `true`, \link is_input(unsigned int) `is_input(i)`\endlink must be `false` and `i` must either be `0` or `1`.
*/ */
Point_2 target_of_crossing_site(unsigned int i); Point_2 target_of_crossing_site(unsigned int i);

View File

@ -234,14 +234,14 @@ Point_handle target_of_supporting_site(unsigned int i);
/*! /*!
Returns a handle to the source point of the `i`-th crossing site Returns a handle to the source point of the `i`-th crossing site
of the this site. of the this site.
\pre `is_segment()` must be `true`, `is_input(i)` must be `false` and `i` must either be `0` or `1`. \pre `is_segment()` must be `true`, \link is_input(unsigned int) `is_input(i)`\endlink must be `false` and `i` must either be `0` or `1`.
*/ */
Point_handle source_of_crossing_site(unsigned int i); Point_handle source_of_crossing_site(unsigned int i);
/*! /*!
Returns a handle to the target point of the `i`-th supporting Returns a handle to the target point of the `i`-th supporting
site of the this site. site of the this site.
\pre `is_segment()` must be `true`, `is_input(i)` must be `false` and `i` must either be `0` or `1`. \pre `is_segment()` must be `true`, \link is_input(unsigned int) `is_input(i)`\endlink must be `false` and `i` must either be `0` or `1`.
*/ */
Point_handle target_of_crossing_site(unsigned int i); Point_handle target_of_crossing_site(unsigned int i);

View File

@ -64,7 +64,7 @@ Geom_traits::Iso_rectangle_2 bbox();
/*! /*!
returns the vector field value and the local density. returns the vector field value and the local density.
\pre `is_in_domain(p)` must be `true`. \pre \link is_in_domain `is_in_domain(p)`\endlink must be `true`.
*/ */
std::pair<Vector_2,FT> get_field(Point_2 p); std::pair<Vector_2,FT> get_field(Point_2 p);
@ -76,7 +76,7 @@ bool is_in_domain(Point_2 p);
/*! /*!
returns the integration step at the point `p`, i.e., the distance between `p` and the next point in the polyline. returns the integration step at the point `p`, i.e., the distance between `p` and the next point in the polyline.
\pre `is_in_domain(p)` must be `true`. \pre \link is_in_domain `is_in_domain(p)`\endlink must be `true`.
*/ */
FT get_integration_step(Point_2 p); FT get_integration_step(Point_2 p);

View File

@ -617,7 +617,7 @@ public:
* *
* @param vd a control vertex * @param vd a control vertex
* @param t translation vector * @param t translation vector
* \pre `is_control_vertex(vd)` * \pre \link is_control_vertex `is_control_vertex(vd)`\endlink
*/ */
template<class Vect> template<class Vect>
void translate(vertex_descriptor vd, const Vect& t) void translate(vertex_descriptor vd, const Vect& t)
@ -662,7 +662,7 @@ public:
* @param vd a control vertex * @param vd a control vertex
* @param to_rotation_center the vector to translate the origin to the center of the rotation * @param to_rotation_center the vector to translate the origin to the center of the rotation
* @param quat quaternion of the rotation * @param quat quaternion of the rotation
* \pre `is_control_vertex(vd)` * \pre \link is_control_vertex `is_control_vertex(vd)`\endlink
* \pre `quad` represents a rotation * \pre `quad` represents a rotation
*/ */
template <typename Quaternion, typename Vect> template <typename Quaternion, typename Vect>
@ -709,7 +709,7 @@ public:
/** /**
* Returns the target position of a control vertex. * Returns the target position of a control vertex.
* \param vd a control vertex * \param vd a control vertex
* \pre `is_control_vertex(vd)` * \pre \link is_control_vertex `is_control_vertex(vd)`\endlink
*/ */
const Point& target_position(vertex_descriptor vd) const Point& target_position(vertex_descriptor vd)
{ {

View File

@ -66,7 +66,7 @@ sdf_values( const TriangleMesh& triangle_mesh,
* It is possible to compute raw SDF values (without postprocessing). In such a case, * It is possible to compute raw SDF values (without postprocessing). In such a case,
* -1 is used to indicate when no SDF value could be computed for a facet. * -1 is used to indicate when no SDF value could be computed for a facet.
* *
* @pre `is_triangle_mesh(triangle_mesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`
* @tparam SDFPropertyMap a `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor` as key and `double` as value type * @tparam SDFPropertyMap a `ReadWritePropertyMap` with `boost::graph_traits<TriangleMesh>::%face_descriptor` as key and `double` as value type
@ -119,7 +119,7 @@ sdf_values( const TriangleMesh& triangle_mesh,
* *
* See the section \ref Surface_mesh_segmentationPostprocessing for more details. * See the section \ref Surface_mesh_segmentationPostprocessing for more details.
* *
* @pre `is_triangle_mesh(triangle_mesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* @pre Raw values should be greater or equal to 0. -1 indicates when no value could be computed * @pre Raw values should be greater or equal to 0. -1 indicates when no value could be computed
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`
@ -157,7 +157,7 @@ sdf_values_postprocessing(const TriangleMesh& triangle_mesh,
* \note There is no direct relation between the parameter `number_of_clusters` * \note There is no direct relation between the parameter `number_of_clusters`
* and the final number of segments after segmentation. However, setting a large number of clusters will result in a detailed segmentation of the mesh with a large number of segments. * and the final number of segments after segmentation. However, setting a large number of clusters will result in a detailed segmentation of the mesh with a large number of segments.
* *
* @pre `is_triangle_mesh(triangle_mesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* @pre `number_of_clusters > 0` * @pre `number_of_clusters > 0`
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`
@ -253,7 +253,7 @@ segmentation_via_sdf_values(const TriangleMesh& triangle_mesh,
* it is more efficient to first compute the SDF values using `CGAL::sdf_values()` and use them in different calls to * it is more efficient to first compute the SDF values using `CGAL::sdf_values()` and use them in different calls to
* `CGAL::segmentation_from_sdf_values()`. * `CGAL::segmentation_from_sdf_values()`.
* *
* @pre `is_triangle_mesh(triangle_mesh)` * @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tmesh)` \endlink
* @pre `number_of_clusters > 0` * @pre `number_of_clusters > 0`
* *
* @tparam TriangleMesh a model of `FaceListGraph` * @tparam TriangleMesh a model of `FaceListGraph`

View File

@ -43,7 +43,7 @@ namespace Surface_mesh_topology {
bool can_be_pushed(halfedge_descriptor hd, bool flip=false) const; bool can_be_pushed(halfedge_descriptor hd, bool flip=false) const;
/// adds `hd` at the end of this path. If `flip` is true, the opposite of `hd` is considered. /// adds `hd` at the end of this path. If `flip` is true, the opposite of `hd` is considered.
/// @pre `can_be_pushed(hd)` /// @pre \link can_be_pushed `can_be_pushed(hd)`\endlink
void push_back(halfedge_descriptor hd, bool flip=false); void push_back(halfedge_descriptor hd, bool flip=false);
/// returns `true` iff the dart/halfedge with index `i` can be added at the end of this path. /// returns `true` iff the dart/halfedge with index `i` can be added at the end of this path.
@ -52,7 +52,7 @@ namespace Surface_mesh_topology {
/// adds the dart/halfedge with index `i` at the end of this path. /// adds the dart/halfedge with index `i` at the end of this path.
/// If Mesh is a `Polyhedron_3`, takes time proportional to the number of halfedges. /// If Mesh is a `Polyhedron_3`, takes time proportional to the number of halfedges.
/// @pre `can_be_pushed_by_index(i)` /// @pre \link can_be_pushed_by_index `can_be_pushed_by_index(i)`\endlink
void push_back_by_index(std::size_t i); void push_back_by_index(std::size_t i);
/// adds successively all dart/halfedges in `l` (a sequence of indices), at the end of the path. /// adds successively all dart/halfedges in `l` (a sequence of indices), at the end of the path.

View File

@ -292,7 +292,7 @@ public:
} }
/// Add the given dart at the end of this path. /// Add the given dart at the end of this path.
/// @pre can_be_pushed(dh) /// @pre \link can_be_pushed `can_be_pushed(dh)`\endlink
void push_back(Dart_const_descriptor dh, bool flip=false, void push_back(Dart_const_descriptor dh, bool flip=false,
bool update_isclosed=true) bool update_isclosed=true)
{ {

View File

@ -447,7 +447,7 @@ public:
} }
/// Add the given dart at the end of this path. /// Add the given dart at the end of this path.
/// @pre can_be_pushed(dh) /// @pre \link can_be_pushed `can_be_pushed(dh)`\endlink
void push_back(Dart_const_descriptor dh, bool update_isclosed=true) void push_back(Dart_const_descriptor dh, bool update_isclosed=true)
{ {
CGAL_assertion(dh!=Map::null_descriptor); CGAL_assertion(dh!=Map::null_descriptor);

View File

@ -234,7 +234,7 @@ Finite_facets_iterator finite_facets_end() const;
Copies the `Cell_handle`s of all cells incident to `v` to the output Copies the `Cell_handle`s of all cells incident to `v` to the output
iterator `cells`. If `t.dimension() < 3`, then do nothing. iterator `cells`. If `t.dimension() < 3`, then do nothing.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `v != Vertex_handle()` and \link is_vertex `is_vertex(v->point())`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator

View File

@ -528,7 +528,7 @@ void flip_flippable(Cell_handle c, int i);
Creates a new vertex, inserts it in cell `c` and returns its handle. Creates a new vertex, inserts it in cell `c` and returns its handle.
The cell `c` is split into four new cells, each of these cells being The cell `c` is split into four new cells, each of these cells being
formed by the new vertex and a facet of `c`. formed by the new vertex and a facet of `c`.
\pre `tds`.`dimension()` \f$ = 3\f$ and `c` is a cell of `tds`. \pre `dimension()` \f$ = 3\f$ and \link is_cell `is_cell(c)`\endlink.
*/ */
Vertex_handle insert_in_cell(Cell_handle c); Vertex_handle insert_in_cell(Cell_handle c);
@ -536,14 +536,14 @@ Vertex_handle insert_in_cell(Cell_handle c);
Creates a new vertex, inserts it in facet `f` and returns its handle. Creates a new vertex, inserts it in facet `f` and returns its handle.
In dimension 3, the two incident cells are split into 3 new cells; In dimension 3, the two incident cells are split into 3 new cells;
in dimension 2, the facet is split into 3 facets. in dimension 2, the facet is split into 3 facets.
\pre `tds`.`dimension()` \f$ \geq2\f$ and `f` is a facet of `tds`. \pre `dimension()` \f$ \geq2\f$ and \link is_facet(Cell_handle, int)const `is_facet(f.first, f.second)`\endlink.
*/ */
Vertex_handle insert_in_facet(const Facet & f); Vertex_handle insert_in_facet(const Facet & f);
/*! /*!
Creates a new vertex, inserts it in facet `i` of `c` and returns its Creates a new vertex, inserts it in facet `i` of `c` and returns its
handle. handle.
\pre `tds`.`dimension()` \f$ \geq2\f$, \f$ i \in\{0,1,2,3\}\f$ in dimension 3, \f$ i=3\f$ in dimension 2 and `(c,i)` is a facet of `tds`. \pre `dimension()` \f$ \geq2\f$, \f$ i \in\{0,1,2,3\}\f$ in dimension 3, \f$ i=3\f$ in dimension 2 and \link is_facet(Cell_handle, int)const `is_facet(c, i)`\endlink.
*/ */
Vertex_handle insert_in_facet(Cell_handle c, int i); Vertex_handle insert_in_facet(Cell_handle c, int i);
@ -553,14 +553,14 @@ In dimension 3, all the
incident cells are split into 2 new cells; in dimension 2, the 2 incident cells are split into 2 new cells; in dimension 2, the 2
incident facets are split into 2 new facets; in dimension 1, the edge is incident facets are split into 2 new facets; in dimension 1, the edge is
split into 2 new edges. split into 2 new edges.
\pre `tds`.`dimension()` \f$ \geq1\f$ and `e` is an edge of `tds`. \pre `dimension()` \f$ \geq1\f$ and \link is_edge(Cell_handle, int,int)const `is_edge(e.first, e.second, e.third)`\endlink.
*/ */
Vertex_handle insert_in_edge(Edge e); Vertex_handle insert_in_edge(Edge e);
/*! /*!
Creates a new vertex, inserts it in edge \f$ (i,j)\f$ of `c` and returns its Creates a new vertex, inserts it in edge \f$ (i,j)\f$ of `c` and returns its
handle. handle.
\pre `tds`.`dimension()` \f$ \geq1\f$. \f$ i\neq j\f$, \f$ i,j \in\{0,1,2,3\}\f$ in dimension 3, \f$ i,j \in\{0,1,2\}\f$ in dimension 2, \f$ i,j \in\{0,1\}\f$ in dimension 1 and `(c,i,j)` is an edge of `tds`. \pre `dimension()` \f$ \geq1\f$. \f$ i\neq j\f$, \f$ i,j \in\{0,1,2,3\}\f$ in dimension 3, \f$ i,j \in\{0,1,2\}\f$ in dimension 2, \f$ i,j \in\{0,1\}\f$ in dimension 1 and \link is_edge(Cell_handle, int,int)const `is_edge(c,i,j)`\endlink.
*/ */
Vertex_handle insert_in_edge(Cell_handle c, int i, int j); Vertex_handle insert_in_edge(Cell_handle c, int i, int j);
@ -582,8 +582,7 @@ This method can be used to insert the first two vertices in an empty
triangulation. triangulation.
A handle to `v` is returned. A handle to `v` is returned.
\pre `tds`.`dimension()` \f$ = d < 3\f$. When `tds`.`number_of_vertices()` \f$ >0\f$, \f$ star \neq\f$ `Vertex_handle()` and `star` is a vertex of `tds`. \pre `dimension()` \f$ = d < 3\f$. When `number_of_vertices()` \f$ >0\f$, \f$ star \neq\f$ `Vertex_handle()` and \link is_vertex `is_vertex(star)`\endlink.
\anchor TDS3figtopoinsert_outside_affine_hull \anchor TDS3figtopoinsert_outside_affine_hull
\image html topo-insert_outside_affine_hull.png "insert_increase_dimension (1-dimensional case)." \image html topo-insert_outside_affine_hull.png "insert_increase_dimension (1-dimensional case)."
@ -627,7 +626,8 @@ This operation is the reciprocal of `insert_increase_dimension()`.
It transforms a triangulation of the sphere \f$ S^d\f$ of \f$ \mathbb{R}^{d+1}\f$ into the It transforms a triangulation of the sphere \f$ S^d\f$ of \f$ \mathbb{R}^{d+1}\f$ into the
triangulation of the sphere \f$ S^{d-1}\f$ of \f$ \mathbb{R}^{d}\f$ by removing the vertex triangulation of the sphere \f$ S^{d-1}\f$ of \f$ \mathbb{R}^{d}\f$ by removing the vertex
`v`. Delete the cells incident to `w`, keep the others. `v`. Delete the cells incident to `w`, keep the others.
\pre `tds`.`dimension()` \f$ = d \geq-1\f$. `tds`.`degree(v)` \f$ =\f$ `degree(w)` \f$ =\f$ `tds`.`number_of_vertices()` \f$ -1\f$. \pre `dimension()` \f$ = d \geq-1\f$.
\pre \link degree `degree(v)`\endlink \f$ =\f$ \link degree `degree(w)`\endlink \f$ =\f$ `number_of_vertices()` \f$ -1\f$.
*/ */
void remove_decrease_dimension(Vertex_handle v, Vertex_handle w = v); void remove_decrease_dimension(Vertex_handle v, Vertex_handle w = v);
@ -635,10 +635,10 @@ void remove_decrease_dimension(Vertex_handle v, Vertex_handle w = v);
/*! /*!
Removes `v`. The incident simplices of maximal dimension incident to Removes `v`. The incident simplices of maximal dimension incident to
`v` are replaced by a single simplex of the same dimension. This `v` are replaced by a single simplex of the same dimension. This
operation is exactly the reciprocal to `tds`.`insert_in_cell(v)` in operation is exactly the reciprocal to `insert_in_cell(v)` in
dimension 3, `tds`.`insert_in_facet(v)` in dimension 2, and dimension 3, `insert_in_facet(v)` in dimension 2, and
`tds`.`insert_in_edge(v)` in dimension 1. `insert_in_edge(v)` in dimension 1.
\pre `tds`.`degree(v)` \f$ =\f$ `tds`.`dimension()+1`. \pre \link degree `degree(v)`\endlink \f$ =\f$ `dimension()+1`.
*/ */
Cell_handle remove_from_maximal_dimension_simplex(Vertex_handle v); Cell_handle remove_from_maximal_dimension_simplex(Vertex_handle v);
@ -746,7 +746,7 @@ Cell_handle n2, Cell_handle n3);
\cgalAdvancedBegin \cgalAdvancedBegin
Removes the vertex from the triangulation data structure. Removes the vertex from the triangulation data structure.
\cgalAdvancedEnd \cgalAdvancedEnd
\pre The vertex is a vertex of `tds`. \pre \link is_vertex `is_vertex(v)`\endlink.
*/ */
void delete_vertex( Vertex_handle v ); void delete_vertex( Vertex_handle v );
@ -755,7 +755,7 @@ void delete_vertex( Vertex_handle v );
\cgalAdvancedBegin \cgalAdvancedBegin
Removes the cell from the triangulation data structure. Removes the cell from the triangulation data structure.
\cgalAdvancedEnd \cgalAdvancedEnd
\pre The cell is a cell of `tds`. \pre \link is_cell(Cell_handle)const `is_cell(c)`\endlink.
*/ */
void delete_cell( Cell_handle c ); void delete_cell( Cell_handle c );
@ -924,7 +924,8 @@ Cell_handle start, int f) const;
Copies the `Cell_handle`s of all cells incident to `v` to the Copies the `Cell_handle`s of all cells incident to `v` to the
output iterator `cells`. output iterator `cells`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `tds.dimension()` \f$ =3\f$, `v` \f$ \neq\f$ `Vertex_handle()`, `tds.is_vertex(v)`. \pre `dimension()` \f$ =3\f$
\pre `v` \f$ \neq\f$ `Vertex_handle()` and \link is_vertex `is_vertex(v)`\endlink
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -934,7 +935,8 @@ incident_cells(Vertex_handle v, OutputIterator cells) const;
Copies the `Facet`s incident to `v` to the output iterator Copies the `Facet`s incident to `v` to the output iterator
`facets`. `facets`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `tds.dimension()` \f$ >1\f$, `v` \f$ \neq\f$ `Vertex_handle()`, `tds.is_vertex(v)`. \pre `dimension()` \f$ >1\f$
\pre `v` \f$ \neq\f$ `Vertex_handle()` and \link is_vertex `is_vertex(v)`\endlink
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -943,7 +945,8 @@ incident_facets(Vertex_handle v, OutputIterator facets) const;
/*! /*!
Copies all `Edge`s incident to `v` to the Copies all `Edge`s incident to `v` to the
output iterator `edges`. Returns the resulting output iterator. output iterator `edges`. Returns the resulting output iterator.
\pre `tds.dimension()` \f$ >0\f$, `v` \f$ \neq\f$ `Vertex_handle()`, `tds.is_vertex(v)`. \pre `dimension()` \f$ >0\f$
\pre `v` \f$ \neq\f$ `Vertex_handle()` and \link is_vertex `is_vertex(v)`\endlink
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -951,9 +954,9 @@ incident_edges(Vertex_handle v, OutputIterator edges) const;
/*! /*!
Copies the `Vertex_handle`s of all vertices adjacent to `v` to the Copies the `Vertex_handle`s of all vertices adjacent to `v` to the
output iterator `vertices`. If `tds.dimension()` \f$ <0\f$, then do output iterator `vertices`. If `dimension()` \f$ <0\f$, then do
nothing. Returns the resulting output iterator. nothing. Returns the resulting output iterator.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `tds.is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()` and \link is_vertex `is_vertex(v)`\endlink
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -961,7 +964,8 @@ adjacent_vertices(Vertex_handle v, OutputIterator vertices) const;
/*! /*!
Returns the degree of `v`, that is, the number of incident vertices. Returns the degree of `v`, that is, the number of incident vertices.
\pre `v` \f$ \neq\f$ `Vertex_handle()`, `tds.is_vertex(v)`. \pre `v` \f$ \neq\f$ `Vertex_handle()`
\pre \link is_vertex `is_vertex(v)`\endlink
*/ */
size_type degree(Vertex_handle v) const; size_type degree(Vertex_handle v) const;

View File

@ -1582,7 +1582,8 @@ Cell_handle start, int f) const;
Copies the `Cell_handle`s of all cells incident to `v` to the output Copies the `Cell_handle`s of all cells incident to `v` to the output
iterator `cells`. iterator `cells`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `t.dimension() == 3`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() == 3`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1595,7 +1596,8 @@ Returns `true` in case of success. Otherwise, `cells` is emptied and the functio
returns false. In any case, the locked cells are not unlocked by returns false. In any case, the locked cells are not unlocked by
`try_lock_and_get_incident_cells()`, leaving this choice to the user. `try_lock_and_get_incident_cells()`, leaving this choice to the user.
\pre `t.dimension() == 3`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() == 3`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
bool bool
try_lock_and_get_incident_cells(Vertex_handle v, try_lock_and_get_incident_cells(Vertex_handle v,
@ -1604,7 +1606,8 @@ bool
Copies the `Cell_handle`s of all finite cells incident to `v` to the output Copies the `Cell_handle`s of all finite cells incident to `v` to the output
iterator `cells`. iterator `cells`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `t.dimension() == 3`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() == 3`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1614,7 +1617,8 @@ finite_incident_cells(Vertex_handle v, OutputIterator cells) const;
Copies all `Facet`s incident to `v` to the output iterator Copies all `Facet`s incident to `v` to the output iterator
`facets`. `facets`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `t.dimension() > 1`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() > 1`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1624,7 +1628,8 @@ incident_facets(Vertex_handle v, OutputIterator facets) const;
Copies all finite `Facet`s incident to `v` to the output iterator Copies all finite `Facet`s incident to `v` to the output iterator
`facets`. `facets`.
Returns the resulting output iterator. Returns the resulting output iterator.
\pre `t.dimension() > 1`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() > 1`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1633,7 +1638,8 @@ finite_incident_facets(Vertex_handle v, OutputIterator facets) const;
/*! /*!
Copies all `Edge`s incident to `v` to the Copies all `Edge`s incident to `v` to the
output iterator `edges`. Returns the resulting output iterator. output iterator `edges`. Returns the resulting output iterator.
\pre `t.dimension() > 0`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() > 0`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1642,7 +1648,8 @@ incident_edges(Vertex_handle v, OutputIterator edges) const;
/*! /*!
Copies all finite `Edge`s incident to `v` to the Copies all finite `Edge`s incident to `v` to the
output iterator `edges`. Returns the resulting output iterator. output iterator `edges`. Returns the resulting output iterator.
\pre `t.dimension() > 0`, `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `t.dimension() > 0`
\pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1652,7 +1659,7 @@ finite_incident_edges(Vertex_handle v, OutputIterator edges) const;
Copies the `Vertex_handle`s of all vertices adjacent to `v` to the Copies the `Vertex_handle`s of all vertices adjacent to `v` to the
output iterator `vertices`. If `t.dimension() < 0`, then do output iterator `vertices`. If `t.dimension() < 0`, then do
nothing. Returns the resulting output iterator. nothing. Returns the resulting output iterator.
\pre `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1662,7 +1669,7 @@ adjacent_vertices(Vertex_handle v, OutputIterator vertices) const;
Copies the `Vertex_handle`s of all finite vertices adjacent to `v` to the Copies the `Vertex_handle`s of all finite vertices adjacent to `v` to the
output iterator `vertices`. If `t.dimension() < 0`, then do output iterator `vertices`. If `t.dimension() < 0`, then do
nothing. Returns the resulting output iterator. nothing. Returns the resulting output iterator.
\pre `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
@ -1671,7 +1678,7 @@ finite_adjacent_vertices(Vertex_handle v, OutputIterator vertices) const;
/*! /*!
Returns the degree of `v`, that is, the number of incident vertices. Returns the degree of `v`, that is, the number of incident vertices.
The infinite vertex is counted. The infinite vertex is counted.
\pre `v != Vertex_handle()`, `t.is_vertex(v)`. \pre `v != Vertex_handle()` and \link is_vertex `t.is_vertex(v)`\endlink.
*/ */
size_type degree(Vertex_handle v) const; size_type degree(Vertex_handle v) const;