CGAL 6.0 - Halfedge Data Structures
|
The concept HalfedgeDSHalfedge
defines the requirements for the local Halfedge
type in the HalfedgeDS
concept. It is also required in the Halfedge_wrapper<Refs,Traits>
member class template of an items class, see the HalfedgeDSItems
concept.
A halfedge is an oriented edge between two vertices. It is always paired with a halfedge pointing in the opposite direction. The opposite()
member function returns this halfedge of opposite orientation. The next()
member function points to the successor halfedge along the face - or if the halfedge is a border halfedge - along the open region. A halfedge optionally stores a reference to the previous halfedge along the face, a reference to an incident vertex, and a reference to an incident face. Type tags indicate whether the related member functions are supported. Figure figureHalfedgeDSOptionalMethods depicts the relationship between a halfedge and its incident halfedges, vertices, and faces.
For the protection of the integrity of the data structure classes such as CGAL::Polyhedron_3
are allowed to redefine the modifying member functions to be private. In order to make them accessible for the halfedge data structure they must be derived from a base class Base
where the modifying member functions are still public. Even more protection is provided for the set_opposite()
member function. The base class Base_base
provides access to it. (The protection could be bypassed also by an user, but not by accident.)
HalfedgeDS<Traits,Items,Alloc>
HalfedgeDSItems
HalfedgeDSVertex
HalfedgeDSFace
Types | |
typedef unspecified_type | HalfedgeDS |
instantiated HalfedgeDS ( \( \equiv\) Refs ). | |
typedef unspecified_type | Base |
base class that allows modifications. | |
typedef unspecified_type | Base_base |
base class to access set_opposite() . | |
typedef unspecified_type | Vertex |
model of HalfedgeDSVertex . | |
typedef unspecified_type | Face |
model of HalfedgeDSFace . | |
typedef unspecified_type | Vertex_handle |
handle to vertex. | |
typedef unspecified_type | Halfedge_handle |
handle to halfedge. | |
typedef unspecified_type | Face_handle |
handle to face. | |
typedef unspecified_type | Vertex_const_handle |
typedef unspecified_type | Halfedge_const_handle |
typedef unspecified_type | Face_const_handle |
typedef unspecified_type | Supports_halfedge_prev |
CGAL::Tag_true or CGAL::Tag_false . | |
typedef unspecified_type | Supports_halfedge_vertex |
CGAL::Tag_true or CGAL::Tag_false . | |
typedef unspecified_type | Supports_halfedge_face |
CGAL::Tag_true or CGAL::Tag_false . | |
Creation | |
Halfedge () | |
default constructor. | |
Operations | |
Halfedge_handle | opposite () |
Halfedge_const_handle | opposite () const |
the opposite halfedge. | |
void | set_opposite (Halfedge_handle h) |
sets opposite halfedge to h . | |
Halfedge_handle | next () |
Halfedge_const_handle | next () const |
the next halfedge around the face. | |
void | set_next (Halfedge_handle h) |
sets next halfedge to h . | |
bool | is_border () const |
is true if the halfedge is a border halfedge. | |
Operations available if Supports_halfedge_prev == CGAL::Tag_true | |
Halfedge_handle | prev () |
Halfedge_const_handle | prev () const |
the previous halfedge around the face. | |
void | set_prev (Halfedge_handle h) |
sets prev halfedge to h . | |
Operations available if Supports_halfedge_vertex == CGAL::Tag_true | |
Vertex_handle | vertex () |
Vertex_const_handle | vertex () const |
the incident vertex of h . | |
void | set_vertex (Vertex_handle v) |
sets incident vertex to v . | |
Operations available if Supports_halfedge_face == CGAL::Tag_true | |
Face_handle | face () |
Face_const_handle | face () const |
the incident face of the halfedge. | |
void | set_face (Face_handle f) |
sets incident face to f . | |
Face_const_handle HalfedgeDSHalfedge::face | ( | ) | const |
the incident face of the halfedge.
If the halfedge is a border halfedge the result is default construction of the handle.