Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
OpenVolumeMesh::TetrahedralMeshTopologyKernel Class Reference

A data structure based on PolyhedralMesh with specializations for tetrahedra. More...

#include <libs_required/OpenVolumeMesh/src/OpenVolumeMesh/Mesh/TetrahedralMeshTopologyKernel.hh>

Inheritance diagram for OpenVolumeMesh::TetrahedralMeshTopologyKernel:
OpenVolumeMesh::TopologyKernel OpenVolumeMesh::ResourceManager

Public Types

typedef class TetVertexIter TetVertexIter
- Public Types inherited from OpenVolumeMesh::TopologyKernel
typedef OpenVolumeMeshEdge Edge
typedef OpenVolumeMeshFace Face
typedef OpenVolumeMeshCell Cell
- Public Types inherited from OpenVolumeMesh::ResourceManager
typedef std::vector
< BaseProperty * > 

Public Member Functions

virtual FaceHandle add_face (const std::vector< HalfEdgeHandle > &_halfedges, bool _topologyCheck=false)
 Add face via incident edges. More...
virtual FaceHandle add_face (const std::vector< VertexHandle > &_vertices)
 Add face via incident vertices. More...
virtual CellHandle add_cell (const std::vector< HalfFaceHandle > &_halffaces, bool _topologyCheck=false)
 Add cell via incident halffaces. More...
CellHandle add_cell (const std::vector< VertexHandle > &_vertices, bool _topologyCheck=false)
CellHandle add_cell (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3, bool _topologyCheck=false)
HalfFaceHandle add_halfface (const std::vector< HalfEdgeHandle > &_halfedges, bool _topologyCheck=false)
HalfFaceHandle add_halfface (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, bool _topologyCheck=false)
HalfEdgeHandle add_halfedge (const VertexHandle &_fromVertex, const VertexHandle &_toVertex)
std::vector< VertexHandleget_cell_vertices (CellHandle ch) const
std::vector< VertexHandleget_cell_vertices (CellHandle ch, VertexHandle vh) const
std::vector< VertexHandleget_cell_vertices (HalfFaceHandle hfh) const
std::vector< VertexHandleget_cell_vertices (HalfFaceHandle hfh, HalfEdgeHandle heh) const
std::vector< VertexHandleget_halfface_vertices (HalfFaceHandle hfh) const
std::vector< VertexHandleget_halfface_vertices (HalfFaceHandle hfh, VertexHandle vh) const
std::vector< VertexHandleget_halfface_vertices (HalfFaceHandle hfh, HalfEdgeHandle heh) const
VertexHandle collapse_edge (HalfEdgeHandle _heh)
TetVertexIter tv_iter (const CellHandle &_ref_h, int _max_laps=1) const
std::pair< TetVertexIter,
TetVertexIter > 
tet_vertices (const CellHandle &_ref_h, int _max_laps=1) const
- Public Member Functions inherited from OpenVolumeMesh::TopologyKernel
VertexOHalfEdgeIter voh_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexOHalfEdgeIter,
outgoing_halfedges (const VertexHandle &_h, int _max_laps=1) const
HalfEdgeHalfFaceIter hehf_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
< HalfEdgeHalfFaceIter,
halfedge_halffaces (const HalfEdgeHandle &_h, int _max_laps=1) const
VertexCellIter vc_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexCellIter,
vertex_cells (const VertexHandle &_h, int _max_laps=1)
HalfEdgeCellIter hec_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
std::pair< HalfEdgeCellIter,
halfedge_cells (const HalfEdgeHandle &_h, int _max_laps=1)
CellVertexIter cv_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellVertexIter,
cell_vertices (const CellHandle &_h, int _max_laps=1) const
CellCellIter cc_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellCellIter,
cell_cells (const CellHandle &_h, int _max_laps=1) const
HalfFaceVertexIter hfv_iter (const HalfFaceHandle &_h, int _max_laps=1) const
std::pair< HalfFaceVertexIter,
halfface_vertices (const HalfFaceHandle &_h, int _max_laps=1) const
BoundaryHalfFaceHalfFaceIter bhfhf_iter (const HalfFaceHandle &_ref_h, int _max_laps=1) const
< BoundaryHalfFaceHalfFaceIter,
boundary_halfface_halffaces (const HalfFaceHandle &_h, int _max_laps=1) const
BoundaryFaceIter bf_iter () const
VertexIter v_iter () const
VertexIter vertices_begin () const
VertexIter vertices_end () const
std::pair< VertexIter, VertexItervertices () const
EdgeIter e_iter () const
EdgeIter edges_begin () const
EdgeIter edges_end () const
std::pair< EdgeIter, EdgeIteredges () const
HalfEdgeIter he_iter () const
HalfEdgeIter halfedges_begin () const
HalfEdgeIter halfedges_end () const
std::pair< HalfEdgeIter,
halfedges () const
FaceIter f_iter () const
FaceIter faces_begin () const
FaceIter faces_end () const
std::pair< FaceIter, FaceIterfaces () const
HalfFaceIter hf_iter () const
HalfFaceIter halffaces_begin () const
HalfFaceIter halffaces_end () const
std::pair< HalfFaceIter,
halffaces () const
CellIter c_iter () const
CellIter cells_begin () const
CellIter cells_end () const
std::pair< CellIter, CellItercells () const
virtual size_t n_vertices () const
 Get number of vertices in mesh.
virtual size_t n_edges () const
 Get number of edges in mesh.
virtual size_t n_halfedges () const
 Get number of halfedges in mesh.
virtual size_t n_faces () const
 Get number of faces in mesh.
virtual size_t n_halffaces () const
 Get number of halffaces in mesh.
virtual size_t n_cells () const
 Get number of cells in mesh.
int genus () const
virtual VertexHandle add_vertex ()
 Add abstract vertex.
virtual EdgeHandle add_edge (const VertexHandle &_fromVertex, const VertexHandle &_toHandle, bool _allowDuplicates=false)
 Add edge.
void set_edge (const EdgeHandle &_eh, const VertexHandle &_fromVertex, const VertexHandle &_toVertex)
 Set the vertices of an edge.
void set_face (const FaceHandle &_fh, const std::vector< HalfEdgeHandle > &_hes)
 Set the half-edges of a face.
void set_cell (const CellHandle &_ch, const std::vector< HalfFaceHandle > &_hfs)
 Set the half-faces of a cell.
const Edgeedge (const EdgeHandle &_edgeHandle) const
 Get edge with handle _edgeHandle.
const Faceface (const FaceHandle &_faceHandle) const
 Get face with handle _faceHandle.
const Cellcell (const CellHandle &_cellHandle) const
 Get cell with handle _cellHandle.
Edgeedge (const EdgeHandle &_edgeHandle)
 Get edge with handle _edgeHandle.
Faceface (const FaceHandle &_faceHandle)
 Get face with handle _faceHandle.
Cellcell (const CellHandle &_cellHandle)
 Get cell with handle _cellHandle.
Edge halfedge (const HalfEdgeHandle &_halfEdgeHandle) const
 Get edge that corresponds to halfedge with handle _halfEdgeHandle. More...
Face halfface (const HalfFaceHandle &_halfFaceHandle) const
 Get face that corresponds to halfface with handle _halfFaceHandle.
Edge opposite_halfedge (const HalfEdgeHandle &_halfEdgeHandle) const
 Get opposite halfedge that corresponds to halfedge with handle _halfEdgeHandle.
Face opposite_halfface (const HalfFaceHandle &_halfFaceHandle) const
 Get opposite halfface that corresponds to halfface with handle _halfFaceHandle.
HalfEdgeHandle halfedge (const VertexHandle &_vh1, const VertexHandle &_vh2) const
 Get halfedge from vertex _vh1 to _vh2.
HalfFaceHandle halfface (const std::vector< VertexHandle > &_vs) const
HalfFaceHandle halfface_extensive (const std::vector< VertexHandle > &_vs) const
HalfFaceHandle halfface (const std::vector< HalfEdgeHandle > &_hes) const
HalfEdgeHandle next_halfedge_in_halfface (const HalfEdgeHandle &_heh, const HalfFaceHandle &_hfh) const
 Get next halfedge within a halfface.
HalfEdgeHandle prev_halfedge_in_halfface (const HalfEdgeHandle &_heh, const HalfFaceHandle &_hfh) const
 Get previous halfedge within a halfface.
size_t valence (const VertexHandle &_vh) const
 Get valence of vertex (number of incident edges)
size_t valence (const EdgeHandle &_eh) const
 Get valence of edge (number of incident faces)
size_t valence (const FaceHandle &_fh) const
 Get valence of face (number of incident edges)
size_t valence (const CellHandle &_ch) const
 Get valence of cell (number of incident faces)
virtual VertexIter delete_vertex (const VertexHandle &_h)
 Delete vertex from mesh. More...
virtual EdgeIter delete_edge (const EdgeHandle &_h)
 Delete edge from mesh. More...
virtual FaceIter delete_face (const FaceHandle &_h)
 Delete face from mesh. More...
virtual CellIter delete_cell (const CellHandle &_h)
 Delete cell from mesh. More...
virtual void collect_garbage ()
 Delete all entities that are marked as deleted.
virtual bool is_deleted (const VertexHandle &_h) const
virtual bool is_deleted (const EdgeHandle &_h) const
virtual bool is_deleted (const HalfEdgeHandle &_h) const
virtual bool is_deleted (const FaceHandle &_h) const
virtual bool is_deleted (const HalfFaceHandle &_h) const
virtual bool is_deleted (const CellHandle &_h) const
CellIter delete_cell_range (const CellIter &_first, const CellIter &_last)
 Delete range of cells. More...
virtual void clear (bool _clearProps=true)
 Clear whole mesh.
void enable_bottom_up_incidences (bool _enable=true)
void enable_vertex_bottom_up_incidences (bool _enable=true)
void enable_edge_bottom_up_incidences (bool _enable=true)
void enable_face_bottom_up_incidences (bool _enable=true)
bool has_full_bottom_up_incidences () const
bool has_vertex_bottom_up_incidences () const
bool has_edge_bottom_up_incidences () const
bool has_face_bottom_up_incidences () const
void enable_deferred_deletion (bool _enable=true)
bool deferred_deletion_enabled () const
void enable_fast_deletion (bool _enable=true)
bool fast_deletion_enabled () const
HalfFaceHandle adjacent_halfface_in_cell (const HalfFaceHandle &_halfFaceHandle, const HalfEdgeHandle &_halfEdgeHandle) const
 Get halfface that is adjacent (w.r.t. a common halfedge) within the same cell. More...
CellHandle incident_cell (const HalfFaceHandle &_halfFaceHandle) const
 Get cell that is incident to the given halfface.
bool is_boundary (const HalfFaceHandle &_halfFaceHandle) const
bool is_boundary (const FaceHandle &_faceHandle) const
bool is_boundary (const EdgeHandle &_edgeHandle) const
bool is_boundary (const HalfEdgeHandle &_halfedgeHandle) const
bool is_boundary (const VertexHandle &_vertexHandle) const
size_t n_vertices_in_cell (const CellHandle &_ch) const
Edge opposite_halfedge (const Edge &_edge) const
Face opposite_halfface (const Face &_face) const
- Public Member Functions inherited from OpenVolumeMesh::ResourceManager
void resize_vprops (size_t _nv)
 Change size of stored vertex properties.
void resize_eprops (size_t _ne)
 Change size of stored edge properties.
void resize_fprops (size_t _nf)
 Change size of stored face properties.
void resize_cprops (size_t _nc)
 Change size of stored cell properties.
void clear_vertex_props ()
void clear_edge_props ()
void clear_halfedge_props ()
void clear_face_props ()
void clear_halfface_props ()
void clear_cell_props ()
void clear_mesh_props ()
template<class T >
VertexPropertyT< T > request_vertex_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
EdgePropertyT< T > request_edge_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
HalfEdgePropertyT< T > request_halfedge_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
FacePropertyT< T > request_face_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
HalfFacePropertyT< T > request_halfface_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
CellPropertyT< T > request_cell_property (const std::string &_name=std::string(), const T _def=T())
template<class T >
MeshPropertyT< T > request_mesh_property (const std::string &_name=std::string(), const T _def=T())
size_t n_vertex_props () const
size_t n_edge_props () const
size_t n_halfedge_props () const
size_t n_face_props () const
size_t n_halfface_props () const
size_t n_cell_props () const
size_t n_mesh_props () const
template<class T >
void set_persistent (VertexPropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (EdgePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (HalfEdgePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (FacePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (HalfFacePropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (CellPropertyT< T > &_prop, bool _flag=true)
template<class T >
void set_persistent (MeshPropertyT< T > &_prop, bool _flag=true)
Properties::const_iterator vertex_props_begin () const
Properties::const_iterator vertex_props_end () const
Properties::const_iterator edge_props_begin () const
Properties::const_iterator edge_props_end () const
Properties::const_iterator halfedge_props_begin () const
Properties::const_iterator halfedge_props_end () const
Properties::const_iterator face_props_begin () const
Properties::const_iterator face_props_end () const
Properties::const_iterator halfface_props_begin () const
Properties::const_iterator halfface_props_end () const
Properties::const_iterator cell_props_begin () const
Properties::const_iterator cell_props_end () const
Properties::const_iterator mesh_props_begin () const
Properties::const_iterator mesh_props_end () const
template<class PropT >
bool vertex_property_exists (const std::string &_name) const
template<class PropT >
bool edge_property_exists (const std::string &_name) const
template<class PropT >
bool halfedge_property_exists (const std::string &_name) const
template<class PropT >
bool face_property_exists (const std::string &_name) const
template<class PropT >
bool halfface_property_exists (const std::string &_name) const
template<class PropT >
bool cell_property_exists (const std::string &_name) const
template<class PropT >
bool mesh_property_exists (const std::string &_name) const

Protected Member Functions

void split_edge (HalfEdgeHandle _heh, VertexHandle _vh)
void split_face (FaceHandle _fh, VertexHandle _vh)
- Protected Member Functions inherited from OpenVolumeMesh::TopologyKernel
virtual void swap_cells (CellHandle _h1, CellHandle _h2)
virtual void swap_faces (FaceHandle _h1, FaceHandle _h2)
virtual void swap_edges (EdgeHandle _h1, EdgeHandle _h2)
virtual void swap_vertices (VertexHandle _h1, VertexHandle _h2)
virtual void delete_multiple_vertices (const std::vector< bool > &_tag)
virtual void delete_multiple_edges (const std::vector< bool > &_tag)
virtual void delete_multiple_faces (const std::vector< bool > &_tag)
virtual void delete_multiple_cells (const std::vector< bool > &_tag)
void compute_vertex_bottom_up_incidences ()
void compute_edge_bottom_up_incidences ()
void compute_face_bottom_up_incidences ()
void reorder_incident_halffaces (const EdgeHandle &_eh)
- Protected Member Functions inherited from OpenVolumeMesh::ResourceManager
void vertex_deleted (const VertexHandle &_h)
void edge_deleted (const EdgeHandle &_h)
void face_deleted (const FaceHandle &_h)
void cell_deleted (const CellHandle &_h)
void swap_cell_properties (CellHandle _h1, CellHandle _h2)
void swap_face_properties (FaceHandle _h1, FaceHandle _h2)
void swap_halfface_properties (HalfFaceHandle _h1, HalfFaceHandle _h2)
void swap_edge_properties (EdgeHandle _h1, EdgeHandle _h2)
void swap_halfedge_properties (HalfEdgeHandle _h1, HalfEdgeHandle _h2)
void swap_vertex_properties (VertexHandle _h1, VertexHandle _h2)
template<typename PropIterator , typename Handle >
void swap_property_elements (PropIterator _begin, PropIterator _end, Handle _h1, Handle _h2)
void delete_multiple_vertex_props (const std::vector< bool > &_tags)
void delete_multiple_edge_props (const std::vector< bool > &_tags)
void delete_multiple_face_props (const std::vector< bool > &_tags)
void delete_multiple_cell_props (const std::vector< bool > &_tags)

Private Member Functions

template<typename PropIterator , typename Handle >
void swapPropertyElements (PropIterator begin, PropIterator end, Handle source, Handle destination)


class TetVertexIter

Additional Inherited Members

- Static Public Member Functions inherited from OpenVolumeMesh::TopologyKernel
static HalfEdgeHandle halfedge_handle (const EdgeHandle &_h, const unsigned char _subIdx)
 Conversion function.
static HalfFaceHandle halfface_handle (const FaceHandle &_h, const unsigned char _subIdx)
 Conversion function.
static EdgeHandle edge_handle (const HalfEdgeHandle &_h)
 Handle conversion.
static FaceHandle face_handle (const HalfFaceHandle &_h)
static HalfEdgeHandle opposite_halfedge_handle (const HalfEdgeHandle &_h)
static HalfFaceHandle opposite_halfface_handle (const HalfFaceHandle &_h)
- Static Public Attributes inherited from OpenVolumeMesh::TopologyKernel
static const VertexHandle InvalidVertexHandle = VertexHandle(-1)
static const EdgeHandle InvalidEdgeHandle = EdgeHandle(-1)
static const FaceHandle InvalidFaceHandle = FaceHandle(-1)
static const CellHandle InvalidCellHandle = CellHandle(-1)
static const HalfEdgeHandle InvalidHalfEdgeHandle = HalfEdgeHandle(-1)
static const HalfFaceHandle InvalidHalfFaceHandle = HalfFaceHandle(-1)
- Static Protected Member Functions inherited from OpenVolumeMesh::TopologyKernel
template<class Circulator >
static Circulator make_end_circulator (const Circulator &_circ)
- Protected Attributes inherited from OpenVolumeMesh::TopologyKernel
std::vector< std::vector
< HalfEdgeHandle > > 
std::vector< std::vector
< HalfFaceHandle > > 
std::vector< CellHandleincident_cell_per_hf_
std::vector< Edgeedges_
std::vector< Facefaces_
std::vector< Cellcells_
std::vector< bool > vertex_deleted_
std::vector< bool > edge_deleted_
std::vector< bool > face_deleted_
std::vector< bool > cell_deleted_

Detailed Description

A data structure based on PolyhedralMesh with specializations for tetrahedra.

Definition at line 63 of file TetrahedralMeshTopologyKernel.hh.

Member Function Documentation

CellHandle OpenVolumeMesh::TetrahedralMeshTopologyKernel::add_cell ( const std::vector< HalfFaceHandle > &  _halffaces,
bool  _topologyCheck = false 

Add cell via incident halffaces.

Add cell via incident halffaces

Handle of the new cell, InvalidCellHandle if _topologyCheck is true and _halffaces are not connected.
If _halffaces are not connected and _topologyCheck is false, the behavior is undefined.

Reimplemented from OpenVolumeMesh::TopologyKernel.

Definition at line 98 of file

FaceHandle OpenVolumeMesh::TetrahedralMeshTopologyKernel::add_face ( const std::vector< HalfEdgeHandle > &  _halfedges,
bool  _topologyCheck = false 

Add face via incident edges.

Add face via incident edges

Handle of the new face, InvalidFaceHandle if _halfedges are not connected and _topologyCheck is true.
If _halfedges are not connected and _topologyCheck is false, the behavior is undefined.

Reimplemented from OpenVolumeMesh::TopologyKernel.

Definition at line 64 of file

FaceHandle OpenVolumeMesh::TetrahedralMeshTopologyKernel::add_face ( const std::vector< VertexHandle > &  _vertices)

Add face via incident vertices.

Add face via incident vertices Define the _vertices in counter-clockwise order (from the "outside")

Reimplemented from OpenVolumeMesh::TopologyKernel.

Definition at line 81 of file

The documentation for this class was generated from the following files: