\( \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 - 3D Boolean Operations on Nef Polyhedra
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::Nef_polyhedron_3< Nef_polyhedronTraits_3, Nef_polyhedronItems_3 >::SHalfedge Class Reference

#include <CGAL/Nef_polyhedron_3.h>

Definition

template<class Nef_polyhedronTraits_3, class Nef_polyhedronItems_3 = CGAL::Default_items<Nef_polyhedronTraits_3> class Nef_polyhedronMarks = bool>
class CGAL::Nef_polyhedron_3< Nef_polyhedronTraits_3, Nef_polyhedronItems_3 >::SHalfedge

A shalfedge is a great arc on a sphere map.

Figure figureNef3HalfedgeIncidences depicts the relationship between a shalfedge and its incident shalfedges, svertices, and sfaces on a sphere map. A shalfedge is an oriented sedge between two svertices. It is always paired with a shalfedge pointing in the opposite direction. The twin() member function returns this shalfedge of opposite orientation.

shalfedge.png

The snext() member function points to the successor shalfedge around this sface while the sprev() member function points to the preceding shalfedge. An successive assignments of the form se = se->snext() cycles counterclockwise around the sface (or hole).

Similarly, the successive assignments of the form se = se->snext()->twin() cycle clockwise around the svertex and traverse all halfedges incident to this svertex. The assignment se = se->cyclic_adj_succ() can be used as a shortcut.

The role of shalfedges in a facet is illustrated in Figure figureNef3FacetIncidences. The facet() member function returns the facet in which the shalfedge is part of one of the facet cycles. The successive assignment of the form se = se->next() cycles counterclockwise around the facet (or a hole of the facet).

A const circulators is provided for each of the three circular orders. The circulators are bidirectional and assignable to SHalfedge_const_handle.

Creation

There is no need for a user to create a SHalfedge explicitly. The class Nef_polyhedron_3<Traits> manages the needed shalfedges internally.

See Also
CGAL::Nef_polyhedron_3::Halfedge
CGAL::Nef_polyhedron_3::Halffacet
CGAL::Nef_polyhedron_3::SFace
CGAL::Nef_polyhedron_S2::Sphere_circle

Types

The following types are the same as in Nef_polyhedron_3<Traits>.

typedef unspecified_type Mark
 type of mark.
 
typedef unspecified_type Sphere_circle
 sphere circle type stored in SHalfedge.
 
typedef unspecified_type Halffacet_const_handle
 const handle to Halffacet.
 
typedef unspecified_type SVertex_const_handle
 const handle to SVertex.
 
typedef unspecified_type SHalfedge_const_handle
 const handle to SHalfedge.
 
typedef unspecified_type SFace_const_handle
 const handle to SFace.
 

Operations

const Markmark () const
 the mark of se .
 
const Sphere_circlecircle () const
 the sphere circle of se .
 
SHalfedge_const_handle twin () const
 the twin of se .
 
SVertex_const_handle source () const
 the source svertex of se .
 
SVertex_const_handle target () const
 equals twin()->source().
 
SHalfedge_const_handle prev () const
 the SHalfedge previous to se in a facet cycle.
 
SHalfedge_const_handle next () const
 the next SHalfedge of se in a facet cycle.
 
SHalfedge_const_handle sprev () const
 the SHalfedge previous to se in a sface cycle.
 
SHalfedge_const_handle snext () const
 the next SHalfedge of se in a sface cycle.
 
SHalfedge_const_handle cyclic_adj_pred () const
 the edge before se in the cyclic ordered adjacency list of source().
 
SHalfedge_const_handle cyclic_adj_succ () const
 the edge after se in the cyclic ordered adjacency list of source().
 
Halffacet_const_handle facet () const
 the facet that corresponds to se in the 3D incidence structure.
 
SFace_const_handle incident_sface () const
 the incident sface of se .
 
bool in_outer_sface_cycle () const
 determines whether se is in an outer sface cycle.
 
bool in_inner_sface_cycle () const
 determines whether se is in an inner sface cycle.
 
bool in_outer_facet_cycle () const
 determines whether se is in an outer facet cycle.
 
bool in_inner_facet_cycle () const
 determines whether se is in an inner facet cycle.