Add missing function doc links (#9074)

## Summary of Changes

Fix missing links in doc.

tentative TODO:
- [ ] Check all \`.+\(.+\).*\` --> stopped at BGL
- [ ] Plenty of wrong links for the overloaded functions like <em>A
shortcut to `CGAL::draw(vd2,
Graphics_scene_options_voronoi_diagram_2{})`.</em>, which points to
`CGAL::draw(T2)`.

## Release Management

* Affected package(s): Various
* Issue(s) solved (if any): https://github.com/CGAL/cgal/issues/7839
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
This commit is contained in:
Sebastien Loriot 2025-10-17 15:29:09 +02:00 committed by GitHub
commit d13510bdee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 236 additions and 217 deletions

View File

@ -44,12 +44,14 @@ Type of input datum.
typedef unspecified_type Datum;
/*!
Point reference type returned by the function `point(const Shared_data&)`. It is convertible to the type `Point`.
Point reference type returned by the function \link reference_point `reference_point(const Shared_data&)`\endlink.
It is convertible to the type `Point`.
*/
typedef unspecified_type Point_reference;
/*!
Datum reference type returned by the function `datum(const Shared_data&)`. It is convertible to the type `Datum`.
Datum reference type returned by the function \link datum `datum(const Shared_data&)`\endlink.
It is convertible to the type `Datum`.
*/
typedef unspecified_type Datum_reference;

View File

@ -128,7 +128,7 @@ namespace CGAL {
* @param first iterator over first primitive to insert
* @param beyond past-the-end iterator
*
* constructs an empty tree followed by a call to `insert(first,last,t...)`.
* constructs an empty tree followed by a call to \link insert(InputIterator, InputIterator, T&&...) `insert(first,last,t...)`\endlink.
* The tree stays empty if the memory allocation is not successful.
*/
template<typename InputIterator,typename ... T>
@ -140,7 +140,8 @@ namespace CGAL {
/// This procedure is called implicitly at the first call to a query member function.
/// An explicit call to `build()` must be made to ensure that the next call to
/// a query function will not trigger the construction of the data structure.
/// A call to `AABBTraits::set_shared_data(t...)` is made using the internally stored traits.
/// A call to \link AABBTraits::set_shared_data `AABBTraits::set_shared_data(t...)`\endlink
// is made using the internally stored traits.
/// This procedure has a complexity of \cgalBigO{n log(n)}, where \f$n\f$ is the number of
/// primitives of the tree.
template<typename ... T>
@ -160,16 +161,17 @@ namespace CGAL {
/// \name Operations
///@{
/// is equivalent to calling `clear()`, `insert(first,last,t...)`, and `build()`
/// is equivalent to calling `clear()`, \link insert(InputIterator, InputIterator, T&&...) `insert(first,last,t...)`\endlink,
// and `build()`
template<typename ConstPrimitiveIterator,typename ... T>
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T&& ...);
/// adds a sequence of primitives to the set of primitives of the AABB tree.
/// `%InputIterator` is any iterator and the parameter pack `T` contains any types
/// such that `Primitive` has a constructor with the following signature:
/// `Primitive(%InputIterator, T...)`. If `Primitive` is a model of the concept
/// `AABBPrimitiveWithSharedData`, a call to `AABBTraits::set_shared_data(t...)`
/// `AABBPrimitiveWithSharedData`, a call to
/// \link AABBTraits::set_shared_data `AABBTraits::set_shared_data(t...)`\endlink
/// is made using the internally stored traits.
template<typename InputIterator,typename ... T>
void insert(InputIterator first, InputIterator beyond,T&& ...);

View File

@ -7,7 +7,7 @@ A model of the concept `FromDoubleConstructible` is required
to be constructible from the type `double`.
In case the type is a model of `RealEmbeddable` too, for any double d
the identity: `d == CGAL::to_double(T(d))`, is guaranteed.
the identity: `d == ` \link CGAL::to_double ` CGAL::to_double(T(d))`\endlink, is guaranteed.
*/

View File

@ -112,7 +112,7 @@ typedef Gt::Site_2 Site_2;
the edge type.
The `Edge(f,i)` is the edge common to faces `f` and
`f.neighbor(i)`. It is also the edge joining the vertices
`vertex(cw(i))` and `vertex(ccw(i))` of `f`.
`f->vertex(cw(i))` and `f->vertex(ccw(i))` of `f`.
\pre `i` must be `0`, `1` or `2`.
*/
typedef Data_structure::Edge Edge;

View File

@ -1048,8 +1048,8 @@ not coincide with any existing arrangement vertex and does not lie on
any edge. As mentioned in Section \ref arr_ssectraverse, it is
possible to obtain the face containing an isolated vertex calling the
member function `Arrangement_on_surface_2::Vertex::face()`. The member
function
`Arrangement_on_surface_2::remove_isolated_vertex(Vertex_handle v)`
function \link Arrangement_on_surface_2::remove_isolated_vertex()
`Arrangement_on_surface_2::remove_isolated_vertex(Vertex_handle v)`\endlink
accepts a handle to an isolated vertex and removes it from the
arrangement.

View File

@ -18,7 +18,7 @@ public:
/*! accepts two <I>mergeable</I> \f$x\f$-monotone curves `xc1` and `xc2`
* 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,
AosTraits::X_monotone_curve_2 xc2,

View File

@ -87,9 +87,9 @@ boost::graph_traits<Graph>::edge_iterator ei;
Algorithms obtain incidence information in graphs with the help of global
functions such as:
- `std::pair<vertex_iterator,vertex_iterator> vertices(const Graph& g);` to obtain an iterator range providing access to all the vertices, or
- `vertices_size_type num_vertices(const Graph&);` to obtain the number of vertices of a graph, or
- `vertex_descriptor source(edge_descriptor, const Graph&);` to obtain the source vertex of an edge.
- \ref VertexListGraph::vertices(const VertexListGraph&) "std::pair<vertex_iterator,vertex_iterator> vertices(const Graph& g)" to obtain an iterator range providing access to all the vertices, or
- \link VertexListGraph::num_vertices(const VertexListGraph&) `vertices_size_type num_vertices(const Graph&)`\endlink to obtain the number of vertices of a graph, or
- \link IncidenceGraph `vertex_descriptor source(edge_descriptor, const Graph&)` \endlink to obtain the source vertex of an edge.
Note, that the way we have written the types is a simplification; in reality,
the signature of the first of the above functions is:

View File

@ -1572,7 +1572,7 @@ does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor
*
* \returns vertex `v1`.
* \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>
typename boost::graph_traits<Graph>::vertex_descriptor
@ -1690,7 +1690,7 @@ collapse_edge(typename boost::graph_traits<Graph>::edge_descriptor e,
* \returns vertex `v1`.
* \pre This function requires `g` to be an oriented 2-manifold with or without boundaries.
* Furthermore, the edge `v0v1` must satisfy the link condition, which guarantees that the surface mesh is also 2-manifold after the edge collapse.
* \pre `get(edge_is_constrained_map, v0v1)==false`.
* \pre `get(edge_is_constrained_map, v0v1) == false`.
* \pre `v0` and `v1` are not both incident to a constrained edge.
*/

View File

@ -64,7 +64,7 @@ namespace Barycentric_coordinates {
\return an output iterator to the element in the destination range,
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<
typename OutIterator,
@ -133,7 +133,7 @@ namespace Barycentric_coordinates {
\return a tuple `std::tuple<GeomTraits::FT, GeomTraits::FT, GeomTraits::FT>`
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>
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
the source point of `xc2` and the target point of `xc1` become
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,
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>)).
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
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))`.
\pre `attribute<i>(adart)!=nullptr`.
\pre \link GenericMap::attribute `attribute<i>`\endlink`(adart)!=nullptr`.
*/
template<unsigned int i>
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.
\pre `attribute<i>(adart)!=nullptr`.
\pre \link GenericMap::attribute(Dart_const_descriptor)const `attribute<i>`\endlink`(adart)!=nullptr`.
*/
template<unsigned int i>
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`.
\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;
/*!
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;
@ -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.
All the marked darts become unmarked and all the unmarked darts
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;
/*!
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;
/*!
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;
/*!
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;
/*!
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;
@ -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.
\pre `dimension` \f$\geq\f$ 2.
\pre \link GenericMap::dimension `dimension`\endlink \f$\geq\f$ 2.
\sa `make_edge()`
\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.
\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_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.
\pre `dimension`\f$ \geq\f$ 2.
\pre \link GenericMap::dimension `dimension`\endlink \f$ \geq\f$ 2.
\sa `make_edge()`
\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.
\pre `dimension`\f$ \geq\f$ 2.
\pre \link GenericMap::dimension `dimension`\endlink \f$ \geq\f$ 2.
\sa `make_combinatorial_polygon()`
\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.
\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}.
@ -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.
\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>.
@ -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.
\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}.
@ -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.
\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}.

View File

@ -930,7 +930,7 @@ public:
/*!
* @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
{
@ -940,7 +940,7 @@ public:
/*!
* @brief returns the index of the constraint that constrains the
* 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
{

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>)).
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
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

@ -75,7 +75,7 @@ public:
Point_d(double x0, double x1, ...);
/*! introduces a point with coordinate set `[first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `distance(first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `std::distance(first,end)`.
\tparam ForwardIterator has its value type that is convertible to `double`.
*/
template<typename ForwardIterator>
@ -108,7 +108,7 @@ public:
Vector_d(double x0, double x1, ...);
/*! introduces a vector with coordinate set `[first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `distance(first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `std::distance(first,end)`.
\tparam ForwardIterator has its value type that is convertible to `double`.
*/
template<typename ForwardIterator>

View File

@ -63,7 +63,7 @@ public:
Point_d(double x0, double x1, ...);
/*! introduces a point with coordinate set `[first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `distance(first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `std::distance(first,end)`.
\tparam InputIterator has its value type that is convertible to `double`.
*/
template<typename InputIterator>
@ -98,7 +98,7 @@ public:
Vector_d(double x0, double x1, ...);
/*! introduces a vector with coordinate set `[first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `distance(first,end)`.
\pre If `DimensionTag` is a fixed dimension, it matches `std::distance(first,end)`.
\tparam InputIterator has its value type that is convertible to `double`.
*/
template<typename InputIterator>

View File

@ -164,7 +164,7 @@ returns the relative position of point
`p` to the sphere defined by `A = tuple [first,last)`. The
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.
*/
template <class ForwardIterator> Bounded_side

View File

@ -19,7 +19,7 @@ the dimension of \f$ p\f$.
int dimension(const Kernel_d::Point_d& p);
/*!
returns the ith homogeneous coordinate of \f$ p\f$.
returns the i-th homogeneous coordinate of \f$ p\f$.
\pre `0 <= i <= dimension(p)`.
*/
@ -27,7 +27,7 @@ Kernel_d::RT homogeneous(const Kernel_d::Point_d& p,
int i);
/*!
returns the ith %Cartesian coordinate of \f$ p\f$.
returns the i-th %Cartesian coordinate of \f$ p\f$.
\pre `0 <= i < dimension(p)`.
*/

View File

@ -17,7 +17,7 @@ returns the relative position of point
`p` to the sphere defined by `A = tuple [first,last)`. The
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.
*/
template <class ForwardIterator> Bounded_side

View File

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

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
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) ;
/*!
returns the halfedge with source `v` that is the last
in the circular iteration before encountering `first_out_edge(v)`
again. \pre `!is_isolated(v)`.
in the circular iteration before encountering `first_out_edge(v)` again.
\pre `!`\ref is_isolated(Vertex_const_handle) "is_isolated" `(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) ;
@ -733,13 +733,15 @@ bool is_standard(Vertex_const_handle v) ;
/*!
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) ;
/*!
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) ;

View File

@ -191,21 +191,20 @@ returns `true` iff
bool is_standard(const Point_2& p) ;
/*!
returns
the standard point represented by `p`. \pre `K.is_standard(p)`.
returns the standard point represented by `p`.
\pre \ref is_standard(const Point_2& p) "is_standard"(`p`).
*/
Standard_point_2 standard_point(const Point_2& p) ;
/*!
returns
the oriented line representing the bundle of rays defining `p`.
\pre `!K.is_standard(p)`.
returns the oriented line representing the bundle of rays defining `p`.
\pre ! \ref is_standard(const Point_2& p) "is_standard"(`p`).
*/
Standard_line_2 standard_line(const Point_2& p) ;
/*!
a ray
defining `p`. \pre `!K.is_standard(p)`.
a ray defining `p`.
\pre ! \ref is_standard(const Point_2& p) "is_standard"(`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
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>
OutputIterator
@ -1286,7 +1286,7 @@ incident_cells(Vertex_handle v, OutputIterator cells) const;
Copies the `Facet`s incident to `v` to the output iterator
`facets`.
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>
OutputIterator
@ -1296,7 +1296,7 @@ incident_facets(Vertex_handle v, OutputIterator facets) const;
Copies the `Edge`s incident to `v` to the output iterator
`edges`.
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>
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
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>
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.
\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;

View File

@ -314,7 +314,7 @@ Bounded_side bounded_side_2(ForwardIterator first,
const PolygonTraits& traits);
/// 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
/// `PolygonTraits_2`.

View File

@ -118,7 +118,7 @@ bool fair(TriangleMesh& tmesh,
@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.

View File

@ -337,8 +337,8 @@ struct Throw_at_first_output {
* reports all the pairs of faces intersecting between two triangulated surface meshes.
* This function depends on the package \ref PkgBoxIntersectionD.
*
* \pre `CGAL::is_triangle_mesh(tm1)`
* \pre `CGAL::is_triangle_mesh(tm2)`
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm1)` \endlink
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm2)` \endlink
*
* \tparam TriangleMesh a model of `FaceListGraph`
* \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
* 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 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
* 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 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.
* This function depends on the package \ref PkgBoxIntersectionD.
*
* @pre `CGAL::is_triangle_mesh(tm1)`
* @pre `CGAL::is_triangle_mesh(tm2)`
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm1)` \endlink
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm2)` \endlink
*
* \tparam TriangleMesh a model of `FaceListGraph`
* \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
* 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 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.
* This function depends on the package \ref PkgBoxIntersectionD.
*
* @pre `CGAL::is_triangle_mesh(tm1)`
* @pre `CGAL::is_triangle_mesh(tm2)`
* @pre `!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm1)`
* @pre `!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm2)`
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm1)` \endlink
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm2)` \endlink
* @pre `!do_overlap_test_of_bounded_sides` || \link CGAL::is_closed `CGAL::is_closed(tm1)` \endlink
* @pre `!do_overlap_test_of_bounded_sides` || \link CGAL::is_closed `CGAL::is_closed(tm2)` \endlink
*
* @tparam TriangleMesh a model of `FaceListGraph`
* @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.
* 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 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.
* 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 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
* where its sequence of vertices is seen counterclockwise.
*
* @pre `CGAL::is_closed(tm)`
* @pre `CGAL::is_triangle_mesh(tm)`
* @pre \link CGAL::is_closed `CGAL::is_closed(tm)` \endlink
* @pre \link CGAL::is_triangle_mesh `CGAL::is_triangle_mesh(tm)` \endlink
* @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
* 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 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
* \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 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
* \cgalParamNBegin{vertex_point_map}
@ -1244,7 +1244,7 @@ volume_connected_components(const TriangleMesh& tm,
* @param tm a closed triangulated surface mesh
* @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.
*
@ -1307,7 +1307,7 @@ bool does_bound_a_volume(const TriangleMesh& tm, const NamedParameters& np = par
* @param tm a closed triangulated surface mesh
* @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
* \cgalParamNBegin{outward_orientation}

View File

@ -65,7 +65,7 @@ namespace Polygon_mesh_processing {
@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.
*/

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
/// 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 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.
// 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 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,
// 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 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.
*
* @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.
* 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.
*
* @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.
* 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.
*
* @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.
* 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.
*
* @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.
* 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 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,
VertexPointMap vpmap,
@ -150,7 +151,8 @@ public:
* @param tmesh the triangulated surface mesh bounding the domain to be tested
* @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,
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.
\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;
@ -545,7 +545,7 @@ const T& operator[] (size_type i) const;
/*!
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);

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
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);
/*!
Returns the target point of the `i`-th supporting 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_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
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);
/*!
Returns a handle to the target point of the `i`-th supporting
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);

View File

@ -64,7 +64,7 @@ Geom_traits::Iso_rectangle_2 bbox();
/*!
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);
@ -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.
\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);

View File

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

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,
* -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 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.
*
* @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
*
* @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`
* 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`
*
* @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
* `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`
*
* @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;
/// 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);
/// 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.
/// 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);
/// 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.
/// @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,
bool update_isclosed=true)
{

View File

@ -447,7 +447,7 @@ public:
}
/// 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)
{
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
iterator `cells`. If `t.dimension() < 3`, then do nothing.
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>
OutputIterator
@ -346,7 +346,7 @@ all the cells (resp. facets) describing the hole, creates a new vertex
a new cell (resp. facet) with `v` as vertex. Then `v->set_point(p)`
is called and `v` is returned.
\pre `t.dimension() >= 2`, the set of cells (resp. facets in dimension 2) is connected, its boundary is connected, and `p` lies inside the hole, which is star-shaped wrt `p`.
\pre `dimension() >= 2`, the set of cells (resp. facets in dimension 2) is connected, its boundary is connected, and `p` lies inside the hole, which is star-shaped wrt `p`.
*/
template <class CellIt>
Vertex_handle insert_in_hole(Point p, CellIt cell_begin, CellIt cell_end,

View File

@ -116,9 +116,9 @@ typedef unspecified_type Vertex_handle;
typedef unspecified_type Cell_handle;
/*!
Can be `CGAL::Sequential_tag`, `CGAL::Parallel_tag`, or `Parallel_if_available_tag`. If it is
Can be `CGAL::Sequential_tag`, `CGAL::Parallel_tag`, or `CGAL::Parallel_if_available_tag`. If it is
`CGAL::Parallel_tag`, the following functions can be called concurrently:
`create_vertex`, `create_cell`, `delete_vertex`, `delete_cell`.
`create_vertex()`, `create_cell()`, `delete_vertex()`, `delete_cell()`.
*/
typedef unspecified_type Concurrency_tag;
@ -232,13 +232,13 @@ TriangulationDataStructure_3(const TriangulationDataStructure_3 & tds1);
/*!
Assignment operator. All vertices and cells are duplicated, and the former
data structure of `tds` is deleted.
data structure is deleted.
*/
TriangulationDataStructure_3& operator= (const TriangulationDataStructure_3 & tds1);
/*!
`tds1` is copied into `tds`. If `v != Vertex_handle()`,
the vertex of `tds` corresponding to `v` is returned,
`tds1` is copied into `this`. If `v != Vertex_handle()`,
the vertex corresponding to `v` is returned,
otherwise `Vertex_handle()` is returned.
\pre The optional argument `v` is a vertex of `tds1`.
*/
@ -266,19 +266,19 @@ otherwise `Vertex_handle()` is returned.
\pre The optional argument `v` is a vertex of `tds_src` or is `Vertex_handle()`.
*/
template <class TDS_src, class ConvertVertex, class ConvertCell>
Vertex_handle tds.copy_tds(const TDS_src& tds_src, typename TDS_src::Vertex_handle v, const ConvertVertex& convert_vertex, const ConvertCell& convert_cell);
Vertex_handle copy_tds(const TDS_src& tds_src, typename TDS_src::Vertex_handle v, const ConvertVertex& convert_vertex, const ConvertCell& convert_cell);
/*!
Swaps `tds` and `tds1`. There is no copy of cells and vertices,
Swaps `this` and `tds1`. There is no copy of cells and vertices,
thus this method runs in constant time. This method should be preferred to
`tds`=`tds1` or `tds`(`tds1`) when `tds1` is deleted after
that.
copy assignment (`*this = tds1`) or copy construction (`*this(tds1)`)
if `tds1` is deleted after the copy.
*/
void swap(TriangulationDataStructure_3 & tds1);
/*!
Deletes all cells and vertices. `tds` is reset as a triangulation
data structure constructed by the default constructor.
Deletes all cells and vertices. The triangulation data structure is reset as if
constructed by the default constructor.
*/
void clear();
@ -301,7 +301,7 @@ counted.
size_type number_of_vertices() const;
/*!
The number of cells. Returns 0 if `tds`.`dimension()`\f$ <3\f$.
The number of cells. Returns 0 if `dimension()`\f$ <3\f$.
*/
size_type number_of_cells() const;
@ -311,12 +311,12 @@ size_type number_of_cells() const;
/// @{
/*!
The number of facets. Returns 0 if `tds`.`dimension()`\f$ <2\f$.
The number of facets. Returns 0 if `dimension()`\f$ <2\f$.
*/
size_type number_of_facets() const;
/*!
The number of edges. Returns 0 if `tds`.`dimension()`\f$ <1\f$.
The number of edges. Returns 0 if `dimension()`\f$ <1\f$.
*/
size_type number_of_edges() const;
@ -339,19 +339,19 @@ void set_dimension(int n);
/// @{
/*!
Tests whether `v` is a vertex of `tds`.
Tests whether `v` is a vertex of the triangulation data structure.
*/
bool is_vertex(Vertex_handle v) const;
/*!
Tests whether `(c,i,j)` is an edge of `tds`. Answers `false` when
`dimension()` \f$ <1\f$ .
Tests whether `(c,i,j)` is an edge of the triangulation data structure.
Answers `false` when `dimension()` \f$ <1\f$ .
\pre \f$ i,j \in\{0,1,2,3\}\f$
*/
bool is_edge(Cell_handle c, int i, int j) const;
/*!
Tests whether `(u,v)` is an edge of `tds`. If the edge is found,
Tests whether `(u,v)` is an edge of the triangulation data structure. If the edge is found,
it computes a cell `c` having this edge and the indices `i`
and `j` of the vertices `u` and `v`, in this order.
*/
@ -359,19 +359,19 @@ bool is_edge(Vertex_handle u, Vertex_handle v,
Cell_handle & c, int & i, int & j) const;
/*!
Tests whether `(u,v)` is an edge of `tds`.
Tests whether `(u,v)` is an edge of the triangulation data structure.
*/
bool is_edge(Vertex_handle u, Vertex_handle v) const;
/*!
Tests whether `(c,i)` is a facet of `tds`. Answers `false` when
`dimension()` \f$ <2\f$ .
Tests whether `(c,i)` is a facet of of the triangulation data structure.
Answers `false` when `dimension()` \f$ <2\f$ .
\pre \f$ i \in\{0,1,2,3\}\f$
*/
bool is_facet(Cell_handle c, int i) const;
/*!
Tests whether `(u,v,w)` is a facet of `tds`. If the facet is found,
Tests whether `(u,v,w)` is a facet of the triangulation data structure. If the facet is found,
it computes a cell `c` having this facet and the indices `i`,
`j` and `k` of the vertices `u`, `v` and `w`, in
this order.
@ -380,13 +380,13 @@ bool is_facet(Vertex_handle u, Vertex_handle v, Vertex_handle w,
Cell_handle & c, int & i, int & j, int & k) const;
/*!
Tests whether `c` is a cell of `tds`. Answers `false` when
`dimension()` \f$ <3\f$ .
Tests whether `c` is a cell of the triangulation data structure.
Answers `false` when `dimension()` \f$ <3\f$ .
*/
bool is_cell(Cell_handle c) const;
/*!
Tests whether `(u,v,w,t)` is a cell of `tds`. If the cell
Tests whether `(u,v,w,t)` is a cell of the triangulation data structure. If the cell
`c` is found, it computes the indices `i`, `j`, `k`
and `l` of the vertices `u`, `v`, `w` and `t` in
`c`, in this order.
@ -401,7 +401,7 @@ Cell_handle & c, int & i, int & j, int & k, int & l) const;
/*!
If `v` is a vertex of `f`, then `j` is the index of
`v` in the cell `f.first`, and the method returns `true`.
\pre `tds`.dimension()=3
\pre `dimension() == 3`
*/
bool has_vertex(const Facet & f, Vertex_handle v, int & j) const;
@ -429,17 +429,17 @@ bool has_vertex(Cell_handle c, int i, Vertex_handle v) const;
/// @{
/*!
\pre `dimension() == 3`
*/
bool are_equal(const Facet & f, const Facet & g) const;
/*!
\pre `dimension() == 3`
*/
bool are_equal(Cell_handle c, int i, Cell_handle n, int j) const;
/*!
For these three methods: \pre `tds`.dimension()=3.
\pre `dimension() == 3`
*/
bool are_equal(const Facet & f, Cell_handle n, int j) const;
@ -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.
The cell `c` is split into four new cells, each of these cells being
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);
@ -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.
In dimension 3, the two incident cells are split into 3 new cells;
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);
/*!
Creates a new vertex, inserts it in facet `i` of `c` and returns its
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);
@ -553,14 +553,14 @@ In dimension 3, all the
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
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);
/*!
Creates a new vertex, inserts it in edge \f$ (i,j)\f$ of `c` and returns its
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);
@ -582,8 +582,7 @@ This method can be used to insert the first two vertices in an empty
triangulation.
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
\image html topo-insert_outside_affine_hull.png "insert_increase_dimension (1-dimensional case)."
@ -603,15 +602,14 @@ described, and `begin->neighbor(i)` does not. Then this function deletes
all the cells (resp. facets) describing the hole, creates a new vertex
`v`, and for each facet (resp. edge) on the boundary of the hole, creates
a new cell (resp. facet) with `v` as vertex. `v` is returned.
\pre `tds`.`dimension()` \f$ \geq2\f$, the set of cells (resp. facets) is connected, and its boundary is connected.
\pre `dimension()` \f$ \geq2\f$, the set of cells (resp. facets) is connected, and its boundary is connected.
*/
template <class CellIt>
Vertex_handle insert_in_hole(CellIt cell_begin, CellIt cell_end,
Cell_handle begin, int i);
/*!
Same as above, except that `newv` will be used as the new vertex, which
must have been allocated previously with e.g. `create_vertex`.
Same as above, except that `newv` will be used as the new vertex, which must have been allocated previously with, e.g., `create_vertex()`.
*/
template <class CellIt>
Vertex_handle insert_in_hole(CellIt cell_begin, CellIt cell_end,
@ -627,7 +625,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
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.
\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);
@ -635,10 +634,10 @@ void remove_decrease_dimension(Vertex_handle v, Vertex_handle w = v);
/*!
Removes `v`. The incident simplices of maximal dimension incident to
`v` are replaced by a single simplex of the same dimension. This
operation is exactly the reciprocal to `tds`.`insert_in_cell(v)` in
dimension 3, `tds`.`insert_in_facet(v)` in dimension 2, and
`tds`.`insert_in_edge(v)` in dimension 1.
\pre `tds`.`degree(v)` \f$ =\f$ `tds`.`dimension()+1`.
operation is exactly the reciprocal to `insert_in_cell(v)` in
dimension 3, `insert_in_facet(v)` in dimension 2, and
`insert_in_edge(v)` in dimension 1.
\pre \link degree `degree(v)`\endlink \f$ =\f$ `dimension()+1`.
*/
Cell_handle remove_from_maximal_dimension_simplex(Vertex_handle v);
@ -656,7 +655,8 @@ triangulation of the sphere \f$ S^d\f$ of \f$ \mathbb{R}^{d+1}\f$ onto the
triangulation of the sphere \f$ S^{d-1}\f$ of \f$ \mathbb{R}^{d}\f$ formed by the link of `v`
augmented with the vertex `v` itself, for \f$ d\f$==2,3; this one is placed on the facet `(c, i)`
(see Fig. \ref TDS3dim_down).
\pre The dimension must be 2 or 3. The degree of `v` must be equal to the total number of vertices of the triangulation data structure minus 1.
\pre The dimension must be 2 or 3.
\pre The degree of `v` must be equal to the total number of vertices of the triangulation data structure minus 1.
\anchor TDS3dim_down
\image html tds-dim_down.png
@ -680,7 +680,7 @@ void decrease_dimension(Cell_handle c, int i);
\cgalAdvancedBegin
Changes the orientation of all cells of the triangulation data structure.
\cgalAdvancedEnd
\pre `tds`.`dimension()` \f$ \geq1\f$.
\pre `dimension()` \f$ \geq1\f$.
*/
void reorient();
@ -746,7 +746,7 @@ Cell_handle n2, Cell_handle n3);
\cgalAdvancedBegin
Removes the vertex from the triangulation data structure.
\cgalAdvancedEnd
\pre The vertex is a vertex of `tds`.
\pre \link is_vertex `is_vertex(v)`\endlink.
*/
void delete_vertex( Vertex_handle v );
@ -755,7 +755,7 @@ void delete_vertex( Vertex_handle v );
\cgalAdvancedBegin
Removes the cell from the triangulation data structure.
\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 );
@ -783,7 +783,7 @@ void delete_cells(CellIt first, CellIt last);
/// @{
/*!
Returns `cells_end()` when `tds.dimension()` \f$ <3\f$.
Returns `cells_end()` when `dimension()` \f$ <3\f$.
*/
Cell_iterator cells_begin() const;
@ -794,7 +794,7 @@ Cell_iterator cells_end() const;
/*!
Low-level access to the cells, does not return `cells_end()`
when `tds.dimension()` \f$ <3\f$.
when `dimension()` \f$ <3\f$.
*/
Cell_iterator raw_cells_begin() const;
@ -804,7 +804,7 @@ Cell_iterator raw_cells_begin() const;
Cell_iterator raw_cells_end() const;
/*!
Returns `facets_end()` when `tds.dimension()` \f$ <2\f$.
Returns `facets_end()` when `dimension()` \f$ <2\f$.
*/
Facet_iterator facets_begin() const;
@ -814,7 +814,7 @@ Facet_iterator facets_begin() const;
Facet_iterator facets_end() const;
/*!
Returns `edges_end()` when `tds.dimension()` \f$ <1\f$.
Returns `edges_end()` when `dimension()` \f$ <1\f$.
*/
Edge_iterator edges_begin() const;
@ -840,7 +840,7 @@ Vertex_iterator vertices_end() const;
/*!
Starts at an arbitrary cell incident to `e`.
\pre `tds.dimension()` \f$ =3\f$
\pre `dimension()` \f$ =3\f$
*/
Cell_circulator incident_cells(const Edge & e) const;
@ -851,7 +851,7 @@ Cell_circulator incident_cells(Cell_handle c, int i, int j) const;
/*!
Starts at cell `start`.
\pre `tds.dimension()` \f$ =3\f$ and `start` is incident to `e`.
\pre `dimension()` \f$ =3\f$ and `start` is incident to `e`.
*/
Cell_circulator incident_cells(const Edge & e, Cell_handle start) const;
@ -865,9 +865,9 @@ const;
Starts at an arbitrary facet incident to `e`.
Only defined in dimension 3, though are defined also in dimension 2:
there are only two facets sahring an edge in dimension 2.
there are only two facets sharing an edge in dimension 2.
\pre `tds.dimension()` \f$ =3\f$
\pre `dimension()` \f$ =3\f$
*/
Facet_circulator incident_facets(Edge e) const;
@ -875,7 +875,7 @@ Facet_circulator incident_facets(Edge e) const;
As above for edge `(i,j)` of `c`.
Only defined in dimension 3, though are defined also in dimension 2:
there are only two facets sahring an edge in dimension 2.
there are only two facets sharing an edge in dimension 2.
*/
Facet_circulator incident_facets(Cell_handle c, int i, int j) const;
@ -883,7 +883,7 @@ Facet_circulator incident_facets(Cell_handle c, int i, int j) const;
Starts at facet `start`.
Only defined in dimension 3, though are defined also in dimension 2:
there are only two facets sahring an edge in dimension 2.
there are only two facets sharing an edge in dimension 2.
\pre `start` is incident to `e`.
*/
@ -893,7 +893,7 @@ Facet_circulator incident_facets(Edge e, Facet start) const;
Starts at facet of index `f` in `start`.
Only defined in dimension 3, though are defined also in dimension 2:
there are only two facets sahring an edge in dimension 2.
there are only two facets sharing an edge in dimension 2.
*/
Facet_circulator incident_facets(Edge e, Cell_handle start, int f) const;
@ -901,7 +901,7 @@ Facet_circulator incident_facets(Edge e, Cell_handle start, int f) const;
As above for edge `(i,j)` of `c`.
Only defined in dimension 3, though are defined also in dimension 2:
there are only two facets sahring an edge in dimension 2.
there are only two facets sharing an edge in dimension 2.
*/
Facet_circulator incident_facets(Cell_handle c, int i, int j,
Facet start) const;
@ -910,7 +910,7 @@ Facet start) const;
As above for edge `(i,j)` of `c` and facet `(start,f)`.
Only defined in dimension 3, though are defined also in dimension 2:
there are only two facets sahring an edge in dimension 2.
there are only two facets sharing an edge in dimension 2.
*/
Facet_circulator incident_facets(Cell_handle c, int i, int j,
Cell_handle start, int f) const;
@ -924,7 +924,8 @@ Cell_handle start, int f) const;
Copies the `Cell_handle`s of all cells incident to `v` to the
output iterator `cells`.
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>
OutputIterator
@ -934,7 +935,8 @@ incident_cells(Vertex_handle v, OutputIterator cells) const;
Copies the `Facet`s incident to `v` to the output iterator
`facets`.
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>
OutputIterator
@ -943,7 +945,8 @@ incident_facets(Vertex_handle v, OutputIterator facets) const;
/*!
Copies all `Edge`s incident to `v` to the
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>
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
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.
\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>
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.
\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;
@ -1045,7 +1049,7 @@ Writes `tds` into the stream `os`
ostream& operator<< (ostream& os, const TriangulationDataStructure_3 & tds);
/*! \ingroup PkgIOTDS3
The tds streamed in `is`, of original type `TDS_src`, is written into the triangulation data structure. As the vertex and cell
The triangulation data structure streamed in `is`, of original type `TDS_src`, is written into the triangulation data structure. As the vertex and cell
types might be different and incompatible, the creation of new cells and vertices
is made thanks to the functors `convert_vertex` and `convert_cell`, that convert
vertex and cell types. For each vertex `v_src` in `is`, the corresponding

View File

@ -225,7 +225,7 @@ is called and `v` is returned.
If the hole contains interior vertices, each of them is hidden by the insertion
of `p` and is stored in the new cell which contains it.
\pre `rt`.`dimension()` \f$ \geq2\f$, the set of cells (resp. facets in dimension 2) is connected, not empty, its boundary is connected, and `p` lies inside the hole, which is star-shaped wrt `p`.
\pre `dimension()` \f$ \geq2\f$, the set of cells (resp. facets in dimension 2) is connected, not empty, its boundary is connected, and `p` lies inside the hole, which is star-shaped wrt `p`.
*/
template <class CellIt>
Vertex_handle insert_in_hole(const Weighted_point& p,
@ -320,7 +320,7 @@ of `c` is less than \f$ \pi/2\f$ or if these two spheres do not
intersect. For an
infinite cell this means that `p` does not satisfy either of the
two previous conditions.
\pre `rt`.`dimension()` \f$ =3\f$.
\pre `dimension()` \f$ =3\f$.
*/
Bounded_side
side_of_power_sphere(Cell_handle c, const Weighted_point & p) const;
@ -372,7 +372,7 @@ If the point `p` is collinear with the finite edge `e` of
`ON_BOUNDARY` if \f$ \Pi({p}^{(w)}-{z(e)}^{(w)})=0\f$,
`ON_UNBOUNDED_SIDE` if \f$ \Pi({p}^{(w)}-{z(e)}^{(w)})>0\f$ .
\pre `rt`.`dimension()` \f$ \geq2\f$.
\pre `dimension()` \f$ \geq2\f$.
*/
Bounded_side
side_of_power_circle(const Facet & f,
@ -395,7 +395,7 @@ In dimension 1, returns
`ON_BOUNDARY` if \f$ \Pi({p}^{(w)}-{z(c)}^{(w)})=0\f$,
`ON_UNBOUNDED_SIDE` if \f$ \Pi({p}^{(w)}-{z(c)}^{(w)})>0\f$ .
\pre `rt`.`dimension()` \f$ = 1\f$.
\pre `dimension()` \f$ = 1\f$.
*/
Bounded_side
side_of_power_segment(Cell_handle c, const Weighted_point & p)
@ -412,7 +412,7 @@ The default constructed
handle is returned if the triangulation is empty.
The optional argument `c` is a hint
specifying where to start the search.
\pre `c` is a cell of `rt`.
\pre `c` is a cell of the regular triangulation.
*/
Vertex_handle nearest_power_vertex(const Bare_point& p,
@ -461,7 +461,7 @@ Compute the conflicts with `p`.
among the internal or boundary facets of the conflict zone, and false otherwise.
\pre The starting cell (resp.\ facet) `c` must be in conflict with `p`.
\pre `rt`.`dimension()` \f$ \geq2\f$, and `c` is in conflict with `p`.
\pre `dimension()` \f$ \geq2\f$, and `c` is in conflict with `p`.
\return the `Triple` composed of the resulting output iterators.
@ -492,7 +492,7 @@ vertices_in_conflict(const Weighted_point& p, Cell_handle c, OutputIterator res)
Similar to `find_conflicts()`, but reports the vertices which are on the
boundary of the conflict zone of `p`, in the output iterator `res`.
Returns the resulting output iterator.
\pre `rt`.`dimension()` \f$ \geq2\f$, and `c` is a cell containing `p`.
\pre `dimension()` \f$ \geq2\f$, and `c` is a cell containing `p`.
*/
template <class OutputIterator>
@ -505,7 +505,7 @@ the interior of the conflict zone of `p`, in the output iterator
`res`. The vertices that are on the boundary of the conflict zone are
not reported.
Returns the resulting output iterator.
\pre `rt`.`dimension()` \f$ \geq2\f$, and `c` is a cell containing `p`.
\pre `dimension()` \f$ \geq2\f$, and `c` is a cell containing `p`.
*/
template <class OutputIterator>
@ -555,7 +555,7 @@ bool is_Gabriel(Vertex_handle v);
/*!
Returns the weighted circumcenter of the four vertices of c.
\pre `rt`.`dimension()`\f$ =3\f$ and `c` is not infinite.
\pre `dimension()`\f$ =3\f$ and `c` is not infinite.
*/
Bare_point dual(Cell_handle c) const;
@ -566,7 +566,7 @@ in dimension 3: either a segment, if the two cells incident to `f`
are finite, or a ray, if one of them is infinite;
in dimension 2: a point.
\pre `rt`.`dimension()` \f$ \geq2\f$ and `f` is not infinite.
\pre `dimension()` \f$ \geq2\f$ and `f` is not infinite.
*/
Object dual(Facet f) const;
@ -576,7 +576,7 @@ same as the previous method for facet `(c,i)`.
Object dual(Cell_handle c, int i) const;
/*!
Sends the set of duals to all the facets of `rt` into `os`.
Writes the set of duals to all the facets of the regular triangulation into `os`.
*/
template <class Stream> Stream & draw_dual(Stream & os);

View File

@ -1394,7 +1394,7 @@ The first cell incident to `vt` is the last valid value of the iterator.
It is followed by `segment_traverser_cells_end()`.
\pre `vs` and `vt` must be different vertices and neither can be the infinite vertex.
\pre `triangulation.dimension() >= 2`
\pre `t.dimension() >= 2`
*/
Segment_cell_iterator segment_traverser_cells_begin(Vertex_handle vs, Vertex_handle vt) const;
@ -1419,7 +1419,7 @@ The optional argument `hint` can reduce the time to construct the iterator
if it is geometrically close to `ps`.
\pre `ps` and `pt` must be different points.
\pre `triangulation.dimension() >= 2`. If the dimension is 2, both `ps` and `pt` must lie in the affine hull.
\pre `t.dimension() >= 2`. If the dimension is 2, both `ps` and `pt` must lie in the affine hull.
*/
Segment_cell_iterator segment_traverser_cells_begin(const Point& ps, const Point& pt, Cell_handle hint = Cell_handle()) const;
@ -1429,7 +1429,7 @@ returns the past-the-end iterator over the intersected cells.
This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has
passed the target.
\pre `triangulation.dimension() >= 2`
\pre `t.dimension() >= 2`
*/
Segment_cell_iterator segment_traverser_cells_end() const;
@ -1470,7 +1470,7 @@ The initial value of the iterator is `vs`.
The iterator remains valid until `vt` is passed.
\pre `vs` and `vt` must be different vertices and neither can be the infinite vertex.
\pre `triangulation.dimension() >= 2`
\pre `t.dimension() >= 2`
*/
Segment_simplex_iterator segment_traverser_simplices_begin(Vertex_handle vs, Vertex_handle vt) const;
@ -1486,7 +1486,7 @@ The iterator remains valid until the first simplex containing `pt` is passed.
The optional argument `hint` can reduce the time to construct the iterator if it is close to `ps`.
\pre `ps` and `pt` must be different points.
\pre `triangulation.dimension() >= 2`. If the dimension is 2, both `ps` and `pt` must lie in the affine hull.
\pre `t.dimension() >= 2`. If the dimension is 2, both `ps` and `pt` must lie in the affine hull.
*/
Segment_simplex_iterator segment_traverser_simplices_begin(const Point& ps, const Point& pt, Cell_handle hint = Cell_handle()) const;
@ -1496,7 +1496,7 @@ returns the past-the-end iterator over the intersected simplices.
This iterator cannot be dereferenced. It indicates when the `Segment_simplex_iterator` has
passed the target.
\pre `triangulation.dimension() >= 2`
\pre `t.dimension() >= 2`
*/
Segment_simplex_iterator segment_traverser_simplices_end() const;
@ -1582,7 +1582,8 @@ Cell_handle start, int f) const;
Copies the `Cell_handle`s of all cells incident to `v` to the output
iterator `cells`.
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>
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
`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
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
iterator `cells`.
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>
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
`facets`.
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>
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
`facets`.
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>
OutputIterator
@ -1633,7 +1638,8 @@ finite_incident_facets(Vertex_handle v, OutputIterator facets) const;
/*!
Copies all `Edge`s incident to `v` to the
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>
OutputIterator
@ -1642,7 +1648,8 @@ incident_edges(Vertex_handle v, OutputIterator edges) const;
/*!
Copies all finite `Edge`s incident to `v` to the
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>
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
output iterator `vertices`. If `t.dimension() < 0`, then do
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>
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
output iterator `vertices`. If `t.dimension() < 0`, then do
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>
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.
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;