Concept

TriangulationDataStructure_2::Face

Definition

The concept TriangulationDataStructure_2::Face describes the types used to store the faces face class of a TriangulationDataStructure_2. A TriangulationDataStructure_2::Face stores three pointers to its three vertices and three pointers to its three neighbors. The vertices are indexed 0,1, and 2 in counterclockwise order. The neighbor indexed i lies opposite to vertex i.

In degenerate cases, when the triangulation data structure stores a simplicial complex of dimension 0 and 1, the type TriangulationDataStructure_2::Face is used to store the faces of maximal dimension of the complex : i.e. a vertex in dimension 0, an edge in dimension 1. Only vertices and neighbors with index 0 are set in the first case, only vertices and neighbors with index 0 or 1 are set in the second case.

Types

The class TriangulationDataStructure_2::Face defines the same types as the triangulation data structure except the iterators and the circulators.

Creation

The methods create_face and delete_face() have to be used to define new faces and to delete non longer used faces.

Vertex Access Functions

Vertex_handle f.vertex ( int i) const returns the vertex i of f.
Precondition: 0 i 2.
int f.index ( Vertex_handle v) const returns the index of vertex v in f.
Precondition: v is a vertex of f
bool f.has_vertex ( Vertex_handle v) const
returns true if v is a vertex of f.
bool f.has_vertex ( Vertex_handle v, int& i) const
returns true if v is a vertex of f, and computes the index i of v in f.

Neighbor Access Functions

The neighbor with index i is the neighbor which is opposite to the vertex with index i.

Face_handle f.neighbor ( int i) const returns the neighbor i of f.
Precondition: 0 i 2.
int f.index ( Face_handle n) const returns the index of face n.
Precondition: n is a neighbor of f.
bool f.has_neighbor ( Face_handle n) const
returns true if n is a neighbor of f.
bool f.has_neighbor ( Face_handle n, int& i) const
returns true if n is a neighbor of f, and compute the index i of n.

Setting

void f.set_vertex ( int i, Vertex_handle v)
sets vertex i to be v.
Precondition: 0 i 2.
void f.set_neighbor ( int i, Face_handle n)
sets neighbor i to be n.
Precondition: 0 i 2.
void f.set_vertices () sets the vertices pointers to NULL.
void f.set_vertices ( Vertex_handle v0, Vertex_handle v1, Vertex_handle v2)
sets the vertices pointers.
void f.set_neighbors () sets the neighbors pointers to NULL.
void f.set_neighbors ( Face_handle n0, Face_handle n1, Face_handle n2)
sets the neighbors pointers.

Checking

bool f.is_valid () const returns true if the function is_valid() of the base class returns true and if, for each index i, 0 i < 3, face f is a neighbor of its neighboring face neighbor(i) and shares with this neighbor the vertices cw(i) and ccw(i) in correct reverse order.

Miscellaneous

int f.ccw ( int i) const Returns i+1 modulo 3.
Precondition: 0 i 2.

int f.cw ( int i) const Returns i+2 modulo 3.
Precondition: 0 i 2.

I/O

istream& istream& is >> & f Inputs any non combinatorial information possibly stored in the face.
ostream& ostream& os << f Outputs any non combinatorial information possibly stored in the face.

See Also

TriangulationDataStructure_2,
TriangulationDataStructure_2::Vertex,
TriangulationFaceBase_2.