doc after Monique's review

This commit is contained in:
Jane Tournois 2019-11-05 16:38:33 +01:00
parent 0673838883
commit 145ed35cd0
1 changed files with 71 additions and 68 deletions

View File

@ -1300,104 +1300,106 @@ Points points() const;
\cgalModifBegin \cgalModifBegin
The triangulation defines an iterator that visits the cells intersected by a line segment. The triangulation defines an iterator that visits the cells intersected by a line segment.
The cells visited form a connected region containing both source and target points of the line segment `s`. The cells visited form a connected region containing both source and target points of the line segment `st`.
Each cell falls within one or more of the following categories: Each cell falls within one or more of the following categories:
1. a finite cell whose interior intersects `s` 1. a finite cell whose interior is intersected by `st`
2. a finite cell with a facet `f` whose interior intersects `s` in a line segment. 2. a finite cell with a facet `f` whose interior is intersected by `st` in a line segment.
If such a cell is visited, its neighbor incident to `f` is not visited. If such a cell is visited, its neighbor incident to `f` is not visited.
3. a finite cell with an edge `e` whose interior intersects `s` in a line segment. 3. a finite cell with an edge `e` whose interior is intersected by `st` in a line segment.
If such a cell is visited, none of the other cells incident to `e` are visited. If such a cell is visited, none of the other cells incident to `e` are visited.
4. a finite cell with an edge `e` whose interior intersects `s` in a point. 4. a finite cell with an edge `e` whose interior is intersected by `st` in a point.
This cell must form a connected component together with the other cells incident to `e` that are visited. This cell must form a connected component together with the other cells incident to `e` that are visited.
Exactly two of these visited cells must also fall in category 1 or 2. Exactly two of these visited cells must also fall in category 1 or 2.
5. a finite cell with a vertex `v` that is an endpoint of `s`. 5. a finite cell with a vertex `v` that is an endpoint of `st`.
This cell must also fit in either category 1 or 2. This cell must also fit in either category 1 or 2.
6. a finite cell with a vertex `v` that lies on the interior of `s`. 6. a finite cell with a vertex `v` that lies on the interior of `st`.
This cell must form a connected component together with the other cells incident to `v` that are visited. This cell must form a connected component together with the other cells incident to `v` that are visited.
Exactly two of these cells must also fall in category 1 or 2. Exactly two of these cells must also fall in category 1 or 2.
7. an infinite cell with a finite facet whose interior intersects the interior of `s`. 7. an infinite cell with a finite facet whose interior is intersected by the interior of `st`.
8. an infinite cell with a finite edge `e` whose interior intersects the interior of `s`. 8. an infinite cell with a finite edge `e` whose interior is intersected by the interior of `st`.
If such a cell is visited, its infinite neighbor incident to `e` is not visited. If such a cell is visited, its infinite neighbor incident to `e` is not visited.
9. an infinite cell with a finite vertex `v` that lies on the interior of `s`. 9. an infinite cell with a finite vertex `v` that lies on the interior of `st`.
If such a cell is visited, none of the other infinite cells incident to `v` are visited. If such a cell is visited, none of the other infinite cells incident to `v` are visited.
In the special case where the segment does not intersect any finite facets, exactly one infinite cell is visited. In the special case where the segment does not intersect any finite facets, exactly one infinite cell is visited.
This cell shares a facet `f` with a finite cell `c` such that `f` is intersected by the line through This cell shares a facet `f` with a finite cell `c` such that `f` is intersected by the line through
the source of `s` and the vertex of `c` opposite of `f`. the source of `st` and the vertex of `c` opposite of `f`.
Note that for categories 4 and 6, it is not predetermined which incident cells are visited. Note that for categories 4 and 6, it is not predetermined which incident cells are visited.
However, exactly two of the incident cells `c0,c1` visited also fall in category 1 or 2. However, exactly two of the incident cells `c0,c1` visited also fall in category 1 or 2.
The remaining incident cells visited make a facet-connected sequence connecting `c0` to `c1`. The remaining incident cells visited make a facet-connected sequence connecting `c0` to `c1`.
`Segment_cell_iterator` implements the concept `ForwardIterator` and is non-mutable. `Segment_cell_iterator` implements the concept `ForwardIterator` and is non-mutable.
It is invalidated by any modification of one of the cells traversed. Its `value_type` It is invalidated by any modification of one of the cells traversed.
is `Cell_handle`.
Its `value_type` is `Cell_handle`.
\cgalModifEnd \cgalModifEnd
*/ */
/// @{ /// @{
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the iterator that allows to visit the cells intersected by the line segment `st`. returns the iterator that allows to visit the cells intersected by the line segment `vsvt`.
The starting point of the iterator is the cell containing `s` and intersecting the The starting point of the iterator is the cell containing `s` and intersecting the
line segment `st`. line segment `vsvt`.
The iterator remains valid until the first cell incident to `t` is passed. The iterator remains valid until the first cell incident to `vt` is passed.
\pre `s` and `t` must be different vertices and neither can be the infinite vertex. \pre `vs` and `vt` must be different vertices and neither can be the infinite vertex.
\pre `t.dimension() >= 2` \pre `triangulation.dimension() >= 2`
\cgalModifEnd \cgalModifEnd
*/ */
Segment_cell_iterator segment_traverser_cells_begin(Vertex_handle s, Vertex_handle t) const; Segment_cell_iterator segment_traverser_cells_begin(Vertex_handle vs, Vertex_handle vt) const;
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the past-the-end iterator over the cells intersected by the line segment `st`. returns the past-the-end iterator over the cells intersected by the line segment `vsvt`.
This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has
passed the target. passed the target.
\pre `s` and `t` must be different vertices and neither can be the infinite vertex. \pre `vs` and `vt` must be different vertices and neither can be the infinite vertex.
\pre `t.dimension() >= 2` \pre `triangulation.dimension() >= 2`
\cgalModifEnd \cgalModifEnd
*/ */
Segment_cell_iterator segment_traverser_cells_end(Vertex_handle s, Vertex_handle t) const; Segment_cell_iterator segment_traverser_cells_end(Vertex_handle vs, Vertex_handle vt) const;
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the iterator that allows to visit the cells intersected by the line segment `st`. returns the iterator that allows to visit the cells intersected by the line segment `pspt`.
If there is no such cell, the iterator visits exactly one infinite cell. If there is no such cell, the iterator visits exactly one infinite cell.
The starting point of the iterator is the cell containing `s`. The starting point of the iterator is the cell containing `ps`.
If more than one cell If more than one cell
contains `s` (e.g. if `s` lies on a vertex), contains `ps` (e.g. if `ps` lies on a vertex),
the starting point is the cell intersecting the line segment `st`. the starting point is the cell intersecting the line segment `pspt`.
The iterator remains valid until the first cell containing `t` is passed. The iterator remains valid until the first cell containing `pt` is passed.
The optional argument `hint` can reduce the time to construct the iterator if it is close to `s`. The optional argument `hint` can reduce the time to construct the iterator
if it is geometrically close to `ps`.
\pre `s` and `t` must be different points. \pre `ps` and `pt` must be different points.
\pre `t.dimension() >= 2`. If the dimension is 2, both `s` and `t` must lie in the affine hull. \pre `triangulation.dimension() >= 2`. If the dimension is 2, both `ps` and `pt` must lie in the affine hull.
\cgalModifEnd \cgalModifEnd
*/ */
Segment_cell_iterator segment_traverser_cells_begin(const Point& s, const Point& t, Cell_handle hint = Cell_handle()) const; Segment_cell_iterator segment_traverser_cells_begin(const Point& ps, const Point& pt, Cell_handle hint = Cell_handle()) const;
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the past-the-end iterator over the cells intersected by the line segment `st`. returns the past-the-end iterator over the cells intersected by the line segment `pspt`.
This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has
passed the target. passed the target.
The optional argument `hint` can reduce the time to construct the iterator if it is close to `s`. The optional argument `hint` can reduce the time to construct the iterator if it is close to `ps`.
\pre `s` and `t` must be different and finite points \pre `ps` and `pt` must be different points
\pre `t.dimension() >= 2` \pre `triangulation.dimension() >= 2`
\cgalModifEnd \cgalModifEnd
*/ */
Segment_cell_iterator segment_traverser_cells_end(const Point& s, const Point& t, Cell_handle hint = Cell_handle()) const; Segment_cell_iterator segment_traverser_cells_end(const Point& ps, const Point& pt, Cell_handle hint = Cell_handle()) const;
/// @} /// @}
@ -1406,84 +1408,85 @@ Segment_cell_iterator segment_traverser_cells_end(const Point& s, const Point& t
The triangulation defines an iterator that visits all the triangulation simplices The triangulation defines an iterator that visits all the triangulation simplices
(vertices, edges, facets and cells) intersected by a line segment. (vertices, edges, facets and cells) intersected by a line segment.
The iterator covers a connected sequence of simplices - possibly of all dimensions - The iterator covers a connected sequence of simplices - possibly of all dimensions -
intersected by the line segment `s`. intersected by the line segment `st`.
Each simplex falls within one or more of the following categories: Each simplex falls within one or more of the following categories:
1. a finite cell whose interior intersects `s`, 1. a finite cell whose interior is intersected by `st`,
2. a facet `f` whose interior intersects `s` in a point, 2. a facet `f` whose interior is intersected by `st` in a point,
3. a facet `f` whose interior intersects `s` in a line segment, 3. a facet `f` whose interior is intersected by `st` in a line segment,
4. an edge `e` whose interior intersects `s` in a point, 4. an edge `e` whose interior is intersected by `st` in a point,
5. an edge `e` whose interior intersects `s` in a line segment, 5. an edge `e` whose interior is intersected by `st` in a line segment,
6. a vertex `v` lying on `s`. 6. a vertex `v` lying on `st`.
In the special case where the segment does not intersect any finite facets, exactly one infinite cell is visited. In the special case where the segment does not intersect any finite facets, exactly one infinite cell is visited.
This cell shares a facet `f` with a finite cell `c` such that `f` is intersected by the line through This cell shares a facet `f` with a finite cell `c` such that `f` is intersected by the line through
the source of `s` and the vertex of `c` opposite of `f`. the source of `st` and the vertex of `c` opposite of `f`.
`Segment_simplex_iterator` implements the concept `ForwardIterator` and is non-mutable. `Segment_simplex_iterator` implements the concept `ForwardIterator` and is non-mutable.
It is invalidated by any modification of one of the cells traversed. It is invalidated by any modification of one of the cells traversed.
Its `value_type` is `Triangulation_simplex_3`. Its `value_type` is `Triangulation_simplex_3`.
\cgalModifEnd \cgalModifEnd
*/ */
/// @{ /// @{
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the iterator that allows to visit the simplices intersected by the line segment `st`. returns the iterator that allows to visit the simplices intersected by the line segment `vsvt`.
The starting point of the iterator is `s`. The starting point of the iterator is `vs`.
The iterator remains valid until `t` is passed. The iterator remains valid until `vt` is passed.
\pre `s` and `t` must be different vertices and neither can be the infinite vertex. \pre `vs` and `vt` must be different vertices and neither can be the infinite vertex.
\pre `t.dimension() >= 2` \pre `triangulation.dimension() >= 2`
\cgalModifEnd \cgalModifEnd
*/ */
Segment_simplex_iterator segment_traverser_simplices_begin(Vertex_handle s, Vertex_handle t) const; Segment_simplex_iterator segment_traverser_simplices_begin(Vertex_handle vs, Vertex_handle vt) const;
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the past-the-end iterator over the cells intersected by the line segment `st`. returns the past-the-end iterator over the cells intersected by the line segment `vsvt`.
This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has This iterator cannot be dereferenced. It indicates when the `Segment_cell_iterator` has
passed the target. passed the target.
\pre `s` and `t` must be different vertices and neither can be the infinite vertex. \pre `vs` and `vt` must be different vertices and neither can be the infinite vertex.
\pre `t.dimension() >= 2` \pre `triangulation.dimension() >= 2`
\cgalModifEnd \cgalModifEnd
*/ */
Segment_simplex_iterator segment_traverser_simplices_end(Vertex_handle s, Vertex_handle t) const; Segment_simplex_iterator segment_traverser_simplices_end(Vertex_handle vs, Vertex_handle t) const;
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the iterator that allows to visit the simplices intersected by the line segment `st`. returns the iterator that allows to visit the simplices intersected by the line segment `pspt`.
If there is no such cell, the iterator visits exactly one infinite cell. If there is no such cell, the iterator visits exactly one infinite cell.
The starting point of the iterator is the lowest dimension simplex containing `s`. The starting point of the iterator is the lowest dimension simplex containing `ps`.
The iterator remains valid until the first simplex containing `t` is passed. 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 `s`. The optional argument `hint` can reduce the time to construct the iterator if it is close to `ps`.
\pre `s` and `t` must be different points. \pre `ps` and `pt` must be different points.
\pre `t.dimension() >= 2`. If the dimension is 2, both `s` and `t` must lie in the affine hull. \pre `triangulation.dimension() >= 2`. If the dimension is 2, both `ps` and `pt` must lie in the affine hull.
\cgalModifEnd \cgalModifEnd
*/ */
Segment_simplex_iterator segment_traverser_simplices_begin(const Point& s, const Point& t, Cell_handle hint = Cell_handle()) const; Segment_simplex_iterator segment_traverser_simplices_begin(const Point& ps, const Point& pt, Cell_handle hint = Cell_handle()) const;
/*! /*!
\cgalModifBegin \cgalModifBegin
returns the past-the-end iterator over the simplices intersected by the line segment `st`. returns the past-the-end iterator over the simplices intersected by the line segment `pspt`.
This iterator cannot be dereferenced. It indicates when the `Segment_simplex_iterator` has This iterator cannot be dereferenced. It indicates when the `Segment_simplex_iterator` has
passed the target. passed the target.
The optional argument `hint` can reduce the time to construct the iterator if it is close to `s`. The optional argument `hint` can reduce the time to construct the iterator if it is close to `ps`.
\pre `s` and `t` must be different and finite points \pre `ps` and `pt` must be different and finite points
\pre `t.dimension() >= 2` \pre `triangulation.dimension() >= 2`
\cgalModifEnd \cgalModifEnd
*/ */
Segment_simplex_iterator segment_traverser_simplices_end(const Point& s, const Point& t, Cell_handle hint = Cell_handle()) const; Segment_simplex_iterator segment_traverser_simplices_end(const Point& ps, const Point& pt, Cell_handle hint = Cell_handle()) const;
/// @} /// @}