Developer Documentation
OpenVolumeMesh::TopologyKernel Class Reference
Inheritance diagram for OpenVolumeMesh::TopologyKernel:
OpenVolumeMesh::ResourceManager OpenVolumeMesh::HexahedralMeshTopologyKernel OpenVolumeMesh::TetrahedralMeshTopologyKernel

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

VertexOHalfEdgeIter voh_iter (const VertexHandle &_h, int _max_laps=1) const
 
std::pair< VertexOHalfEdgeIter, VertexOHalfEdgeIteroutgoing_halfedges (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
 
VertexCellIter vc_iter (const VertexHandle &_h, int _max_laps=1) const
 
std::pair< VertexCellIter, VertexCellItervertex_cells (const VertexHandle &_h, int _max_laps=1)
 
HalfEdgeCellIter hec_iter (const HalfEdgeHandle &_h, int _max_laps=1) const
 
std::pair< HalfEdgeCellIter, HalfEdgeCellIterhalfedge_cells (const HalfEdgeHandle &_h, int _max_laps=1)
 
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.
 
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 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
 
bool needs_garbage_collection () 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
 

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 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)
 

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< 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_
 
bool needs_garbage_collection_
 

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_
 
bool v_bottom_up_
 
bool e_bottom_up_
 
bool f_bottom_up_
 
bool deferred_deletion
 
bool fast_deletion
 

Friends

class StatusAttrib
 
class VertexOHalfEdgeIter
 
class HalfEdgeHalfFaceIter
 
class VertexCellIter
 
class HalfEdgeCellIter
 
class CellVertexIter
 
class CellCellIter
 
class HalfFaceVertexIter
 
class BoundaryHalfFaceHalfFaceIter
 
class BoundaryFaceIter
 
class VertexIter
 
class EdgeIter
 
class HalfEdgeIter
 
class FaceIter
 
class HalfFaceIter
 
class CellIter
 

Detailed Description

Definition at line 57 of file TopologyKernel.hh.

Member Function Documentation

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 379 of file TopologyKernel.cc.

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 162 of file TopologyKernel.cc.

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 251 of file TopologyKernel.cc.

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 2266 of file TopologyKernel.cc.

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
_hThe handle to the cell to be deleted

Definition at line 713 of file TopologyKernel.cc.

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
_hA cell handle

Definition at line 1368 of file TopologyKernel.cc.

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

Delete range of cells.

Deletes all cells in range [_first, _last].

Parameters
_firstIterator to first cell that is to be deleted
_lastIterator to last cell that is to be deleted
Returns
An iterator to the first cell after the deleted range

Definition at line 1959 of file TopologyKernel.cc.

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
_hThe handle to the edge to be deleted

Definition at line 643 of file TopologyKernel.cc.

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
_hAn edge's handle

Definition at line 1015 of file TopologyKernel.cc.

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
_hThe handle to the face to be deleted

Definition at line 684 of file TopologyKernel.cc.

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
_hAn face's handle

Definition at line 1199 of file TopologyKernel.cc.

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
_hThe handle to the vertex to be deleted

Definition at line 593 of file TopologyKernel.cc.

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
_hA vertex's handle

Definition at line 910 of file TopologyKernel.cc.

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 2054 of file TopologyKernel.cc.

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 2137 of file TopologyKernel.cc.

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 2204 of file TopologyKernel.cc.

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 2157 of file TopologyKernel.cc.


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