\( \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.8 - Halfedge Data Structures

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
HalfedgeDSHalfedge Concept Reference
Concepts

## Definition

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.

The three classes Vertex, Halfedge, and Face of the halfedge data structure. Member functions with shaded background are mandatory. The others are optionally supported.

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.)

Has Models:

  CGAL::HalfedgeDS_halfedge_base

  CGAL::HalfedgeDS_halfedge_min_base

See Also
  `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. More...
void | set_face (Face_handle f)
| sets incident face to `f`.

## Member Function Documentation

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.