CGAL 4.6 - Combinatorial Maps
|
High-level operations.
Functions | |
template<class CMap > | |
CMap::Dart_handle | CGAL::insert_cell_0_in_cell_1 (CMap &cm, typename CMap::Dart_handle dh) |
Inserts a 0-cell in the 1-cell containing dh . More... | |
template<class CMap > | |
CMap::Dart_handle | CGAL::insert_cell_0_in_cell_2 (CMap &cm, typename CMap::Dart_handle dh) |
Inserts a 0-cell in the 2-cell containing dh . More... | |
template<class CMap > | |
CMap::Dart_handle | CGAL::insert_cell_1_in_cell_2 (CMap &cm, typename CMap::Dart_handle dh1, typename CMap::Dart_handle dh2) |
Inserts a 1-cell in the 2-cell containing dh1 and dh2 . More... | |
template<class CMap , class InputIterator > | |
CMap::Dart_handle | CGAL::insert_cell_2_in_cell_3 (CMap &cm, InputIterator afirst, InputIterator alast) |
Inserts a 2-cell along the path of 1-cells containing darts given by the range [afirst,alast) . More... | |
template<class CMap > | |
CMap::Dart_handle | CGAL::insert_dangling_cell_1_in_cell_2 (CMap &cm, typename CMap::Dart_handle dh) |
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 . More... | |
template<class CMap > | |
bool | CGAL::is_insertable_cell_1_in_cell_2 (const CMap &cm, typename CMap::Dart_const_handle dh1, typename CMap::Dart_const_handle dh2) |
Returns true iff it is possible to insert a 1-cell in cm between dh1 and dh2 . More... | |
template<class CMap , class InputIterator > | |
bool | CGAL::is_insertable_cell_2_in_cell_3 (const CMap &cm, InputIterator afirst, InputIterator alast) |
Returns true iff it is possible to insert a 2-cell in cm along the path of darts given by the range [afirst,alast) . More... | |
template<class CMap , unsigned int i> | |
bool | CGAL::is_removable (const CMap &cm, typename CMap::Dart_const_handle dh) |
Returns true iff the i-cell containing dh can be removed. More... | |
template<class CMap , unsigned int i> | |
CMap::size_type | CGAL::remove_cell (CMap &cm, typename CMap::Dart_handle dh) |
Removes the i-cell containing dh . More... | |
CMap::Dart_handle CGAL::insert_cell_0_in_cell_1 | ( | CMap & | cm, |
typename CMap::Dart_handle | dh | ||
) |
Inserts a 0-cell in the 1-cell containing dh
.
Returns a handle on one dart belonging to the new 0-cell.
*dh
\( \in\)cm.darts().See example in Figure 26.11.
If are_attributes_automatically_managed()
==true
, if 1-attributes are non void
, Attribute_type<1>::type::On_split(a,a') is called, with a the original 1-attribute associated with dh and a' the new 1-attribute created during the operation. If set, the dynamic onsplit function of 1-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
CGAL::insert_cell_0_in_cell_2<CMap>
CGAL::insert_cell_1_in_cell_2<CMap>
CGAL::insert_dangling_cell_1_in_cell_2<CMap>
CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>
CGAL::remove_cell<CMap,i>
#include <CGAL/Combinatorial_map_operations.h>
CMap::Dart_handle CGAL::insert_cell_0_in_cell_2 | ( | CMap & | cm, |
typename CMap::Dart_handle | dh | ||
) |
Inserts a 0-cell in the 2-cell containing dh
.
The 2-cell is split in triangles, one for each initial edge of the facet. Returns a handle on one dart belonging to the new 0-cell.
*dh
\( \in\)cm.darts().See example in Figure 26.12.
If are_attributes_automatically_managed()
==true
, if 2-attributes are non void
, Attribute_type<2>::type::On_split(a,a') is called, with a the original 2-attribute associated with dh
and a' each new 2-attribute created during the operation. If set, the dynamic onsplit function of 2-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
CGAL::insert_cell_0_in_cell_2<CMap>
CGAL::insert_cell_1_in_cell_2<CMap>
CGAL::insert_dangling_cell_1_in_cell_2<CMap>
CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>
CGAL::remove_cell<CMap,i>
#include <CGAL/Combinatorial_map_operations.h>
CMap::Dart_handle CGAL::insert_cell_1_in_cell_2 | ( | CMap & | cm, |
typename CMap::Dart_handle | dh1, | ||
typename CMap::Dart_handle | dh2 | ||
) |
Inserts a 1-cell in the 2-cell containing dh1
and dh2
.
Returns \( \beta_0\)(dh1
), a handle on one dart belonging to the new 1-cell.
is_insertable_cell_1_in_cell_2<Map>(cm,dh1,dh2)
.See example in Figure 26.13.
If are_attributes_automatically_managed()
==true
, if 2-attributes are non void
, Attribute_type<2>::type::On_split(a,a') is called, with a the original 2-attribute associated with dh
and a' the new 2-attribute created during the operation. If set, the dynamic onsplit function of 2-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
CGAL::is_insertable_cell_1_in_cell_2<CMap>
CGAL::insert_cell_0_in_cell_1<CMap>
CGAL::insert_cell_0_in_cell_2<CMap>
CGAL::insert_dangling_cell_1_in_cell_2<CMap>
CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>
CGAL::remove_cell<CMap,i>
#include <CGAL/Combinatorial_map_operations.h>
CMap::Dart_handle CGAL::insert_cell_2_in_cell_3 | ( | CMap & | cm, |
InputIterator | afirst, | ||
InputIterator | alast | ||
) |
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.
is_insertable_cell_2_in_cell_3<Map>(cm,afirst,alast)
.See example in Figure 26.14.
If are_attributes_automatically_managed()
==true
, if 3-attributes are non void
, Attribute_type<3>::type::On_split(a,a') is called, with a the original 3-attribute associated with dh
and a' the new 3-attribute created during the operation. If set, the dynamic onsplit function of 3-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
CGAL::is_insertable_cell_2_in_cell_3<CMap,InputIterator>
CGAL::insert_cell_0_in_cell_1<CMap>
CGAL::insert_cell_0_in_cell_2<CMap>
CGAL::insert_cell_1_in_cell_2<CMap>
CGAL::insert_dangling_cell_1_in_cell_2<CMap>
CGAL::remove_cell<CMap,i>
#include <CGAL/Combinatorial_map_operations.h>
CMap::Dart_handle CGAL::insert_dangling_cell_1_in_cell_2 | ( | CMap & | cm, |
typename CMap::Dart_handle | dh | ||
) |
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.
*dh
\( \in\)cm.darts().See example in Figure 26.13.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
CGAL::insert_cell_0_in_cell_1<CMap>
CGAL::insert_cell_0_in_cell_2<CMap>
CGAL::insert_cell_1_in_cell_2<CMap>
CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>
CGAL::remove_cell<CMap,i>
#include <CGAL/Combinatorial_map_operations.h>
bool CGAL::is_insertable_cell_1_in_cell_2 | ( | const CMap & | cm, |
typename CMap::Dart_const_handle | dh1, | ||
typename CMap::Dart_const_handle | dh2 | ||
) |
Returns true iff it is possible to insert a 1-cell in cm
between dh1
and dh2
.
This is possible if dh1
\( \neq\)dh2
and dh1
\( \in\) \( \langle{}\) \( \beta_1\) \( \rangle{}\)(dh2
).
*dh1
\( \in\)cm.darts(), and *dh2
\( \in\)cm.darts().CGAL::insert_cell_1_in_cell_2<CMap>
CGAL::is_insertable_cell_2_in_cell_3<CMap,InputIterator>
#include <CGAL/Combinatorial_map_operations.h>
bool CGAL::is_insertable_cell_2_in_cell_3 | ( | const CMap & | cm, |
InputIterator | afirst, | ||
InputIterator | alast | ||
) |
Returns true iff it is possible to insert a 2-cell in cm
along the path of darts given by the range [afirst,alast)
.
The 2-cell can be inserted iff each couple of consecutive darts of the path a1 and a2 belong to the same vertex and the same volume, and if the path is closed.
CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>
CGAL::is_insertable_cell_1_in_cell_2<CMap>
#include <CGAL/Combinatorial_map_operations.h>
bool CGAL::is_removable | ( | const CMap & | cm, |
typename CMap::Dart_const_handle | dh | ||
) |
Returns true iff the i-cell containing dh
can be removed.
An i-cell can be removed if i
==CMap::dimension or if i
==CMap::dimension-1 or if i
\( <\)CMap::dimension-1 and the i-cell containing dh
is incident to at most two (i+1)-cells.
i
\( \leq\)CMap::dimension and *dh
\( \in\)cm.darts().CGAL::remove_cell<CMap,i>
#include <CGAL/Combinatorial_map_operations.h>
CMap::size_type CGAL::remove_cell | ( | CMap & | cm, |
typename CMap::Dart_handle | dh | ||
) |
Removes the i-cell containing dh
.
Returns the number of darts removed from cm
.
is_removable<CMap,i>(cm,dh)
.See examples in Figure 26.11, Figure 26.13 and Figure 26.14.
If are_attributes_automatically_managed()
==true
, if i
\( <\)CMap::dimension, and i+1-attributes are non void
, and if there are two distinct (i+1)-cells around dart dh
, Attribute_type<i+1>::type::On_merge(a1,a2) is called, with a1 the (i+1)-attribute associated to dh
, and a2 the (i+1)-attribute associated to \( \beta_{i+1}\)(dh). If set, the dynamic onmerge function of i+1-attributes is also called on a1 and a2.
If are_attributes_automatically_managed()
==true
, if a j-cell is disconnected in two j-cells during the operation, and if j-attributes are non void, Attribute_type<j>::type::On_split(a,a') is called with a the original j-attribute and a' the new j-attribute created due to the disconnection. If set, the dynamic onsplit function of j-attributes is also called on a and a'.
If are_attributes_automatically_managed()
==false
, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
CGAL::is_removable<CMap,i>
CGAL::insert_cell_0_in_cell_1<CMap>
CGAL::insert_cell_0_in_cell_2<CMap>
CGAL::insert_cell_1_in_cell_2<CMap>
CGAL::insert_dangling_cell_1_in_cell_2<CMap>
CGAL::insert_cell_2_in_cell_3<CMap,InputIterator>
#include <CGAL/Combinatorial_map_operations.h>