CGAL 6.0 - Halfedge Data Structures
|
#include <CGAL/HalfedgeDS_const_decorator.h>
CGAL::HalfedgeDS_items_decorator< HDS >.
The class CGAL::HalfedgeDS_items_decorator<HDS>
provides additional functions for vertices, halfedges, and faces of a halfedge data structure without knowing the containing halfedge data structure.
The class CGAL::HalfedgeDS_decorator<HDS>
stores a reference to the halfedge data structure and provides functions that modify the halfedge data structure, for example Euler-operators. The class CGAL::HalfedgeDS_const_decorator<HDS>
stores a const reference to the halfedge data structure. It contains non-modifying functions, for example the test for validness of the data structure.
All these additional functions take care of the different capabilities a halfedge data structure may have or may not have. The functions evaluate the type tags of the halfedge data structure to decide on the actions. If a particular feature is not supported nothing is done. Note that for example the creation of new halfedges is mandatory for all halfedge data structures and will not appear here again.
HDS | must be a model of HalfedgeDS |
Example
The following program fragment illustrates the implementation of a is_valid()
member function for a simplified polyhedron class. We assume here that the level three check is the appropriate default for polyhedral surfaces.
CGAL::HalfedgeDS_items_decorator<HDS>
CGAL::HalfedgeDS_decorator<HDS>
Creation | |
HalfedgeDS_const_decorator (const HDS &hds) | |
keeps internally a const reference to hds . | |
Validness Checks | |
A halfedge data structure has no definition of validness of its own, but a useful set of tests is defined with the following levels:
| |
bool | is_valid (bool verbose=false, int level=0) const |
returns true if the halfedge data structure hds is valid with respect to the level value as defined above. | |
bool | normalized_border_is_valid (bool verbose=false) const |
returns true if the border halfedges are in normalized representation, which is when enumerating all halfedges with the halfedge iterator the following holds: The non-border edges precede the border edges. | |
Additional Inherited Members | |
Public Types inherited from CGAL::HalfedgeDS_items_decorator< HDS > | |
typedef unspecified_type | HalfedgeDS |
halfedge data structure. | |
typedef unspecified_type | Vertex |
vertex type of HalfedgeDS . | |
typedef unspecified_type | Halfedge |
halfedge type of HalfedgeDS . | |
typedef unspecified_type | Face |
face type of HalfedgeDS . | |
typedef unspecified_type | Vertex_handle |
typedef unspecified_type | Halfedge_handle |
typedef unspecified_type | Face_handle |
typedef unspecified_type | Vertex_iterator |
typedef unspecified_type | Halfedge_iterator |
typedef unspecified_type | Face_iterator |
typedef unspecified_type | size_type |
typedef unspecified_type | difference_type |
typedef unspecified_type | iterator_category |
typedef unspecified_type | Supports_vertex_halfedge |
typedef unspecified_type | Supports_halfedge_prev |
typedef unspecified_type | Supports_halfedge_vertex |
typedef unspecified_type | Supports_halfedge_face |
typedef unspecified_type | Supports_face_halfedge |
typedef unspecified_type | Supports_removal |
Public Member Functions inherited from CGAL::HalfedgeDS_items_decorator< HDS > | |
HalfedgeDS_items_decorator () | |
default constructor. | |
Halfedge_handle | get_vertex_halfedge (Vertex_handle v) |
returns the incident halfedge of v if supported, Halfedge_handle() otherwise. | |
Vertex_handle | get_vertex (Halfedge_handle h) |
returns the incident vertex of h if supported, Vertex_handle() otherwise. | |
Halfedge_handle | get_prev (Halfedge_handle h) |
returns the previous halfedge of h if supported, Halfedge_handle() otherwise. | |
Halfedge_handle | find_prev (Halfedge_handle h) |
returns the previous halfedge of h . | |
Halfedge_handle | find_prev_around_vertex (Halfedge_handle h) |
returns the previous halfedge of h . | |
Face_handle | get_face (Halfedge_handle h) |
returns the incident face of h if supported, Face_handle() otherwise. | |
Halfedge_handle | get_face_halfedge (Face_handle f) |
returns the incident halfedge of f if supported, Halfedge_handle() otherwise. | |
void | close_tip (Halfedge_handle h) const |
makes h->opposite() the successor of h . | |
void | close_tip (Halfedge_handle h, Vertex_handle v) const |
makes h->opposite() the successor of h and sets the incident vertex of h to v . | |
void | insert_tip (Halfedge_handle h, Halfedge_handle v) const |
inserts the tip of the edge h into the halfedges around the vertex pointed to by v . | |
void | remove_tip (Halfedge_handle h) const |
removes the edge h->next()->opposite() from the halfedge circle around the vertex referred to by h . | |
void | insert_halfedge (Halfedge_handle h, Halfedge_handle f) const |
inserts the halfedge h between f and f->next() . | |
void | remove_halfedge (Halfedge_handle h) const |
removes edge h->next() from the halfedge circle around the face referred to by h . | |
void | set_vertex_in_vertex_loop (Halfedge_handle h, Vertex_handle v) const |
loops around the vertex incident to h and sets all vertex pointers to v . | |
void | set_face_in_face_loop (Halfedge_handle h, Face_handle f) const |
loops around the face incident to h and sets all face pointers to f . | |
Halfedge_handle | flip_edge (Halfedge_handle h) const |
performs an edge flip. | |
void | set_vertex_halfedge (Vertex_handle v, Halfedge_handle g) const |
sets the incident halfedge of v to g . | |
void | set_vertex_halfedge (Halfedge_handle h) const |
sets the incident halfedge of the vertex v to h . | |
void | set_vertex (Halfedge_handle h, Vertex_handle v) const |
sets the incident vertex of h to v . | |
void | set_prev (Halfedge_handle h, Halfedge_handle g) const |
sets the previous link of h to g . | |
void | set_face (Halfedge_handle h, Face_handle f) const |
sets the incident face of h to f . | |
void | set_face_halfedge (Face_handle f, Halfedge_handle g) const |
sets the incident halfedge of f to g . | |
void | set_face_halfedge (Halfedge_handle h) const |
sets the incident halfedge of the face f to h . | |
bool CGAL::HalfedgeDS_const_decorator< HDS >::is_valid | ( | bool | verbose = false , |
int | level = 0 |
||
) | const |
returns true
if the halfedge data structure hds
is valid with respect to the level
value as defined above.
If verbose
is true
, statistics are written to cerr
.
bool CGAL::HalfedgeDS_const_decorator< HDS >::normalized_border_is_valid | ( | bool | verbose = false | ) | const |
returns true
if the border halfedges are in normalized representation, which is when enumerating all halfedges with the halfedge iterator the following holds: The non-border edges precede the border edges.
For border edges, the second halfedge is a border halfedge. (The first halfedge may or may not be a border halfedge.) The halfedge iterator HalfedgeDS::border_halfedges_begin()
denotes the first border edge. If verbose
is true
, statistics are written to cerr
.