Continue doc of GMap for operations.

This commit is contained in:
Guillaume Damiand 2016-08-09 17:03:10 -04:00
parent 9d3fe41fbd
commit 417ddaa469
3 changed files with 7 additions and 8 deletions

View File

@ -242,7 +242,7 @@ typedef CGAL::Combinatorial_map<3, Example_items_3> Example_custom_cmap3;
\section Combinatorial_mapIteration Iteration and Creation Operations
An important operation in combinatorial maps consists in iterating over specific subsets of darts or over attributes. For that, several <I>ranges</I> are offered (see Section \ref ssecrange "Iterating over Orbits, Cells, and Attributes"). A range is a model of the `Range` concept, thus supporting the two methods `begin()` and `end()` allowing to iterate over all the elements in the range. Several global functions allow to create specific configurations of darts into a combinatorial map (see Section \ref ssecconstruction "Construction Operations"). Darts can be marked during operations, for example when performing a breadth-first search traversal, thanks to Boolean marks (see Sections \ref ssecadvmarks "Boolean Marks").
An important operation in combinatorial maps consists in iterating over specific subsets of darts or over attributes. For that, several <I>ranges</I> are offered (see Section \ref ssecrange "Iterating over Orbits, Cells, and Attributes"). A range is a model of the `Range` concept, thus supporting the two methods `begin()` and `end()` allowing to iterate over all the elements in the range. Several global functions allow to create specific configurations of darts into a combinatorial map (see Section \ref ssecconstruction "Construction Operations"). Darts can be marked during operations, for example when performing a breadth-first search traversal, thanks to Boolean marks (see Sections \ref ssecadvmarks "Boolean Marks"). In the following, we denote by `dh0`, `dh1`, `dh2` the dart handles for the darts `d0`, `d1`, `d2`, respectively. That is `d0 == *dh0`.
\subsection ssecrange Iterating over Orbits, Cells, and Attributes

View File

@ -745,7 +745,7 @@ Dart_handle make_edge();
/// @{
/*!
Inserts a 0-cell in the 1-cell containing `dh`. Returns a handle on one dart belonging to the new 0-cell.
Inserts a 0-cell in the 1-cell containing `dh`. Returns \f$ \alpha_0\f$(`dh`), a handle on one dart belonging to the new 0-cell.
\pre \ref GeneralizedMap::dimension "dimension"\f$ \geq\f$ 1 and `*dh`\f$ \in\f$\ref GeneralizedMap::darts "darts()".
See example in \cgalFigureRef{fig_gmap_insert_vertex}.
@ -787,7 +787,7 @@ If \link GeneralizedMap::are_attributes_automatically_managed `are_attributes_au
Dart_handle insert_cell_0_in_cell_2(Dart_handle dh);
/*!
Inserts a 1-cell in the 2-cell containing `dh1` and `dh2`. Returns \f$ \beta_0\f$(`dh1`), a handle on one dart belonging to the new 1-cell.
Inserts a 1-cell in the 2-cell containing `dh1` and `dh2`. Returns \f$ \alpha_0(\alpha_1\f$(`dh1`)), a handle on one dart belonging to the new 1-cell and not to the same vertex than `dh1`.
\pre `is_insertable_cell_1_in_cell_2(dh1,dh2)`.
See example in \cgalFigureRef{fig_gmap_insert_edge}.
@ -809,7 +809,7 @@ If \link GeneralizedMap::are_attributes_automatically_managed `are_attributes_au
Dart_handle insert_cell_1_in_cell_2(Dart_handle dh1, Dart_handle dh2);
/*!
Inserts a 2-cell along the path of 1-cells containing darts given by the range `[afirst,alast)`. Returns a handle on one dart belonging to the new 2-cell.
Inserts a 2-cell along the path of 1-cells containing darts given by the range `[afirst,alast)`. Returns \f$ \alpha_2\f$(*afirst), a handle on one dart belonging to the new 2-cell.
\pre `is_insertable_cell_2_in_cell_3(afirst,alast)`.
See example in \cgalFigureRef{fig_gmap_insert_facet}.
@ -832,7 +832,7 @@ template <class InputIterator>
Dart_handle insert_cell_2_in_cell_3(InputIterator afirst, InputIterator alast);
/*!
Inserts a 1-cell in a the 2-cell containing `dh`, the 1-cell being attached only by one of its extremity to the 0-cell containing `dh`. Returns a handle on the dart belonging to the new 1-cell and to the new 0-cell.
Inserts a 1-cell in a the 2-cell containing `dh`, the 1-cell being attached only by one of its extremity to the 0-cell containing `dh`. Returns \f$ \alpha_0(\alpha_1\f$(`dh1`)), a handle on one dart belonging to the new 1-cell and to the new 0-cell.
\pre \ref GeneralizedMap::dimension "dimension"\f$ \geq\f$ 2 and `*dh`\f$ \in\f$\ref GeneralizedMap::darts "darts()".
See example in \cgalFigureRef{fig_gmap_insert_edge}.
@ -853,7 +853,7 @@ Dart_handle insert_dangling_cell_1_in_cell_2(Dart_handle dh);
/*!
Returns true iff it is possible to insert a 1-cell in the generalized map between `dh1` and `dh2`.
This is possible if `dh1`\f$ \neq\f$`dh2` and `dh1`\f$ \in\f$\f$ \langle{}\f$\f$ \beta_1\f$\f$ \rangle{}\f$(`dh2`).
This is possible if `dh1`\f$ \neq\f$`dh2` and `dh1`\f$ \in\f$\f$ \langle{}\f$\f$ \alpha_0 \circ \alpha_1\f$\f$ \rangle{}\f$(`dh2`).
\pre \ref GeneralizedMap::dimension "dimension"\f$ \geq\f$ 2, `*dh1`\f$ \in\f$\ref GeneralizedMap::darts "darts()", and `*dh2`\f$ \in\f$\ref GeneralizedMap::darts "darts()".
\sa `insert_cell_1_in_cell_2`

View File

@ -368,13 +368,12 @@ The inverse operation of the removal is the insertion operation. Several version
Example of `insert_cell_0_in_cell_2` operation.
\cgalFigureEnd
`gm.insert_cell_1_in_cell_2(dh1,dh2)` adds a 1-cell in the 2-cell containing darts `d1` and `d2`, between the two 0-cells containing darts `d1` and `d2`. The 2-cell is split in two. This operation is possible if <I>d1</I>\f$ \in\f$\f$ \langle{}\f$\f$ \alpha_1\f$\f$ \rangle{}\f$(<I>d2</I>) which can be tested thanks to `gm.is_insertable_cell_1_in_cell_2(dh1,dh2)`. In the example on \cgalFigureRef{fig_gmap_insert_edge}, it is possible to insert an edge between darts <I>d2</I> and <I>d3</I>, but it is not possible to insert an edge between <I>d1</I> and <I>d3</I>.
`gm.insert_cell_1_in_cell_2(dh1,dh2)` adds a 1-cell in the 2-cell containing darts `d1` and `d2`, between the two 0-cells containing darts `d1` and `d2`. The 2-cell is split in two. This operation is possible \tred{if <I>d1</I>\f$ \in\f$\f$ \langle{}\f$\f$ \alpha_0, \alpha_1\f$\f$ \rangle{}\f$(<I>d2</I>)} which can be tested thanks to `gm.is_insertable_cell_1_in_cell_2(dh1,dh2)`. In the example on \cgalFigureRef{fig_gmap_insert_edge}, it is possible to insert an edge between darts <I>d2</I> and <I>d3</I>, but it is not possible to insert an edge between <I>d1</I> and <I>d3</I>.
\cgalFigureBegin{fig_gmap_insert_edge,gmap_insert_edge.svg}
Example of `insert_cell_1_in_cell_2` and `remove_cell<1>` operations. Left: Initial generalized map. Right: After the insertion of two 1-cells: a first one between the two 0-cells containing darts `d2` and `d3`, and a second one incident to the 0-cell containing dart `d1`. Now if we remove the two 1-cells containing darts `d4` and `d5`, we obtain the initial generalized map.
\cgalFigureEnd
`gm.insert_dangling_cell_1_in_cell_2(dh0)` adds a 1-cell in the 2-cell containing dart `d0`, the 1-cell being attached by only one of its vertex to the 0-cell containing dart `d0`. This operation is possible if `d0`\f$ \in\f$\ref GeneralizedMap::darts "gm.darts()".
`gm.insert_cell_2_in_cell_3(itbegin,itend)` adds a 2-cell in the 3-cell containing all the darts between `itbegin` and `itend`, along the path of 1-cells containing darts in [`itbegin`,`itend`). The 3-cell is split in two. This operation is possible if all the darts in [`itbegin`,`itend`) form a closed path inside a same 3-cell which can be tested thanks to `gm.is_insertable_cell_2_in_cell_3(itbegin,itend)` (see example on \cgalFigureRef{fig_gmap_insert_facet}).