CGAL 5.3 - 2D Triangulation Data Structure
TriangulationDataStructure_2::Face Concept Reference

## 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 handles to its three vertices and three handles 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 no longer used faces.

Has Models:
CGAL::Triangulation_ds_face_base_2<Tds>
TriangulationDSFaceBase_2
TriangulationDataStructure_2
TriangulationDataStructure_2::Vertex

## Vertex Access Functions

Vertex_handle vertex (int i) const
returns the vertex i of the face. More...

int index (Vertex_handle v) const
returns the index of vertex v in the face. More...

bool has_vertex (Vertex_handle v) const
returns true if v is a vertex of the face.

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

## Neighbor Access Functions

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

Face_handle neighbor (int i) const
returns the neighbor i of the face. More...

int index (Face_handle n) const
returns the index of face n. More...

bool has_neighbor (Face_handle n) const
returns true if n is a neighbor of the face.

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

## Setting

void set_vertex (int i, Vertex_handle v)
sets vertex i to be v. More...

void set_neighbor (int i, Face_handle n)
sets neighbor i to be n. More...

void set_vertices ()
sets the vertex handles to Vertex_handle().

void set_vertices (Vertex_handle v0, Vertex_handle v1, Vertex_handle v2)
sets the vertex handles.

void set_neighbors ()
sets the neighbors handles to Face_handle().

void set_neighbors (Face_handle n0, Face_handle n1, Face_handle n2)
sets the neighbors handles.

## Checking

bool is_valid () const
returns true if the function is_valid() of the base class returns true and if, for each index $$i$$, $$0 \le i < 3$$, the face 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 ccw (int i) const
Returns $$i+1$$ modulo 3, with $$0\leq i \leq2$$.

int cw (int i) const
Returns $$i+2$$ modulo 3, with $$0\leq i \leq2$$.

std::istream & operator>> (std::istream &is, TriangulationDataStructure_2::Face &f)
Inputs any non combinatorial information possibly stored in the face.

std::ostream & operator<< (std::ostream &os, const TriangulationDataStructure_2::Face &f)
Outputs any non combinatorial information possibly stored in the face.

## ◆ index() [1/2]

 int TriangulationDataStructure_2::Face::index ( Vertex_handle v ) const

returns the index of vertex v in the face.

Precondition
v is a vertex of the face.

## ◆ index() [2/2]

 int TriangulationDataStructure_2::Face::index ( Face_handle n ) const

returns the index of face n.

Precondition
n is a neighbor of the face.

## ◆ neighbor()

 Face_handle TriangulationDataStructure_2::Face::neighbor ( int i ) const

returns the neighbor i of the face.

Precondition
$$0\leq i \leq2$$.

## ◆ set_neighbor()

 void TriangulationDataStructure_2::Face::set_neighbor ( int i, Face_handle n )

sets neighbor i to be n.

Precondition
$$0\leq i \leq2$$.

## ◆ set_vertex()

 void TriangulationDataStructure_2::Face::set_vertex ( int i, Vertex_handle v )

sets vertex i to be v.

Precondition
$$0\leq i \leq2$$.

## ◆ vertex()

 Vertex_handle TriangulationDataStructure_2::Face::vertex ( int i ) const

returns the vertex i of the face.

Precondition
$$0\leq i \leq2$$.