CGAL 6.1 - 3D Triangulation Data Structure
|
The concept TriangulationDSCellBase_3
describes the requirements for the cell base class of a CGAL::Triangulation_data_structure_3<Vb,Cb>
.
Note that if the CGAL::Triangulation_data_structure_3
is plugged into a triangulation class, the face base class may have additional geometric requirements depending on the triangulation class.
At the base level (see the Software Design sections of the Chapters Triangulation and Triangulation Datastructure), a cell stores handles to its four vertices and to its four neighbor cells. The vertices and neighbors are indexed 0, 1, 2 and 3. Neighbor i
lies opposite to vertex i
.
Since the Triangulation data structure is the class which defines the handle types, the cell base class has to be somehow parameterized by the Triangulation data structure. But since it is itself parameterized by the cell and vertex base classes, there is a cycle in the definition of these classes. In order to break the cycle, the base classes for vertex and cell which are given as arguments for the Triangulation data structure use void
as Triangulation data structure parameter, and the Triangulation data structure then uses a rebind-like mechanism (similar to the one specified in std::allocator
) in order to put itself as parameter to the vertex and cell classes. The rebound base classes so obtained are the classes which are used as base classes for the final vertex and cell classes. More information can be found in Section Software Design.
CGAL::Triangulation_ds_cell_base_3<TDS>
TriangulationDSVertexBase_3
CGAL::Triangulation_data_structure_3<Vb,Cb>
Types | |
A model of the concept | |
template<typename TDS3 > | |
using | Rebind_TDS = unspecified_type |
This template class has to define a type Rebind_TDS<TDS3>::Other which is the rebound cell, that is, the one whose Triangulation_data_structure will be the actually used one. | |
typedef TriangulationDataStructure_3 | Triangulation_data_structure |
typedef TriangulationDataStructure_3::Vertex_handle | Vertex_handle |
typedef TriangulationDataStructure_3::Cell_handle | Cell_handle |
Creation | |
TriangulationDSCellBase_3 () | |
Default constructor. | |
TriangulationDSCellBase_3 (Vertex_handle v0, Vertex_handle v1, Vertex_handle v2, Vertex_handle v3) | |
Initializes the vertices with v0, v1, v2, v3 . | |
TriangulationDSCellBase_3 (Vertex_handle v0, Vertex_handle v1, Vertex_handle v2, Vertex_handle v3, Cell_handle n0, Cell_handle n1, Cell_handle n2, Cell_handle n3) | |
Initializes the vertices with v0, v1, v2, v3 and the neighbors with n0, n1, n2, n3 . | |
Checking | |
bool | is_valid (bool verbose=false, int level=0) const |
Performs any desired geometric test on a cell. | |
Members for Compact_container | |
Advanced These member functions are required by See the documentation of | |
void * | for_compact_container () const |
void | for_compact_container (void *p) |
I/O | |
istream & | operator>> (istream &is, TriangulationDSCellBase_3 &c) |
Inputs the possible non combinatorial information given by the cell. | |
ostream & | operator<< (ostream &os, const TriangulationDSCellBase_3 &c) |
Outputs the possible non combinatorial information given by the cell. | |
using TriangulationDSCellBase_3::Rebind_TDS = unspecified_type |
This template class has to define a type Rebind_TDS<TDS3>::Other
which is the rebound cell, that is, the one whose Triangulation_data_structure
will be the actually used one.
Rebind_TDS<TDS3>::Other
will be the real base class of Triangulation_data_structure_3::Cell
.
TriangulationDSCellBase_3::TriangulationDSCellBase_3 | ( | Vertex_handle | v0, |
Vertex_handle | v1, | ||
Vertex_handle | v2, | ||
Vertex_handle | v3 | ||
) |
Initializes the vertices with v0, v1, v2, v3
.
Neighbors are initialized to the default constructed handle.
bool TriangulationDSCellBase_3::is_valid | ( | bool | verbose = false , |
int | level = 0 |
||
) | const |
Performs any desired geometric test on a cell.
This is a function for debugging purpose.
When verbose
is set to true
, messages are printed to give a precise indication of the kind of invalidity encountered. level
increases the level of testing.