Navigation: Up, Table of Contents, Bibliography, Index, Title Page

Requirements for a Halfedge

Definition

A halfedge must store a pointer to the next halfedge and a pointer to its opposite halfedge. It optionally stores pointers to its incident vertex and incident facet. Type tags indicate whether these member functions are supported. Figure  reference arrow depicts the relationship between a halfedge and its incident halfedges, vertices, and facets. The is_border() predicate is mandatory, but may return always false. A halfedge is an oriented edge between two vertices. It is always paired with its counterpart that has the opposite direction. They are mutually linked with the opposite() member function.

Types

Halfedge::Vertex
corresponding vertex type.

Halfedge::Halfedge
self.

Halfedge::Facet
corresponding facet type.

Operations

Halfedge* h.opposite () the opposite halfedge.
const Halfedge* h.opposite ()
Halfedge* h.next () the next halfedge around the facet.
const Halfedge* h.next ()
Halfedge* h.prev () the previous halfedge around the facet.
const Halfedge* h.prev ()
Vertex* h.vertex () the incident vertex.
const Vertex* h.vertex ()
Facet* h.facet () the incident facet. If h is a border halfedge the result might be NULL or a unique facet representing this open region or a unique facet representing all open regions at once.

const Facet* h.facet ()

bool h.is_border () is true if h is a border halfedge.

void h.set_next ( Halfedge* next)
void h.set_prev ( Halfedge* prev)
void h.set_vertex ( Vertex* v)
void h.set_facet ( Facet* f)
if f == NULL h becomes a border edge.

Types for Tagging Optional Features

The nested types below are either equal to Tag_true or Tag_false, depending on whether the named member function is supported or not.

Halfedge::Supports_halfedge_prev
prev().

Halfedge::Supports_halfedge_vertex
vertex().

Halfedge::Supports_halfedge_facet
facet().


Next: Class declaration of Facet
Navigation: Up, Table of Contents, Bibliography, Index, Title Page
The GALIA project. Jan 18, 2000.