Developer Documentation
OpenVolumeMesh::TetrahedralMeshTopologyKernel Class Reference

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

#include <Type-OpenVolumeMesh/libs/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 * > Properties
 

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, VertexOHalfEdgeIteroutgoing_halfedges (const VertexHandle &_h, int _max_laps=1) const
 
VertexVertexIter vv_iter (const VertexHandle &_h, int _max_laps=1) const
 
std::pair< VertexVertexIter, VertexVertexItervertex_vertices (const VertexHandle &_h, int _max_laps=1) const
 
HalfEdgeHalfFaceIter hehf_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
 
std::pair< HalfEdgeHalfFaceIter, HalfEdgeHalfFaceIterhalfedge_halffaces (const HalfEdgeHandle &_h, int _max_laps=1) const
 
VertexFaceIter vf_iter (const VertexHandle &_h, int _max_laps=1) const
 
std::pair< VertexFaceIter, VertexFaceItervertex_faces (const VertexHandle &_h, int _max_laps=1) const
 
VertexCellIter vc_iter (const VertexHandle &_h, int _max_laps=1) const
 
std::pair< VertexCellIter, VertexCellItervertex_cells (const VertexHandle &_h, int _max_laps=1) const
 
HalfEdgeCellIter hec_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
 
std::pair< HalfEdgeCellIter, HalfEdgeCellIterhalfedge_cells (const HalfEdgeHandle &_h, int _max_laps=1) const
 
CellVertexIter cv_iter (const CellHandle &_h, int _max_laps=1) const
 
std::pair< CellVertexIter, CellVertexItercell_vertices (const CellHandle &_h, int _max_laps=1) const
 
CellCellIter cc_iter (const CellHandle &_h, int _max_laps=1) const
 
std::pair< CellCellIter, CellCellItercell_cells (const CellHandle &_h, int _max_laps=1) const
 
HalfFaceVertexIter hfv_iter (const HalfFaceHandle &_h, int _max_laps=1) const
 
std::pair< HalfFaceVertexIter, HalfFaceVertexIterhalfface_vertices (const HalfFaceHandle &_h, int _max_laps=1) const
 
BoundaryHalfFaceHalfFaceIter bhfhf_iter (const HalfFaceHandle &_ref_h, int _max_laps=1) const
 
std::pair< BoundaryHalfFaceHalfFaceIter, BoundaryHalfFaceHalfFaceIterboundary_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, HalfEdgeIterhalfedges () 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, HalfFaceIterhalffaces () 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.
 
size_t n_logical_vertices () const
 Get number of undeleted vertices in mesh.
 
size_t n_logical_edges () const
 Get number of undeleted edges in mesh.
 
size_t n_logical_halfedges () const
 Get number of undeleted halfedges in mesh.
 
size_t n_logical_faces () const
 Get number of undeleted faces in mesh.
 
size_t n_logical_halffaces () const
 Get number of undeleted halffaces in mesh.
 
size_t n_logical_cells () const
 Get number of undeleted 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
 
virtual void swap_cell_indices (CellHandle _h1, CellHandle _h2)
 Exchanges the indices of two cells while keeping the mesh otherwise unaffected.
 
virtual void swap_face_indices (FaceHandle _h1, FaceHandle _h2)
 Exchanges the indices of two faces while keeping the mesh otherwise unaffected.
 
virtual void swap_edge_indices (EdgeHandle _h1, EdgeHandle _h2)
 Exchanges the indices of two edges while keeping the mesh otherwise unaffected.
 
virtual void swap_vertex_indices (VertexHandle _h1, VertexHandle _h2)
 Exchanges the indices of two vertices while keeping the mesh otherwise unaffected.
 
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
 
bool needs_garbage_collection () const
 
- Public Member Functions inherited from OpenVolumeMesh::ResourceManager
 ResourceManager (const ResourceManager &other)
 
ResourceManageroperator= (const ResourceManager &other)=delete
 
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 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)
 

Friends

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 > > outgoing_hes_per_vertex_
 
std::vector< std::vector< HalfFaceHandle > > incident_hfs_per_he_
 
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_
 
size_t n_deleted_vertices_ = 0
 
size_t n_deleted_edges_ = 0
 
size_t n_deleted_faces_ = 0
 
size_t n_deleted_cells_ = 0
 

Detailed Description

A data structure based on PolyhedralMesh with specializations for tetrahedra.

Definition at line 63 of file TetrahedralMeshTopologyKernel.hh.

Member Function Documentation

◆ add_cell()

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

Add cell via incident halffaces.

Add cell via incident halffaces

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

Reimplemented from OpenVolumeMesh::TopologyKernel.

Definition at line 98 of file TetrahedralMeshTopologyKernel.cc.

◆ add_face() [1/2]

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

Add face via incident edges.

Add face via incident edges

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

Reimplemented from OpenVolumeMesh::TopologyKernel.

Definition at line 64 of file TetrahedralMeshTopologyKernel.cc.

◆ add_face() [2/2]

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

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 TetrahedralMeshTopologyKernel.cc.


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