Developer Documentation

Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
OpenVolumeMesh::TopologyKernel Class Reference
Inheritance diagram for OpenVolumeMesh::TopologyKernel:

## Classes
class | CellCorrector
class | EdgeCorrector
class | FaceCorrector

## Public Types
typedef OpenVolumeMeshEdge | Edge
typedef OpenVolumeMeshFace | Face
typedef OpenVolumeMeshCell | Cell
Public Types inherited from OpenVolumeMesh::ResourceManager
typedef std::vector< BaseProperty * > | Properties

## Public Member Functions
TopologyKernel & | operator= (const TopologyKernel &)=default
void | assign (const TopologyKernel *other)
VertexVertexIter | vv_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexVertexIter, VertexVertexIter > | vertex_vertices (const VertexHandle &_h, int _max_laps=1) const
VertexOHalfEdgeIter | voh_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexOHalfEdgeIter, VertexOHalfEdgeIter > | outgoing_halfedges (const VertexHandle &_h, int _max_laps=1) const
VertexIHalfEdgeIter | vih_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexIHalfEdgeIter, VertexIHalfEdgeIter > | incoming_halfedges (const VertexHandle &_h, int _max_laps=1) const
VertexEdgeIter | ve_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexEdgeIter, VertexEdgeIter > | vertex_edges (const VertexHandle &_h, int _max_laps=1) const
VertexHalfFaceIter | vhf_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexHalfFaceIter, VertexHalfFaceIter > | vertex_halffaces (const VertexHandle &_h, int _max_laps=1) const
VertexFaceIter | vf_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexFaceIter, VertexFaceIter > | vertex_faces (const VertexHandle &_h, int _max_laps=1) const
VertexCellIter | vc_iter (const VertexHandle &_h, int _max_laps=1) const
std::pair< VertexCellIter, VertexCellIter > | vertex_cells (const VertexHandle &_h, int _max_laps=1) const
HalfEdgeHalfFaceIter | hehf_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
std::pair< HalfEdgeHalfFaceIter, HalfEdgeHalfFaceIter > | halfedge_halffaces (const HalfEdgeHandle &_h, int _max_laps=1) const
HalfEdgeFaceIter | hef_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
std::pair< HalfEdgeFaceIter, HalfEdgeFaceIter > | halfedge_faces (const HalfEdgeHandle &_h, int _max_laps=1) const
HalfEdgeCellIter | hec_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
std::pair< HalfEdgeCellIter, HalfEdgeCellIter > | halfedge_cells (const HalfEdgeHandle &_h, int _max_laps=1) const
EdgeHalfFaceIter | ehf_iter (const EdgeHandle &_h, int _max_laps=1) const
std::pair< EdgeHalfFaceIter, EdgeHalfFaceIter > | edge_halffaces (const EdgeHandle &_h, int _max_laps=1) const
EdgeFaceIter | ef_iter (const EdgeHandle &_h, int _max_laps=1) const
std::pair< EdgeFaceIter, EdgeFaceIter > | edge_faces (const EdgeHandle &_h, int _max_laps=1) const
EdgeCellIter | ec_iter (const EdgeHandle &_h, int _max_laps=1) const
std::pair< EdgeCellIter, EdgeCellIter > | edge_cells (const EdgeHandle &_h, int _max_laps=1) const
HalfFaceHalfEdgeIter | hfhe_iter (const HalfFaceHandle &_h, int _max_laps=1) const
std::pair< HalfFaceHalfEdgeIter, HalfFaceHalfEdgeIter > | halfface_halfedges (const HalfFaceHandle &_h, int _max_laps=1) const
HalfFaceEdgeIter | hfe_iter (const HalfFaceHandle &_h, int _max_laps=1) const
std::pair< HalfFaceEdgeIter, HalfFaceEdgeIter > | halfface_edges (const HalfFaceHandle &_h, int _max_laps=1) const
FaceVertexIter | fv_iter (const FaceHandle &_h, int _max_laps=1) const
std::pair< FaceVertexIter, FaceVertexIter > | face_vertices (const FaceHandle &_h, int _max_laps=1) const
FaceHalfEdgeIter | fhe_iter (const FaceHandle &_h, int _max_laps=1) const
std::pair< FaceHalfEdgeIter, FaceHalfEdgeIter > | face_halfedges (const FaceHandle &_h, int _max_laps=1) const
FaceEdgeIter | fe_iter (const FaceHandle &_h, int _max_laps=1) const
std::pair< FaceEdgeIter, FaceEdgeIter > | face_edges (const FaceHandle &_h, int _max_laps=1) const
CellVertexIter | cv_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellVertexIter, CellVertexIter > | cell_vertices (const CellHandle &_h, int _max_laps=1) const
CellHalfEdgeIter | che_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellHalfEdgeIter, CellHalfEdgeIter > | cell_halfedges (const CellHandle &_h, int _max_laps=1) const
CellEdgeIter | ce_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellEdgeIter, CellEdgeIter > | cell_edges (const CellHandle &_h, int _max_laps=1) const
CellHalfFaceIter | chf_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellHalfFaceIter, CellHalfFaceIter > | cell_halffaces (const CellHandle &_h, int _max_laps=1) const
CellFaceIter | cf_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellFaceIter, CellFaceIter > | cell_faces (const CellHandle &_h, int _max_laps=1) const
CellCellIter | cc_iter (const CellHandle &_h, int _max_laps=1) const
std::pair< CellCellIter, 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, HalfFaceVertexIter > | halfface_vertices (const HalfFaceHandle &_h, int _max_laps=1) const
BoundaryHalfFaceHalfFaceIter | bhfhf_iter (const HalfFaceHandle &_ref_h, int _max_laps=1) const
std::pair< BoundaryHalfFaceHalfFaceIter, BoundaryHalfFaceHalfFaceIter > | boundary_halfface_halffaces (const HalfFaceHandle &_h, int _max_laps=1) const
BoundaryVertexIter | bv_iter () const
BoundaryHalfEdgeIter | bhe_iter () const
BoundaryEdgeIter | be_iter () const
BoundaryHalfFaceIter | bhf_iter () const
BoundaryFaceIter | bf_iter () const
BoundaryCellIter | bc_iter () const
VertexIter | v_iter () const
VertexIter | vertices_begin () const
VertexIter | vertices_end () const
std::pair< VertexIter, VertexIter > | vertices () const
EdgeIter | e_iter () const
EdgeIter | edges_begin () const
EdgeIter | edges_end () const
std::pair< EdgeIter, EdgeIter > | edges () const
HalfEdgeIter | he_iter () const
HalfEdgeIter | halfedges_begin () const
HalfEdgeIter | halfedges_end () const
std::pair< HalfEdgeIter, HalfEdgeIter > | halfedges () const
FaceIter | f_iter () const
FaceIter | faces_begin () const
FaceIter | faces_end () const
std::pair< FaceIter, FaceIter > | faces () const
HalfFaceIter | hf_iter () const
HalfFaceIter | halffaces_begin () const
HalfFaceIter | halffaces_end () const
std::pair< HalfFaceIter, HalfFaceIter > | halffaces () const
CellIter | c_iter () const
CellIter | cells_begin () const
CellIter | cells_end () const
std::pair< CellIter, CellIter > | cells () const
std::vector< VertexHandle > | halfedge_vertices (const HalfEdgeHandle &_h) const
std::vector< VertexHandle > | edge_vertices (const EdgeHandle &_h) const
std::vector< HalfEdgeHandle > | edge_halfedges (const EdgeHandle &_h) const
std::vector< HalfFaceHandle > | face_halffaces (const FaceHandle &_h) const
std::vector< CellHandle > | face_cells (const FaceHandle &_h) const
size_t | n_vertices () const override
| Get number of vertices in mesh.
size_t | n_edges () const override
| Get number of edges in mesh.
size_t | n_halfedges () const override
| Get number of halfedges in mesh.
size_t | n_faces () const override
| Get number of faces in mesh.
size_t | n_halffaces () const override
| Get number of halffaces in mesh.
size_t | n_cells () const override
| 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.
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...
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 Edge & | edge (const EdgeHandle &_edgeHandle) const
| Get edge with handle _edgeHandle.
const Face & | face (const FaceHandle &_faceHandle) const
| Get face with handle _faceHandle.
const Cell & | cell (const CellHandle &_cellHandle) const
| Get cell with handle _cellHandle.
Edge & | edge (const EdgeHandle &_edgeHandle)
| Get edge with handle _edgeHandle.
Face & | face (const FaceHandle &_faceHandle)
| Get face with handle _faceHandle.
Cell & | cell (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.
VertexHandle | from_vertex_handle (const HalfEdgeHandle &_h) const
| Get the vertex the halfedge starts from.
VertexHandle | to_vertex_handle (const HalfEdgeHandle &_h) const
| Get the vertex the halfedge points to.
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
bool | is_boundary (const CellHandle &_cellHandle) 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)
| ResourceManager (ResourceManager &&other)
ResourceManager & | operator= (const ResourceManager &other)
ResourceManager & | operator= (ResourceManager &&other)
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<typename T , typename EntityTag >
PropertyTT< T, EntityTag > | request_property (const std::string &_name=std::string(), const T _def=T())
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<typename T , class EntityTag >
void | set_persistent (PropertyTT< T, EntityTag > &_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

## Static Public Member Functions
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
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)

## Protected Member Functions
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)

## Static Protected Member Functions
template<class Circulator >
static Circulator | make_end_circulator (const Circulator &_circ)

## Protected Attributes
std::vector< std::vector< HalfEdgeHandle > > | outgoing_hes_per_vertex_
std::vector< std::vector< HalfFaceHandle > > | incident_hfs_per_he_
std::vector< CellHandle > | incident_cell_per_hf_
std::vector< Edge > | edges_
std::vector< Face > | faces_
std::vector< Cell > | cells_
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

## Private Member Functions
template<class ContainerT >
void | get_incident_edges (const ContainerT &_vs, std::set< EdgeHandle > &_es) const
template<class ContainerT >
void | get_incident_faces (const ContainerT &_es, std::set< FaceHandle > &_fs) const
template<class ContainerT >
void | get_incident_cells (const ContainerT &_fs, std::set< CellHandle > &_cs) const
VertexIter | delete_vertex_core (const VertexHandle &_h)
| Delete vertex from mesh. More...
EdgeIter | delete_edge_core (const EdgeHandle &_h)
| Delete edge from mesh. More...
FaceIter | delete_face_core (const FaceHandle &_h)
| Delete face from mesh. More...
CellIter | delete_cell_core (const CellHandle &_h)
| Delete cell from mesh. More...

## Private Attributes
size_t | n_vertices_ = 0u
bool | v_bottom_up_ = true
bool | e_bottom_up_ = true
bool | f_bottom_up_ = true
bool | deferred_deletion = true
bool | fast_deletion = true

## Friends
class | StatusAttrib
class | VertexOHalfEdgeIter
class | VertexVertexIter
class | HalfEdgeHalfFaceIter
class | VertexFaceIter
class | VertexCellIter
class | HalfEdgeCellIter
class | CellVertexIter
class | CellCellIter
class | HalfFaceVertexIter
class | BoundaryHalfFaceHalfFaceIter
class | VertexIter
class | EdgeIter
class | HalfEdgeIter
class | FaceIter
class | HalfFaceIter
class | CellIter

## Detailed Description

Definition at line 49 of file TopologyKernel.hh.

## Member Function Documentation

## ◆ add_cell()

CellHandle OpenVolumeMesh::TopologyKernel::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 in OpenVolumeMesh::HexahedralMeshTopologyKernel, and OpenVolumeMesh::TetrahedralMeshTopologyKernel.

Definition at line 367 of file TopologyKernel.cc.

## ◆ add_face() [1/2]

FaceHandle OpenVolumeMesh::TopologyKernel::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 in OpenVolumeMesh::HexahedralMeshTopologyKernel, and OpenVolumeMesh::TetrahedralMeshTopologyKernel.

Definition at line 148 of file TopologyKernel.cc.

## ◆ add_face() [2/2]

FaceHandle OpenVolumeMesh::TopologyKernel::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 in OpenVolumeMesh::HexahedralMeshTopologyKernel, and OpenVolumeMesh::TetrahedralMeshTopologyKernel.

Definition at line 237 of file TopologyKernel.cc.

## ◆ adjacent_halfface_in_cell()

HalfFaceHandle OpenVolumeMesh::TopologyKernel::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.

Returns
  Handle of the adjacent half-face if _halfFaceHandle is not at a boundary, InvalidHalfFaceHandle otherwise.

Warning
  The mesh must have face bottom-up incidences.

Definition at line 2281 of file TopologyKernel.cc.

## ◆ delete_cell()

CellIter OpenVolumeMesh::TopologyKernel::delete_cell | ( | const CellHandle & | _h | ) |
| virtual

Delete cell from mesh.

Since there's no higher dimensional incident entity to a cell, we can safely delete it from the mesh.

Parameters

  _h | The handle to the cell to be deleted

Definition at line 713 of file TopologyKernel.cc.

## ◆ delete_cell_core()

CellIter OpenVolumeMesh::TopologyKernel::delete_cell_core | ( | const CellHandle & | _h | ) |
| private

Delete cell from mesh.

After performing this operation, all cells following cell _h in the array will be accessible through their old handle decreased by one. These steps are performed:

1) Delete links in BU: HF -> C 2) Decrease all entries > c in BU: HF -> C 3) Delete cell from storage array 4) Delete property item

Parameters

  _h | A cell handle

Definition at line 1373 of file TopologyKernel.cc.

## ◆ delete_cell_range()

CellIter OpenVolumeMesh::TopologyKernel::delete_cell_range | ( | const CellIter & | _first,
|  | const CellIter & | _last
| ) |  |

Delete range of cells.

Deletes all cells in range [_first, _last].

Parameters

  _first | Iterator to first cell that is to be deleted
  _last | Iterator to last cell that is to be deleted

Returns
  An iterator to the first cell after the deleted range

Definition at line 1974 of file TopologyKernel.cc.

## ◆ delete_edge()

EdgeIter OpenVolumeMesh::TopologyKernel::delete_edge | ( | const EdgeHandle & | _h | ) |
| virtual

Delete edge from mesh.

Get all incident higher-dimensional entities and delete the complete subtree of the mesh incident to edge h. In this function all incident entities are gathered and deleted using the delete*_core functions that do the actual deletion including the update of the bottom-up incidences, etc.

Parameters

  _h | The handle to the edge to be deleted

Definition at line 639 of file TopologyKernel.cc.

## ◆ delete_edge_core()

EdgeIter OpenVolumeMesh::TopologyKernel::delete_edge_core | ( | const EdgeHandle & | _h | ) |
| private

Delete edge from mesh.

After performing this operation, all edges following edge _h in the array will be accessible through their old handle decreased by one. This function directly fixes the edge links in all faces. These steps are performed:

1) Delete bottom-up links from incident vertices 2) Decrease all half-edge handles > _h in incident faces 3) Delete entry in bottom-up list: HE -> HF 4) Decrease all half-edge handles > 2*_h.idx() in vertex bottom-up list 5) Delete edge itself 6) Delete property entry

Parameters

  _h | An edge's handle

Definition at line 1018 of file TopologyKernel.cc.

## ◆ delete_face()

FaceIter OpenVolumeMesh::TopologyKernel::delete_face | ( | const FaceHandle & | _h | ) |
| virtual

Delete face from mesh.

Get all incident higher-dimensional entities and delete the complete subtree of the mesh incident to face h. In this function all incident entities are gathered and deleted using the delete*_core functions that do the actual deletion including the update of the bottom-up incidences, etc.

Parameters

  _h | The handle to the face to be deleted

Definition at line 682 of file TopologyKernel.cc.

## ◆ delete_face_core()

FaceIter OpenVolumeMesh::TopologyKernel::delete_face_core | ( | const FaceHandle & | _h | ) |
| private

Delete face from mesh.

After performing this operation, all faces following face _h in the array will be accessible through their old handle decreased by one. This function directly fixes the face links in all cells. These steps are performed:

1) Delete bottom-up links from incident edges 2) Decrease all half-face handles > _h in incident cells 3) Delete entry in bottom-up list: HF -> C 4) Decrease all half-face handles > 2*_h.idx() in half-edge bottom-up list 5) Delete face itself 6) Delete property entry

Parameters

  _h | An face's handle

Definition at line 1202 of file TopologyKernel.cc.

## ◆ delete_vertex()

VertexIter OpenVolumeMesh::TopologyKernel::delete_vertex | ( | const VertexHandle & | _h | ) |
| virtual

Delete vertex from mesh.

Get all incident higher-dimensional entities and delete the complete subtree of the mesh incident to vertex h. In this function all incident entities are gathered and deleted using the delete*_core functions that do the actual deletion including the update of the bottom-up incidences, etc.

Parameters

  _h | The handle to the vertex to be deleted

Definition at line 587 of file TopologyKernel.cc.

## ◆ delete_vertex_core()

VertexIter OpenVolumeMesh::TopologyKernel::delete_vertex_core | ( | const VertexHandle & | _h | ) |
| private

Delete vertex from mesh.

After performing this operation, all vertices following vertex _h in the array will be accessible through their old handle decreased by one. This function directly fixes the vertex links in all edges. These steps are performed:

1) Decrease all vertex handles > _h in incident edges 2) Delete entry in bottom-up list: V -> HE 3) Delete vertex itself (not necessary here since a vertex is only represented by a number) 4) Delete property entry

Parameters

  _h | A vertex's handle

Definition at line 913 of file TopologyKernel.cc.

## ◆ halfedge()

OpenVolumeMeshEdge OpenVolumeMesh::TopologyKernel::halfedge | ( | const HalfEdgeHandle & | _halfEdgeHandle | ) | const

Get edge that corresponds to halfedge with handle _halfEdgeHandle.

Otherwise return the opposite halfedge via opposite()

Definition at line 2069 of file TopologyKernel.cc.

## ◆ halfface() [1/2]

HalfFaceHandle OpenVolumeMesh::TopologyKernel::halfface | ( | const std::vector< VertexHandle > & | _vs | ) | const

Get half-face from list of incident vertices (in connected order)

Note
  Only the first three vertices are checked

Definition at line 2152 of file TopologyKernel.cc.

## ◆ halfface() [2/2]

HalfFaceHandle OpenVolumeMesh::TopologyKernel::halfface | ( | const std::vector< HalfEdgeHandle > & | _hes | ) | const

Get half-face from list of incident half-edges

Note
  Only the first two half-edges are checked

Definition at line 2219 of file TopologyKernel.cc.

## ◆ halfface_extensive()

HalfFaceHandle OpenVolumeMesh::TopologyKernel::halfface_extensive | ( | const std::vector< VertexHandle > & | _vs | ) | const

Get half-face from list of incident vertices (in connected order)

Note
  All vertices are checked

Definition at line 2172 of file TopologyKernel.cc.

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

- Type-OpenVolumeMesh/libs/OpenVolumeMesh/src/OpenVolumeMesh/Core/TopologyKernel.hh
- Type-OpenVolumeMesh/libs/OpenVolumeMesh/src/OpenVolumeMesh/Core/TopologyKernel.cc