\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.5.1 - 2D Regularized Boolean Set-Operations
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
GeneralPolygonSetDcel Concept Reference

Definition

A doubly-connected edge-list (Dcel for short) data-structure. It consists of three containers of records: vertices \( V\), halfedges \( E\), and faces \( F\). It maintains the incidence relation among them. The halfedges are ordered in pairs sometimes referred to as twins, such that each halfedge pair represent an edge.

A model of the GeneralPolygonSetDcel concept must provide the following types and operations. (In addition to the requirements here, the local types Vertex,Halfedge, Face, Hole, and Isolated_vertex must be models of the concepts ArrangementDcelVertex, ArrangementDcelHalfedge, GeneralPolygonSetDcelFace , ArrangementDcelHole, and ArrangementDcelIsolatedVertex respectively.) Notice that this concept differs from the concept ArrangemenDcel only in the type Face.

Has Models:

CGAL::Arr_dcel_base<V,H,F>

CGAL::Arr_default_dcel<Traits>

CGAL::Arr_face_extended_dcel<Traits,FData,V,H,F>

CGAL::Arr_extended_dcel<Traits,VData,HData,FData,V,H,F>

See Also
ArrangementDcelVertex
ArrangementDcelHalfedge
GeneralPolygonSetDcelFace
ArrangementDcelHole
ArrangementDcelIsolatedVertex

Types

typedef unspecified_type Vertex
 the vertex type.
 
typedef unspecified_type Halfedge
 the halfedge type.
 
typedef unspecified_type Face
 the face type.
 
typedef unspecified_type Hole
 the hole type.
 
typedef unspecified_type Isolated_vertex
 the isolated vertex type.
 
typedef unspecified_type Size
 used to represent size values (e.g., size_t).
 

Iterators

The non-mutable iterators Vertex_const_iterator, Halfedge_const_iterator and Face_const_iterator are also defined.

typedef unspecified_type Vertex_iterator
 a bidirectional iterator over the vertices. More...
 
typedef unspecified_type Halfedge_iterator
 a bidirectional iterator over the halfedges. More...
 
typedef unspecified_type Face_iterator
 a bidirectional iterator over the faces. More...
 

Creation

 Arr_dcel ()
 constructs an empty Dcel with one unbounded face.
 
Faceassign (const Self &other, const Face *uf)
 assigns the contents of the other Dcel whose unbounded face is given by uf, to dcel. More...
 

Access Functions

Size size_of_vertices () const
 returns the number of vertices.
 
Size size_of_halfedges () const
 returns the number of halfedges (always even).
 
Size size_of_faces () const
 returns the number of faces.
 
Size size_of_holes () const
 returns the number of holes (the number of connected components).
 
Size size_of_isolated_vertices () const
 returns the number of isolated vertices.
 

Iterator Access

The following operations have an equivalent const operations that return the corresponding non-mutable iterators:

Vertex_iterator vertices_begin ()
 returns a begin-iterator of the vertices in dcel.
 
Vertex_iterator vertices_end ()
 returns a past-the-end iterator of the vertices in dcel.
 
Halfedge_iterator halfedges_begin ()
 returns a begin-iterator of the halfedges in dcel.
 
Halfedge_iterator halfedges_end ()
 returns a past-the-end iterator of the halfedges in dcel.
 
Vertex_iterator faces_begin ()
 returns a begin-iterator of the faces in dcel.
 
Vertex_iterator faces_end ()
 returns a past-the-end iterator of the faces in dcel.
 

Modifiers

The following operations allocate a new element of the respective type.

Halfedges are always allocated in pairs of opposite halfedges. The halfedges and their opposite pointers are automatically set.

Vertexnew_vertex ()
 creates a new vertex.
 
Halfedgenew_edge ()
 creates a new pair of twin halfedges.
 
Facenew_face ()
 creates a new face.
 
Holenew_hole ()
 creates a new hole record.
 
Isolated_vertexnew_isolated_vertex ()
 creates a new isolated vertex record.
 
void delete_vertex (Vertex *v)
 deletes the vertex v.
 
void delete_edge (Halfedge *e)
 deletes the halfedge e as well as its twin.
 
void delete_face (Face *f)
 deletes the face f.
 
void delete_hole (Hole *ho)
 deletes the hole ho.
 
void delete_isolated_vertex (Isolated_vertex *iv)
 deletes the isolated vertex iv.
 

Member Typedef Documentation

a bidirectional iterator over the faces.

Its value-type is Face.

a bidirectional iterator over the halfedges.

Its value-type is Halfedge.

a bidirectional iterator over the vertices.

Its value-type is Vertex.

Member Function Documentation

Face* GeneralPolygonSetDcel::assign ( const Self &  other,
const Face uf 
)

assigns the contents of the other Dcel whose unbounded face is given by uf, to dcel.

The function returns a pointer to the unbounded face of dcel after the assignment.