\( \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.13 - CGAL and the Boost Graph Library
HalfedgeGraph Concept Reference

Definition

The concept HalfedgeGraph is a refinement of the Bgl concept IncidenceGraph and adds the notion of a halfedge: Each edge is associated with two opposite halfedges with source and target vertices swapped. Furthermore, halfedges have a successor and predecessor, and form cycles we call faces. However, this concept does not introduce a face type. A HalfedgeGraph is undirected and does not allow parallel edges.

Using the composition of the successor and opposite functions results in another cycle, namely the cycle of halfedges which are incident to the same vertex. We refer to Iterators and Circulators for a description of iterators and circulators for these halfedge cycles.

A partial specialization must be provided for CGAL::graph_has_property for each internal property map available.

Associated Types
boost::graph_traits<HalfedgeGraph>::vertex_descriptor

A vertex descriptor corresponds to a unique vertex in an abstract graph instance. A vertex descriptor must be DefaultConstructible, Assignable, EqualityComparable, and Hashable.

boost::graph_traits<HalfedgeGraph>::halfedge_descriptor

A halfedge descriptor corresponds to a unique halfedge in an abstract graph instance. A halfedge descriptor must be DefaultConstructible, Assignable, EqualityComparable, and Hashable.

boost::graph_traits<HalfedgeGraph>::edge_descriptor

An edge descriptor corresponds to a unique edge in an abstract graph instance. An edge descriptor must be DefaultConstructible, Assignable, EqualityComparable, and Hashable.

Refines:

IncidenceGraph

PropertyGraph

A model of HalfedgeGraph must have the interior property vertex_point attached to its vertices.

Has Models:
See Boost Graph Traits Specializations
See also
Graph Concepts
Examples:
BGL_polyhedron_3/normals.cpp.

Related Functions

(Note that these are not member functions.)

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::edge_descriptor edge (boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor halfedge (boost::graph_traits< HalfedgeGraph >::edge_descriptor f, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor halfedge (boost::graph_traits< HalfedgeGraph >::vertex_descriptor v, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
std::pair< boost::graph_traits< HalfedgeGraph >::halfedge_descriptor, bool > halfedge (boost::graph_traits< HalfedgeGraph >::vertex_descriptor u, boost::graph_traits< HalfedgeGraph >::vertex_descriptor v, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor opposite (boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::vertex_descriptor source (boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::vertex_descriptor target (boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor next (boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const HalfedgeGraph &g)
 
template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor prev (boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const HalfedgeGraph &g)
 

Friends And Related Function Documentation

◆ edge()

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::edge_descriptor edge ( boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const HalfedgeGraph g 
)
related

returns the edge corresponding to halfedges h and opposite(h,g), with the following invariant halfedge(edge(h,g),g)==h.

◆ halfedge() [1/3]

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor halfedge ( boost::graph_traits< HalfedgeGraph >::edge_descriptor  f,
const HalfedgeGraph g 
)
related

returns one of the halfedges corresponding to e.

◆ halfedge() [2/3]

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor halfedge ( boost::graph_traits< HalfedgeGraph >::vertex_descriptor  v,
const HalfedgeGraph g 
)
related

returns a halfedge with target v.

◆ halfedge() [3/3]

template<typename HalfedgeGraph >
std::pair< boost::graph_traits< HalfedgeGraph >::halfedge_descriptor, bool > halfedge ( boost::graph_traits< HalfedgeGraph >::vertex_descriptor  u,
boost::graph_traits< HalfedgeGraph >::vertex_descriptor  v,
const HalfedgeGraph g 
)
related

returns the halfedge with source u and target v. The Boolean is true, iff this halfedge exists.

◆ next()

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor next ( boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const HalfedgeGraph g 
)
related

returns the next halfedge around its face.

Examples:
BGL_polyhedron_3/incident_vertices.cpp, BGL_polyhedron_3/normals.cpp, and BGL_surface_mesh/seam_mesh.cpp.

◆ opposite()

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor opposite ( boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const HalfedgeGraph g 
)
related

returns the halfedge with source and target swapped.

Examples:
BGL_polyhedron_3/incident_vertices.cpp, and BGL_surface_mesh/seam_mesh.cpp.

◆ prev()

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::halfedge_descriptor prev ( boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const HalfedgeGraph g 
)
related

returns the previous halfedge around its face.

Examples:
BGL_surface_mesh/seam_mesh.cpp.

◆ source()

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::vertex_descriptor source ( boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const HalfedgeGraph g 
)
related

returns the source vertex of h.

◆ target()

template<typename HalfedgeGraph >
boost::graph_traits< HalfedgeGraph >::vertex_descriptor target ( boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const HalfedgeGraph g 
)
related

returns the target vertex of h.