Note that if the Triangulation_data_structure_2 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 Sections 20.3 and 21.3), a face stores handles on its three vertices and on the three neighboring faces. The vertices and neighbors are indexed 0,1 and 2. Neighbor lies opposite to vertex .
Since the Triangulation_data_structure_2 is the class which defines the handle types, the face base class has to be somehow parameterized by the triangulation data structure. But since the Triangulation_data_structure_2 itself is parameterized by the face and vertex base classes, there is a cycle in the definition of these classes. In order to break the cycle, the base classes for faces and vertices which are plugged in to instantiate a Triangulation_data_structure_2 use a void as triangulation data structure parameter. Then, the Triangulation_data_structure_2 uses a rebind mechanism (similar to the one specified in std::allocator) in order to plug itself as parameter in the face and vertex base classes. This mechanism requires that the base class provides a templated nested class Rebind_TDS that itself provides the subtype Rebind_TDS<TDS2>::Other which is the rebound version of the base class. This rebound base class is the class that the Triangulation_data_structure_2 actually uses as a base class for the class Triangulation_data_structure_2::Face.
| |
| |
This nested template class has to define a type Other which is the
rebound face base, where the
Triangulation_data_structure_2 is actually plugged in.
This type Other will be the actual base
of the class Triangulation_data_structure_2::Face.
|
| ||
| ||
| ||
|
||
| ||
|
| |||
default constructor.
| |||
| |||
Initializes the vertices with v0, v1, v2 and the neighbors
with Face_handle().
| |||
| |||
initializes the vertices with v0,v1, v2 and the neighbors with
n0, n1, n2.
|
|
| Changes the orientation of f by exchanging vertex(0) with vertex(1) and neighbor(0) with neighbor(1). |
|
| preforms a counterclockwise permutation of the vertices and neighbors of f. |
|
| preforms a clockwise permutation of the vertices and neighbors of f. |
|
| |
performs any required test on a face. If verbose is set to true, messages are printed to give a precise indication of the kind of invalidity encountered. |
|
| |
|
|