A halfedge data structure. More...
#include <HalfedgeDS.h>
Public Types | |
typedef Vertex< HDS > | Vertex_type |
A vertex in the HDS. | |
typedef Halfedge< HDS > | Halfedge_type |
A halfedge in the HDS. | |
typedef Face< HDS > | Face_type |
A face in the HDS. | |
typedef Vertex_container::iterator | Vertex_iterator |
Vertex iterator. | |
typedef Halfedge_container::iterator | Halfedge_iterator |
Halfedge iterator. | |
typedef Face_container::iterator | Face_iterator |
Face iterator. | |
typedef Vertex_container::const_iterator | Vertex_const_iterator |
Vertex const iterator. | |
typedef Halfedge_container::const_iterator | Halfedge_const_iterator |
Halfedge const iterator. | |
typedef Face_container::const_iterator | Face_const_iterator |
Face const iterator. | |
typedef Vertex_container::iterator | Vertex_handle |
Vertex handle. | |
typedef Halfedge_container::iterator | Halfedge_handle |
Halfedge handle. | |
typedef Face_container::iterator | Face_handle |
Face handle. | |
typedef Vertex_container::const_iterator | Vertex_const_handle |
const Vertex handle. | |
typedef Halfedge_container::const_iterator | Halfedge_const_handle |
const Halfedge handle. | |
typedef Face_container::const_iterator | Face_const_handle |
const Face handle. | |
typedef Vertex_container::size_type | size_type |
The size type. | |
typedef Vertex_container::difference_type | difference_type |
The pointer difference type. | |
typedef Face_Halfedge_circ < Halfedge_handle > | Face_Halfedge_circulator |
Halfedge around Face circulator. | |
typedef Face_Halfedge_circ < Halfedge_const_handle > | Face_Halfedge_const_circulator |
Halfedge around Face const circulator. | |
Public Member Functions | |
HalfedgeDS () | |
Default constructor. Empty containers. | |
HalfedgeDS (size_type v, size_type h, size_type f) | |
Size constructor. | |
HalfedgeDS (const HalfedgeDS &x) | |
Copy constructor. | |
~HalfedgeDS () | |
Destructor. | |
HalfedgeDS & | operator= (const HalfedgeDS &x) |
Assignment operator. | |
Vertex_const_iterator | vertices_begin () const |
Return a const iterator to the beginning of the vertices. | |
Vertex_const_iterator | vertices_end () const |
Return a const iterator to the end of the vertices. | |
Halfedge_const_iterator | halfedges_begin () const |
Return a const iterator to the beginning of the half-edges. | |
Halfedge_const_iterator | halfedges_end () const |
Return a const iterator to the end of the half-edges. | |
Face_const_iterator | faces_begin () const |
Return a const iterator to the beginning of the faces. | |
Face_const_iterator | faces_end () const |
Return a const iterator to the end of the faces. | |
size_type | vertices_size () const |
Return the number of vertices. | |
size_type | halfedges_size () const |
Return the number of half-edges. | |
size_type | faces_size () const |
Return the number of faces. | |
Vertex_iterator | vertices_begin () |
Return an iterator to the beginning of the vertices. | |
Vertex_iterator | vertices_end () |
Return an iterator to the end of the vertices. | |
Halfedge_iterator | halfedges_begin () |
Return an iterator to the beginning of the half-edges. | |
Halfedge_iterator | halfedges_end () |
Return an iterator to the end of the half-edges. | |
Face_iterator | faces_begin () |
Return an iterator to the beginning of the faces. | |
Face_iterator | faces_end () |
Return an iterator to the end of the faces. | |
bool | is_valid () const |
Return true if the data structure is valid. | |
bool | is_valid (Vertex_const_handle h) const |
Return true if the vertex handle is null or points to a vertex. | |
bool | is_valid (Halfedge_const_handle h) const |
Return true if the halfedge handle is null or points to a halfedge. | |
bool | is_valid (Face_const_handle h) const |
Return true if the face handle is null or points to a face. | |
difference_type | index (Vertex_const_handle h) const |
Return the index of a vertex specified by its handle. | |
difference_type | index (Halfedge_const_handle h) const |
Return the index of a half-edge specified by its handle. | |
difference_type | index (Face_const_handle h) const |
Return the index of a face specified by its handle. | |
bool | is_null (Vertex_const_handle h) const |
Return true if the Vertex_handle is null. | |
bool | is_null (Halfedge_const_handle h) const |
Return true if the Halfedge_handle is null. | |
bool | is_null (Face_const_handle h) const |
Return true if the Face_handle is null. | |
void | reserve (size_type v, size_type h, size_type f) |
Reserve memory for v vertices, h halfedges and f faces. | |
void | clear () |
Clear the data structure. | |
Vertex_handle | insert_vertex () |
Add a vertex with a null halfedge and return its handle. | |
Vertex_handle | insert_vertex (const Vertex_type &x) |
Add a copy of x and return its handle. | |
Halfedge_handle | insert_halfedge () |
Add a halfedge and its opposite. Return a handle to the former. | |
Halfedge_handle | insert_halfedge (const Halfedge_type &x) |
Add a copy of x , (and its opposite), and return its handle. | |
Halfedge_handle | insert_halfedge (const Halfedge_type &x, const Halfedge_type &y) |
Add a copy of x and its opposite y , and return its handle. | |
Face_handle | insert_face () |
Add a face with a null halfedge and return its handle. | |
Face_handle | insert_face (const Face_type &x) |
Add a copy of x and return its handle. | |
void | put (std::ostream &out) const |
Write indices for each of the handles. | |
void | get (std::istream &in) |
Read indices and convert them to handles. |
A halfedge data structure.
HalfedgeDS< Vertex, Halfedge, Face >::HalfedgeDS | ( | size_type | v, | |
size_type | h, | |||
size_type | f | |||
) | [inline] |
Size constructor.
Reserve memory for v
vertices, h
halfedges and f
faces.
Halfedge_handle HalfedgeDS< Vertex, Halfedge, Face >::insert_halfedge | ( | ) |
Add a halfedge and its opposite. Return a handle to the former.
Use the default constructor.
bool HalfedgeDS< Vertex, Halfedge, Face >::is_valid | ( | ) | const [inline] |
Return true if the data structure is valid.
To be valid, all the handles must be valid or null.