OpenMesh
OpenMesh::PolyConnectivity Class Reference

Connectivity Class for polygonal meshes. More...

#include <OpenMesh/Core/Mesh/PolyConnectivity.hh>

Inheritance diagram for OpenMesh::PolyConnectivity:
Collaboration diagram for OpenMesh::PolyConnectivity:

Classes

struct  ElementRange
 
struct  ElementRange< EdgeHandle >
 
struct  ElementRange< FaceHandle >
 
struct  ElementRange< HalfedgeHandle >
 
struct  ElementRange< VertexHandle >
 
struct  FaceEdgeTraits
 
struct  FaceFaceTraits
 
struct  FaceHalfedgeTraits
 
struct  FaceVertexTraits
 
struct  VertexEdgeTraits
 
struct  VertexFaceTraits
 
struct  VertexHalfedgeTraits
 
struct  VertexOppositeHalfedgeTraits
 
struct  VertexVertexTraits
 

Public Types

typedef PolyConnectivity This
 
Mesh Iterators

Refer to OpenMesh::Mesh::Iterators or Mesh Iterators and Circulators for documentation.

typedef Iterators::GenericIteratorT< This, This::VertexHandle, ArrayKernel, &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices > VertexIter
 Linear iterator.
 
typedef Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
 Linear iterator.
 
typedef Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
 Linear iterator.
 
typedef Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
 Linear iterator.
 
typedef VertexIter ConstVertexIter
 Linear iterator.
 
typedef HalfedgeIter ConstHalfedgeIter
 Linear iterator.
 
typedef EdgeIter ConstEdgeIter
 Linear iterator.
 
typedef FaceIter ConstFaceIter
 Linear iterator.
 
Mesh Circulators

Refer to OpenMesh::Mesh::Iterators or Mesh Iterators and Circulators for documentation.

typedef Iterators::GenericCirculatorT_DEPRECATED< VertexVertexTraitsVertexVertexIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexVertexTraits, true > VertexVertexCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexVertexTraits, false > VertexVertexCCWIter
 Enumerates 1-ring vertices in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< VertexHalfedgeTraitsVertexOHalfedgeIter
 Enumerates outgoing half edges in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexHalfedgeTraits, true > VertexOHalfedgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexHalfedgeTraits, false > VertexOHalfedgeCCWIter
 Enumerates outgoing half edges in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< VertexOppositeHalfedgeTraitsVertexIHalfedgeIter
 Enumerates incoming half edges in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, true > VertexIHalfedgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, false > VertexIHalfedgeCCWIter
 Enumerates incoming half edges in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< VertexFaceTraitsVertexFaceIter
 Enumerates incident faces in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexFaceTraits, true > VertexFaceCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexFaceTraits, false > VertexFaceCCWIter
 Enumerates incident faces in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< VertexEdgeTraitsVertexEdgeIter
 Enumerates incident edges in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexEdgeTraits, true > VertexEdgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< VertexEdgeTraits, false > VertexEdgeCCWIter
 Enumerates incident edges in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraitsHalfedgeLoopIter
 Identical to FaceHalfedgeIter. More...
 
typedef Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > HalfedgeLoopCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > HalfedgeLoopCCWIter
 Identical to FaceHalfedgeIter. More...
 
typedef VertexVertexIter ConstVertexVertexIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexVertexCWIter ConstVertexVertexCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexVertexCCWIter ConstVertexVertexCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexOHalfedgeIter ConstVertexOHalfedgeIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexIHalfedgeIter ConstVertexIHalfedgeIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexFaceIter ConstVertexFaceIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexFaceCWIter ConstVertexFaceCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexFaceCCWIter ConstVertexFaceCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexEdgeIter ConstVertexEdgeIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexEdgeCWIter ConstVertexEdgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef VertexEdgeCCWIter ConstVertexEdgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< FaceVertexTraitsFaceVertexIter
 Enumerate incident vertices in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceVertexTraits, true > FaceVertexCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceVertexTraits, false > FaceVertexCWIter
 Enumerate incident vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraitsFaceHalfedgeIter
 Enumerate incident half edges in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > FaceHalfedgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > FaceHalfedgeCWIter
 Enumerate incident half edges in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< FaceEdgeTraitsFaceEdgeIter
 Enumerate incident edges in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceEdgeTraits, true > FaceEdgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceEdgeTraits, false > FaceEdgeCWIter
 Enumerate incident edges in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT_DEPRECATED< FaceFaceTraitsFaceFaceIter
 Enumerate adjacent faces in a counter clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceFaceTraits, true > FaceFaceCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef Iterators::GenericCirculatorT< FaceFaceTraits, false > FaceFaceCWIter
 Enumerate adjacent faces in a clockwise fashion.
 
typedef FaceVertexIter ConstFaceVertexIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceVertexCWIter ConstFaceVertexCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceVertexCCWIter ConstFaceVertexCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceHalfedgeIter ConstFaceHalfedgeIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceEdgeIter ConstFaceEdgeIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceEdgeCWIter ConstFaceEdgeCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceEdgeCCWIter ConstFaceEdgeCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceFaceIter ConstFaceFaceIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceFaceCWIter ConstFaceFaceCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef FaceFaceCCWIter ConstFaceFaceCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef HalfedgeLoopIter ConstHalfedgeLoopIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
typedef HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
 Enumerates 1-ring vertices in a clockwise fashion.
 
Typedef Shortcuts

Provided for convenience only

typedef VertexHandle VHandle
 Alias typedef.
 
typedef HalfedgeHandle HHandle
 Alias typedef.
 
typedef EdgeHandle EHandle
 Alias typedef.
 
typedef FaceHandle FHandle
 Alias typedef.
 
typedef VertexIter VIter
 Alias typedef.
 
typedef HalfedgeIter HIter
 Alias typedef.
 
typedef EdgeIter EIter
 Alias typedef.
 
typedef FaceIter FIter
 Alias typedef.
 
typedef ConstVertexIter CVIter
 Alias typedef.
 
typedef ConstHalfedgeIter CHIter
 Alias typedef.
 
typedef ConstEdgeIter CEIter
 Alias typedef.
 
typedef ConstFaceIter CFIter
 Alias typedef.
 
typedef VertexVertexIter VVIter
 Alias typedef.
 
typedef VertexVertexCWIter VVCWIter
 Alias typedef.
 
typedef VertexVertexCCWIter VVCCWIter
 Alias typedef.
 
typedef VertexOHalfedgeIter VOHIter
 Alias typedef.
 
typedef VertexOHalfedgeCWIter VOHCWIter
 Alias typedef.
 
typedef VertexOHalfedgeCCWIter VOHCCWIter
 Alias typedef.
 
typedef VertexIHalfedgeIter VIHIter
 Alias typedef.
 
typedef VertexIHalfedgeCWIter VIHICWter
 Alias typedef.
 
typedef VertexIHalfedgeCCWIter VIHICCWter
 Alias typedef.
 
typedef VertexEdgeIter VEIter
 Alias typedef.
 
typedef VertexEdgeCWIter VECWIter
 Alias typedef.
 
typedef VertexEdgeCCWIter VECCWIter
 Alias typedef.
 
typedef VertexFaceIter VFIter
 Alias typedef.
 
typedef VertexFaceCWIter VFCWIter
 Alias typedef.
 
typedef VertexFaceCCWIter VFCCWIter
 Alias typedef.
 
typedef FaceVertexIter FVIter
 Alias typedef.
 
typedef FaceVertexCWIter FVCWIter
 Alias typedef.
 
typedef FaceVertexCCWIter FVCCWIter
 Alias typedef.
 
typedef FaceHalfedgeIter FHIter
 Alias typedef.
 
typedef FaceHalfedgeCWIter FHCWIter
 Alias typedef.
 
typedef FaceHalfedgeCCWIter FHCWWIter
 Alias typedef.
 
typedef FaceEdgeIter FEIter
 Alias typedef.
 
typedef FaceEdgeCWIter FECWIter
 Alias typedef.
 
typedef FaceEdgeCCWIter FECWWIter
 Alias typedef.
 
typedef FaceFaceIter FFIter
 Alias typedef.
 
typedef ConstVertexVertexIter CVVIter
 Alias typedef.
 
typedef ConstVertexVertexCWIter CVVCWIter
 Alias typedef.
 
typedef ConstVertexVertexCCWIter CVVCCWIter
 Alias typedef.
 
typedef ConstVertexOHalfedgeIter CVOHIter
 Alias typedef.
 
typedef ConstVertexOHalfedgeCWIter CVOHCWIter
 Alias typedef.
 
typedef ConstVertexOHalfedgeCCWIter CVOHCCWIter
 Alias typedef.
 
typedef ConstVertexIHalfedgeIter CVIHIter
 Alias typedef.
 
typedef ConstVertexIHalfedgeCWIter CVIHCWIter
 Alias typedef.
 
typedef ConstVertexIHalfedgeCCWIter CVIHCCWIter
 Alias typedef.
 
typedef ConstVertexEdgeIter CVEIter
 Alias typedef.
 
typedef ConstVertexEdgeCWIter CVECWIter
 Alias typedef.
 
typedef ConstVertexEdgeCCWIter CVECCWIter
 Alias typedef.
 
typedef ConstVertexFaceIter CVFIter
 Alias typedef.
 
typedef ConstVertexFaceCWIter CVFCWIter
 Alias typedef.
 
typedef ConstVertexFaceCCWIter CVFCCWIter
 Alias typedef.
 
typedef ConstFaceVertexIter CFVIter
 Alias typedef.
 
typedef ConstFaceVertexCWIter CFVCWIter
 Alias typedef.
 
typedef ConstFaceVertexCCWIter CFVCCWIter
 Alias typedef.
 
typedef ConstFaceHalfedgeIter CFHIter
 Alias typedef.
 
typedef ConstFaceHalfedgeCWIter CFHCWIter
 Alias typedef.
 
typedef ConstFaceHalfedgeCCWIter CFHCCWIter
 Alias typedef.
 
typedef ConstFaceEdgeIter CFEIter
 Alias typedef.
 
typedef ConstFaceEdgeCWIter CFECWIter
 Alias typedef.
 
typedef ConstFaceEdgeCCWIter CFECCWIter
 Alias typedef.
 
typedef ConstFaceFaceIter CFFIter
 Alias typedef.
 
typedef ConstFaceFaceCWIter CFFCWIter
 Alias typedef.
 
typedef ConstFaceFaceCCWIter CFFCCWIter
 Alias typedef.
 
- Public Types inherited from OpenMesh::ArrayKernel
typedef OpenMesh::VertexHandle VertexHandle
 
typedef OpenMesh::HalfedgeHandle HalfedgeHandle
 
typedef OpenMesh::EdgeHandle EdgeHandle
 
typedef OpenMesh::FaceHandle FaceHandle
 
typedef Attributes::StatusInfo StatusInfo
 
typedef VPropHandleT< StatusInfoVertexStatusPropertyHandle
 
typedef HPropHandleT< StatusInfoHalfedgeStatusPropertyHandle
 
typedef EPropHandleT< StatusInfoEdgeStatusPropertyHandle
 
typedef FPropHandleT< StatusInfoFaceStatusPropertyHandle
 
typedef AutoStatusSetT< VertexHandleVertexStatusSet
 
typedef AutoStatusSetT< EdgeHandleEdgeStatusSet
 
typedef AutoStatusSetT< FaceHandleFaceStatusSet
 
typedef AutoStatusSetT< HalfedgeHandleHalfedgeStatusSet
 
typedef ExtStatusSetT< FaceHandleExtFaceStatusSet
 
typedef ExtStatusSetT< VertexHandleExtVertexStatusSet
 
typedef ExtStatusSetT< EdgeHandleExtEdgeStatusSet
 
typedef ExtStatusSetT< HalfedgeHandleExtHalfedgeStatusSet
 
- Public Types inherited from OpenMesh::BaseKernel
typedef PropertyContainer::iterator prop_iterator
 
typedef PropertyContainer::const_iterator const_prop_iterator
 

Public Member Functions

void assign_connectivity (const PolyConnectivity &_other)
 assign_connectivity() method. More...
 
void adjust_outgoing_halfedge (VertexHandle _vh)
 Adjust outgoing halfedge handle for vertices, so that it is a boundary halfedge whenever possible.
 
SmartHalfedgeHandle find_halfedge (VertexHandle _start_vh, VertexHandle _end_vh) const
 Find halfedge from _vh0 to _vh1. Returns invalid handle if not found.
 
uint valence (VertexHandle _vh) const
 Vertex valence.
 
uint valence (FaceHandle _fh) const
 Face valence.
 
void collapse (HalfedgeHandle _heh)
 Halfedge collapse: collapse the from-vertex of halfedge _heh into its to-vertex. More...
 
bool is_simple_link (EdgeHandle _eh) const
 return true if the this the only link between the faces adjacent to _eh. More...
 
bool is_simply_connected (FaceHandle _fh) const
 return true if _fh shares only one edge with all of its adjacent faces. More...
 
FaceHandle remove_edge (EdgeHandle _eh)
 Removes the edge _eh. More...
 
void reinsert_edge (EdgeHandle _eh)
 Inverse of remove_edge. More...
 
HalfedgeHandle insert_edge (HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh)
 Inserts an edge between to_vh(_prev_heh) and from_vh(_next_heh). More...
 
void split (FaceHandle _fh, VertexHandle _vh)
 Face split (= 1-to-n split). More...
 
void split_copy (FaceHandle _fh, VertexHandle _vh)
 Face split (= 1-to-n split). More...
 
void triangulate (FaceHandle _fh)
 Triangulate the face _fh. More...
 
void triangulate ()
 triangulate the entire mesh
 
void split_edge (EdgeHandle _eh, VertexHandle _vh)
 Edge split (inserts a vertex on the edge only) More...
 
void split_edge_copy (EdgeHandle _eh, VertexHandle _vh)
 Edge split (inserts a vertex on the edge only) More...
 
template<>
PolyConnectivity::ConstVertexRangeSkipping elements () const
 
template<>
PolyConnectivity::ConstVertexRange all_elements () const
 
template<>
PolyConnectivity::ConstHalfedgeRangeSkipping elements () const
 
template<>
PolyConnectivity::ConstHalfedgeRange all_elements () const
 
template<>
PolyConnectivity::ConstEdgeRangeSkipping elements () const
 
template<>
PolyConnectivity::ConstEdgeRange all_elements () const
 
template<>
PolyConnectivity::ConstFaceRangeSkipping elements () const
 
template<>
PolyConnectivity::ConstFaceRange all_elements () const
 
Adding items to a mesh
SmartVertexHandle add_vertex ()
 Add a new vertex.
 
SmartFaceHandle add_face (const std::vector< VertexHandle > &_vhandles)
 Add and connect a new face. More...
 
SmartFaceHandle add_face (const std::vector< SmartVertexHandle > &_vhandles)
 Add and connect a new face. More...
 
SmartFaceHandle add_face (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2)
 Add and connect a new face. More...
 
SmartFaceHandle add_face (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3)
 Add and connect a new face. More...
 
SmartFaceHandle add_face (const VertexHandle *_vhandles, size_t _vhs_size)
 Add and connect a new face. More...
 
Deleting mesh items and other connectivity/topology modifications
bool is_collapse_ok (HalfedgeHandle _he)
 Returns whether collapsing halfedge _heh is ok or would lead to topological inconsistencies. More...
 
void delete_vertex (VertexHandle _vh, bool _delete_isolated_vertices=true)
 Mark vertex and all incident edges and faces deleted. More...
 
void delete_edge (EdgeHandle _eh, bool _delete_isolated_vertices=true)
 Mark edge (two opposite halfedges) and incident faces deleted. More...
 
void delete_face (FaceHandle _fh, bool _delete_isolated_vertices=true)
 Delete face _fh and resulting degenerated empty halfedges as well. More...
 
Begin and end iterators
VertexIter vertices_begin ()
 Begin iterator for vertices.
 
ConstVertexIter vertices_begin () const
 Const begin iterator for vertices.
 
VertexIter vertices_end ()
 End iterator for vertices.
 
ConstVertexIter vertices_end () const
 Const end iterator for vertices.
 
HalfedgeIter halfedges_begin ()
 Begin iterator for halfedges.
 
ConstHalfedgeIter halfedges_begin () const
 Const begin iterator for halfedges.
 
HalfedgeIter halfedges_end ()
 End iterator for halfedges.
 
ConstHalfedgeIter halfedges_end () const
 Const end iterator for halfedges.
 
EdgeIter edges_begin ()
 Begin iterator for edges.
 
ConstEdgeIter edges_begin () const
 Const begin iterator for edges.
 
EdgeIter edges_end ()
 End iterator for edges.
 
ConstEdgeIter edges_end () const
 Const end iterator for edges.
 
FaceIter faces_begin ()
 Begin iterator for faces.
 
ConstFaceIter faces_begin () const
 Const begin iterator for faces.
 
FaceIter faces_end ()
 End iterator for faces.
 
ConstFaceIter faces_end () const
 Const end iterator for faces.
 
Begin for skipping iterators
VertexIter vertices_sbegin ()
 Begin iterator for vertices.
 
ConstVertexIter vertices_sbegin () const
 Const begin iterator for vertices.
 
HalfedgeIter halfedges_sbegin ()
 Begin iterator for halfedges.
 
ConstHalfedgeIter halfedges_sbegin () const
 Const begin iterator for halfedges.
 
EdgeIter edges_sbegin ()
 Begin iterator for edges.
 
ConstEdgeIter edges_sbegin () const
 Const begin iterator for edges.
 
FaceIter faces_sbegin ()
 Begin iterator for faces.
 
ConstFaceIter faces_sbegin () const
 Const begin iterator for faces.
 
Vertex and Face circulators
VertexVertexIter vv_iter (VertexHandle _vh)
 vertex - vertex circulator
 
VertexVertexCWIter vv_cwiter (VertexHandle _vh)
 vertex - vertex circulator cw
 
VertexVertexCCWIter vv_ccwiter (VertexHandle _vh)
 vertex - vertex circulator ccw
 
VertexIHalfedgeIter vih_iter (VertexHandle _vh)
 vertex - incoming halfedge circulator
 
VertexIHalfedgeCWIter vih_cwiter (VertexHandle _vh)
 vertex - incoming halfedge circulator cw
 
VertexIHalfedgeCCWIter vih_ccwiter (VertexHandle _vh)
 vertex - incoming halfedge circulator ccw
 
VertexOHalfedgeIter voh_iter (VertexHandle _vh)
 vertex - outgoing halfedge circulator
 
VertexOHalfedgeCWIter voh_cwiter (VertexHandle _vh)
 vertex - outgoing halfedge circulator cw
 
VertexOHalfedgeCCWIter voh_ccwiter (VertexHandle _vh)
 vertex - outgoing halfedge circulator ccw
 
VertexEdgeIter ve_iter (VertexHandle _vh)
 vertex - edge circulator
 
VertexEdgeCWIter ve_cwiter (VertexHandle _vh)
 vertex - edge circulator cw
 
VertexEdgeCCWIter ve_ccwiter (VertexHandle _vh)
 vertex - edge circulator ccw
 
VertexFaceIter vf_iter (VertexHandle _vh)
 vertex - face circulator
 
VertexFaceCWIter vf_cwiter (VertexHandle _vh)
 vertex - face circulator cw
 
VertexFaceCCWIter vf_ccwiter (VertexHandle _vh)
 vertex - face circulator ccw
 
ConstVertexVertexIter cvv_iter (VertexHandle _vh) const
 const vertex circulator
 
ConstVertexVertexCWIter cvv_cwiter (VertexHandle _vh) const
 const vertex circulator cw
 
ConstVertexVertexCCWIter cvv_ccwiter (VertexHandle _vh) const
 const vertex circulator ccw
 
ConstVertexIHalfedgeIter cvih_iter (VertexHandle _vh) const
 const vertex - incoming halfedge circulator
 
ConstVertexIHalfedgeCWIter cvih_cwiter (VertexHandle _vh) const
 const vertex - incoming halfedge circulator cw
 
ConstVertexIHalfedgeCCWIter cvih_ccwiter (VertexHandle _vh) const
 const vertex - incoming halfedge circulator ccw
 
ConstVertexOHalfedgeIter cvoh_iter (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator
 
ConstVertexOHalfedgeCWIter cvoh_cwiter (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator cw
 
ConstVertexOHalfedgeCCWIter cvoh_ccwiter (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator ccw
 
ConstVertexEdgeIter cve_iter (VertexHandle _vh) const
 const vertex - edge circulator
 
ConstVertexEdgeCWIter cve_cwiter (VertexHandle _vh) const
 const vertex - edge circulator cw
 
ConstVertexEdgeCCWIter cve_ccwiter (VertexHandle _vh) const
 const vertex - edge circulator ccw
 
ConstVertexFaceIter cvf_iter (VertexHandle _vh) const
 const vertex - face circulator
 
ConstVertexFaceCWIter cvf_cwiter (VertexHandle _vh) const
 const vertex - face circulator cw
 
ConstVertexFaceCCWIter cvf_ccwiter (VertexHandle _vh) const
 const vertex - face circulator ccw
 
FaceVertexIter fv_iter (FaceHandle _fh)
 face - vertex circulator
 
FaceVertexCWIter fv_cwiter (FaceHandle _fh)
 face - vertex circulator cw
 
FaceVertexCCWIter fv_ccwiter (FaceHandle _fh)
 face - vertex circulator ccw
 
FaceHalfedgeIter fh_iter (FaceHandle _fh)
 face - halfedge circulator
 
FaceHalfedgeCWIter fh_cwiter (FaceHandle _fh)
 face - halfedge circulator cw
 
FaceHalfedgeCCWIter fh_ccwiter (FaceHandle _fh)
 face - halfedge circulator ccw
 
FaceEdgeIter fe_iter (FaceHandle _fh)
 face - edge circulator
 
FaceEdgeCWIter fe_cwiter (FaceHandle _fh)
 face - edge circulator cw
 
FaceEdgeCCWIter fe_ccwiter (FaceHandle _fh)
 face - edge circulator ccw
 
FaceFaceIter ff_iter (FaceHandle _fh)
 face - face circulator
 
FaceFaceCWIter ff_cwiter (FaceHandle _fh)
 face - face circulator cw
 
FaceFaceCCWIter ff_ccwiter (FaceHandle _fh)
 face - face circulator ccw
 
ConstFaceVertexIter cfv_iter (FaceHandle _fh) const
 const face - vertex circulator
 
ConstFaceVertexCWIter cfv_cwiter (FaceHandle _fh) const
 const face - vertex circulator cw
 
ConstFaceVertexCCWIter cfv_ccwiter (FaceHandle _fh) const
 const face - vertex circulator ccw
 
ConstFaceHalfedgeIter cfh_iter (FaceHandle _fh) const
 const face - halfedge circulator
 
ConstFaceHalfedgeCWIter cfh_cwiter (FaceHandle _fh) const
 const face - halfedge circulator cw
 
ConstFaceHalfedgeCCWIter cfh_ccwiter (FaceHandle _fh) const
 const face - halfedge circulator ccw
 
ConstFaceEdgeIter cfe_iter (FaceHandle _fh) const
 const face - edge circulator
 
ConstFaceEdgeCWIter cfe_cwiter (FaceHandle _fh) const
 const face - edge circulator cw
 
ConstFaceEdgeCCWIter cfe_ccwiter (FaceHandle _fh) const
 const face - edge circulator ccw
 
ConstFaceFaceIter cff_iter (FaceHandle _fh) const
 const face - face circulator
 
ConstFaceFaceCWIter cff_cwiter (FaceHandle _fh) const
 const face - face circulator cw
 
ConstFaceFaceCCWIter cff_ccwiter (FaceHandle _fh) const
 const face - face circulator
 
VertexVertexIter vv_begin (VertexHandle _vh)
 vertex - vertex circulator
 
VertexVertexCWIter vv_cwbegin (VertexHandle _vh)
 vertex - vertex circulator cw
 
VertexVertexCCWIter vv_ccwbegin (VertexHandle _vh)
 vertex - vertex circulator ccw
 
VertexIHalfedgeIter vih_begin (VertexHandle _vh)
 vertex - incoming halfedge circulator
 
VertexIHalfedgeCWIter vih_cwbegin (VertexHandle _vh)
 vertex - incoming halfedge circulator cw
 
VertexIHalfedgeCCWIter vih_ccwbegin (VertexHandle _vh)
 vertex - incoming halfedge circulator ccw
 
VertexOHalfedgeIter voh_begin (VertexHandle _vh)
 vertex - outgoing halfedge circulator
 
VertexOHalfedgeCWIter voh_cwbegin (VertexHandle _vh)
 vertex - outgoing halfedge circulator cw
 
VertexOHalfedgeCCWIter voh_ccwbegin (VertexHandle _vh)
 vertex - outgoing halfedge circulator ccw
 
VertexEdgeIter ve_begin (VertexHandle _vh)
 vertex - edge circulator
 
VertexEdgeCWIter ve_cwbegin (VertexHandle _vh)
 vertex - edge circulator cw
 
VertexEdgeCCWIter ve_ccwbegin (VertexHandle _vh)
 vertex - edge circulator ccw
 
VertexFaceIter vf_begin (VertexHandle _vh)
 vertex - face circulator
 
VertexFaceCWIter vf_cwbegin (VertexHandle _vh)
 vertex - face circulator cw
 
VertexFaceCCWIter vf_ccwbegin (VertexHandle _vh)
 vertex - face circulator ccw
 
ConstVertexVertexIter cvv_begin (VertexHandle _vh) const
 const vertex circulator
 
ConstVertexVertexCWIter cvv_cwbegin (VertexHandle _vh) const
 const vertex circulator cw
 
ConstVertexVertexCCWIter cvv_ccwbegin (VertexHandle _vh) const
 const vertex circulator ccw
 
ConstVertexIHalfedgeIter cvih_begin (VertexHandle _vh) const
 const vertex - incoming halfedge circulator
 
ConstVertexIHalfedgeCWIter cvih_cwbegin (VertexHandle _vh) const
 const vertex - incoming halfedge circulator cw
 
ConstVertexIHalfedgeCCWIter cvih_ccwbegin (VertexHandle _vh) const
 const vertex - incoming halfedge circulator ccw
 
ConstVertexOHalfedgeIter cvoh_begin (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator
 
ConstVertexOHalfedgeCWIter cvoh_cwbegin (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator cw
 
ConstVertexOHalfedgeCCWIter cvoh_ccwbegin (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator ccw
 
ConstVertexEdgeIter cve_begin (VertexHandle _vh) const
 const vertex - edge circulator
 
ConstVertexEdgeCWIter cve_cwbegin (VertexHandle _vh) const
 const vertex - edge circulator cw
 
ConstVertexEdgeCCWIter cve_ccwbegin (VertexHandle _vh) const
 const vertex - edge circulator ccw
 
ConstVertexFaceIter cvf_begin (VertexHandle _vh) const
 const vertex - face circulator
 
ConstVertexFaceCWIter cvf_cwbegin (VertexHandle _vh) const
 const vertex - face circulator cw
 
ConstVertexFaceCCWIter cvf_ccwbegin (VertexHandle _vh) const
 const vertex - face circulator ccw
 
FaceVertexIter fv_begin (FaceHandle _fh)
 face - vertex circulator
 
FaceVertexCWIter fv_cwbegin (FaceHandle _fh)
 face - vertex circulator cw
 
FaceVertexCCWIter fv_ccwbegin (FaceHandle _fh)
 face - vertex circulator ccw
 
FaceHalfedgeIter fh_begin (FaceHandle _fh)
 face - halfedge circulator
 
FaceHalfedgeCWIter fh_cwbegin (FaceHandle _fh)
 face - halfedge circulator cw
 
FaceHalfedgeCCWIter fh_ccwbegin (FaceHandle _fh)
 face - halfedge circulator ccw
 
FaceEdgeIter fe_begin (FaceHandle _fh)
 face - edge circulator
 
FaceEdgeCWIter fe_cwbegin (FaceHandle _fh)
 face - edge circulator cw
 
FaceEdgeCCWIter fe_ccwbegin (FaceHandle _fh)
 face - edge circulator ccw
 
FaceFaceIter ff_begin (FaceHandle _fh)
 face - face circulator
 
FaceFaceCWIter ff_cwbegin (FaceHandle _fh)
 face - face circulator cw
 
FaceFaceCCWIter ff_ccwbegin (FaceHandle _fh)
 face - face circulator ccw
 
HalfedgeLoopIter hl_begin (HalfedgeHandle _heh)
 halfedge circulator
 
HalfedgeLoopCWIter hl_cwbegin (HalfedgeHandle _heh)
 halfedge circulator
 
HalfedgeLoopCCWIter hl_ccwbegin (HalfedgeHandle _heh)
 halfedge circulator ccw
 
ConstFaceVertexIter cfv_begin (FaceHandle _fh) const
 const face - vertex circulator
 
ConstFaceVertexCWIter cfv_cwbegin (FaceHandle _fh) const
 const face - vertex circulator cw
 
ConstFaceVertexCCWIter cfv_ccwbegin (FaceHandle _fh) const
 const face - vertex circulator ccw
 
ConstFaceHalfedgeIter cfh_begin (FaceHandle _fh) const
 const face - halfedge circulator
 
ConstFaceHalfedgeCWIter cfh_cwbegin (FaceHandle _fh) const
 const face - halfedge circulator cw
 
ConstFaceHalfedgeCCWIter cfh_ccwbegin (FaceHandle _fh) const
 const face - halfedge circulator ccw
 
ConstFaceEdgeIter cfe_begin (FaceHandle _fh) const
 const face - edge circulator
 
ConstFaceEdgeCWIter cfe_cwbegin (FaceHandle _fh) const
 const face - edge circulator cw
 
ConstFaceEdgeCCWIter cfe_ccwbegin (FaceHandle _fh) const
 const face - edge circulator ccw
 
ConstFaceFaceIter cff_begin (FaceHandle _fh) const
 const face - face circulator
 
ConstFaceFaceCWIter cff_cwbegin (FaceHandle _fh) const
 const face - face circulator cw
 
ConstFaceFaceCCWIter cff_ccwbegin (FaceHandle _fh) const
 const face - face circulator ccw
 
ConstHalfedgeLoopIter chl_begin (HalfedgeHandle _heh) const
 const halfedge circulator
 
ConstHalfedgeLoopCWIter chl_cwbegin (HalfedgeHandle _heh) const
 const halfedge circulator cw
 
ConstHalfedgeLoopCCWIter chl_ccwbegin (HalfedgeHandle _heh) const
 const halfedge circulator ccw
 
VertexVertexIter vv_end (VertexHandle _vh)
 vertex - vertex circulator
 
VertexVertexCWIter vv_cwend (VertexHandle _vh)
 vertex - vertex circulator cw
 
VertexVertexCCWIter vv_ccwend (VertexHandle _vh)
 vertex - vertex circulator ccw
 
VertexIHalfedgeIter vih_end (VertexHandle _vh)
 vertex - incoming halfedge circulator
 
VertexIHalfedgeCWIter vih_cwend (VertexHandle _vh)
 vertex - incoming halfedge circulator cw
 
VertexIHalfedgeCCWIter vih_ccwend (VertexHandle _vh)
 vertex - incoming halfedge circulator ccw
 
VertexOHalfedgeIter voh_end (VertexHandle _vh)
 vertex - outgoing halfedge circulator
 
VertexOHalfedgeCWIter voh_cwend (VertexHandle _vh)
 vertex - outgoing halfedge circulator cw
 
VertexOHalfedgeCCWIter voh_ccwend (VertexHandle _vh)
 vertex - outgoing halfedge circulator ccw
 
VertexEdgeIter ve_end (VertexHandle _vh)
 vertex - edge circulator
 
VertexEdgeCWIter ve_cwend (VertexHandle _vh)
 vertex - edge circulator cw
 
VertexEdgeCCWIter ve_ccwend (VertexHandle _vh)
 vertex - edge circulator ccw
 
VertexFaceIter vf_end (VertexHandle _vh)
 vertex - face circulator
 
VertexFaceCWIter vf_cwend (VertexHandle _vh)
 vertex - face circulator cw
 
VertexFaceCCWIter vf_ccwend (VertexHandle _vh)
 vertex - face circulator ccw
 
ConstVertexVertexIter cvv_end (VertexHandle _vh) const
 const vertex circulator
 
ConstVertexVertexCWIter cvv_cwend (VertexHandle _vh) const
 const vertex circulator cw
 
ConstVertexVertexCCWIter cvv_ccwend (VertexHandle _vh) const
 const vertex circulator ccw
 
ConstVertexIHalfedgeIter cvih_end (VertexHandle _vh) const
 const vertex - incoming halfedge circulator
 
ConstVertexIHalfedgeCWIter cvih_cwend (VertexHandle _vh) const
 const vertex - incoming halfedge circulator cw
 
ConstVertexIHalfedgeCCWIter cvih_ccwend (VertexHandle _vh) const
 const vertex - incoming halfedge circulator ccw
 
ConstVertexOHalfedgeIter cvoh_end (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator
 
ConstVertexOHalfedgeCWIter cvoh_cwend (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator cw
 
ConstVertexOHalfedgeCCWIter cvoh_ccwend (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator ccw
 
ConstVertexEdgeIter cve_end (VertexHandle _vh) const
 const vertex - edge circulator
 
ConstVertexEdgeCWIter cve_cwend (VertexHandle _vh) const
 const vertex - edge circulator cw
 
ConstVertexEdgeCCWIter cve_ccwend (VertexHandle _vh) const
 const vertex - edge circulator ccw
 
ConstVertexFaceIter cvf_end (VertexHandle _vh) const
 const vertex - face circulator
 
ConstVertexFaceCWIter cvf_cwend (VertexHandle _vh) const
 const vertex - face circulator cw
 
ConstVertexFaceCCWIter cvf_ccwend (VertexHandle _vh) const
 const vertex - face circulator ccw
 
FaceVertexIter fv_end (FaceHandle _fh)
 face - vertex circulator
 
FaceVertexCWIter fv_cwend (FaceHandle _fh)
 face - vertex circulator cw
 
FaceVertexCCWIter fv_ccwend (FaceHandle _fh)
 face - vertex circulator ccw
 
FaceHalfedgeIter fh_end (FaceHandle _fh)
 face - halfedge circulator
 
FaceHalfedgeCWIter fh_cwend (FaceHandle _fh)
 face - halfedge circulator cw
 
FaceHalfedgeCCWIter fh_ccwend (FaceHandle _fh)
 face - halfedge circulator ccw
 
FaceEdgeIter fe_end (FaceHandle _fh)
 face - edge circulator
 
FaceEdgeCWIter fe_cwend (FaceHandle _fh)
 face - edge circulator cw
 
FaceEdgeCCWIter fe_ccwend (FaceHandle _fh)
 face - edge circulator ccw
 
FaceFaceIter ff_end (FaceHandle _fh)
 face - face circulator
 
FaceFaceCWIter ff_cwend (FaceHandle _fh)
 face - face circulator cw
 
FaceFaceCCWIter ff_ccwend (FaceHandle _fh)
 face - face circulator ccw
 
HalfedgeLoopIter hl_end (HalfedgeHandle _heh)
 face - face circulator
 
HalfedgeLoopCWIter hl_cwend (HalfedgeHandle _heh)
 face - face circulator cw
 
HalfedgeLoopCCWIter hl_ccwend (HalfedgeHandle _heh)
 face - face circulator ccw
 
ConstFaceVertexIter cfv_end (FaceHandle _fh) const
 const face - vertex circulator
 
ConstFaceVertexCWIter cfv_cwend (FaceHandle _fh) const
 const face - vertex circulator cw
 
ConstFaceVertexCCWIter cfv_ccwend (FaceHandle _fh) const
 const face - vertex circulator ccw
 
ConstFaceHalfedgeIter cfh_end (FaceHandle _fh) const
 const face - halfedge circulator
 
ConstFaceHalfedgeCWIter cfh_cwend (FaceHandle _fh) const
 const face - halfedge circulator cw
 
ConstFaceHalfedgeCCWIter cfh_ccwend (FaceHandle _fh) const
 const face - halfedge circulator ccw
 
ConstFaceEdgeIter cfe_end (FaceHandle _fh) const
 const face - edge circulator
 
ConstFaceEdgeCWIter cfe_cwend (FaceHandle _fh) const
 const face - edge circulator cw
 
ConstFaceEdgeCCWIter cfe_ccwend (FaceHandle _fh) const
 const face - edge circulator ccw
 
ConstFaceFaceIter cff_end (FaceHandle _fh) const
 const face - face circulator
 
ConstFaceFaceCWIter cff_cwend (FaceHandle _fh) const
 const face - face circulator
 
ConstFaceFaceCCWIter cff_ccwend (FaceHandle _fh) const
 const face - face circulator
 
ConstHalfedgeLoopIter chl_end (HalfedgeHandle _heh) const
 const face - face circulator
 
ConstHalfedgeLoopCWIter chl_cwend (HalfedgeHandle _heh) const
 const face - face circulator cw
 
ConstHalfedgeLoopCCWIter chl_ccwend (HalfedgeHandle _heh) const
 const face - face circulator ccw
 
Boundary and manifold tests
bool is_boundary (HalfedgeHandle _heh) const
 Check if the halfedge is at the boundary. More...
 
bool is_boundary (EdgeHandle _eh) const
 Is the edge a boundary edge? More...
 
bool is_boundary (VertexHandle _vh) const
 Is vertex _vh a boundary vertex ? More...
 
bool is_boundary (FaceHandle _fh, bool _check_vertex=false) const
 Check if face is at the boundary. More...
 
bool is_manifold (VertexHandle _vh) const
 Is (the mesh at) vertex _vh two-manifold ? More...
 
Generic handle derefertiation.

Calls the respective vertex(), halfedge(), edge(), face() method of the mesh kernel.

const Vertex & deref (VertexHandle _h) const
 Get item from handle.
 
Vertex & deref (VertexHandle _h)
 Get item from handle.
 
const Halfedge & deref (HalfedgeHandle _h) const
 Get item from handle.
 
Halfedge & deref (HalfedgeHandle _h)
 Get item from handle.
 
const Edge & deref (EdgeHandle _h) const
 Get item from handle.
 
Edge & deref (EdgeHandle _h)
 Get item from handle.
 
const Face & deref (FaceHandle _h) const
 Get item from handle.
 
Face & deref (FaceHandle _h)
 Get item from handle.
 
- Public Member Functions inherited from OpenMesh::ArrayKernel
void assign_connectivity (const ArrayKernel &_other)
 ArrayKernel uses the default copy constructor and assignment operator, which means that the connectivity and all properties are copied, including reference counters, allocated bit status masks, etc. More...
 
VertexHandle handle (const Vertex &_v) const
 
HalfedgeHandle handle (const Halfedge &_he) const
 
EdgeHandle handle (const Edge &_e) const
 
FaceHandle handle (const Face &_f) const
 
bool is_valid_handle (VertexHandle _vh) const
 checks handle validity - useful for debugging
 
bool is_valid_handle (HalfedgeHandle _heh) const
 checks handle validity - useful for debugging
 
bool is_valid_handle (EdgeHandle _eh) const
 checks handle validity - useful for debugging
 
bool is_valid_handle (FaceHandle _fh) const
 checks handle validity - useful for debugging
 
const Vertex & vertex (VertexHandle _vh) const
 
Vertex & vertex (VertexHandle _vh)
 
const Halfedge & halfedge (HalfedgeHandle _heh) const
 
Halfedge & halfedge (HalfedgeHandle _heh)
 
const Edge & edge (EdgeHandle _eh) const
 
Edge & edge (EdgeHandle _eh)
 
const Face & face (FaceHandle _fh) const
 
Face & face (FaceHandle _fh)
 
VertexHandle vertex_handle (unsigned int _i) const
 
HalfedgeHandle halfedge_handle (unsigned int _i) const
 
EdgeHandle edge_handle (unsigned int _i) const
 
FaceHandle face_handle (unsigned int _i) const
 
VertexHandle new_vertex ()
 Add a new vertex. More...
 
VertexHandle new_vertex_dirty ()
 Same as new_vertex() but uses PropertyContainer::resize_if_smaller() to resize the vertex property container. More...
 
HalfedgeHandle new_edge (VertexHandle _start_vh, VertexHandle _end_vh)
 
FaceHandle new_face ()
 
FaceHandle new_face (const Face &_f)
 
void resize (size_t _n_vertices, size_t _n_edges, size_t _n_faces)
 
void reserve (size_t _n_vertices, size_t _n_edges, size_t _n_faces)
 
void garbage_collection (bool _v=true, bool _e=true, bool _f=true)
 garbage collection More...
 
template<typename std_API_Container_VHandlePointer , typename std_API_Container_HHandlePointer , typename std_API_Container_FHandlePointer >
void garbage_collection (std_API_Container_VHandlePointer &vh_to_update, std_API_Container_HHandlePointer &hh_to_update, std_API_Container_FHandlePointer &fh_to_update, bool _v=true, bool _e=true, bool _f=true)
 garbage collection with handle tracking More...
 
void clear ()
 Does the same as clean() and in addition erases all properties.
 
void clean ()
 Remove all vertices, edges and faces and deallocates their memory. More...
 
void clean_keep_reservation ()
 Remove all vertices, edges and faces but keep memory allocated. More...
 
size_t n_vertices () const override
 
size_t n_halfedges () const override
 
size_t n_edges () const override
 
size_t n_faces () const override
 
bool vertices_empty () const
 
bool halfedges_empty () const
 
bool edges_empty () const
 
bool faces_empty () const
 
HalfedgeHandle halfedge_handle (VertexHandle _vh) const
 
void set_halfedge_handle (VertexHandle _vh, HalfedgeHandle _heh)
 
bool is_isolated (VertexHandle _vh) const
 
void set_isolated (VertexHandle _vh)
 
unsigned int delete_isolated_vertices ()
 
VertexHandle to_vertex_handle (HalfedgeHandle _heh) const
 
VertexHandle from_vertex_handle (HalfedgeHandle _heh) const
 
void set_vertex_handle (HalfedgeHandle _heh, VertexHandle _vh)
 
FaceHandle face_handle (HalfedgeHandle _heh) const
 
void set_face_handle (HalfedgeHandle _heh, FaceHandle _fh)
 
void set_boundary (HalfedgeHandle _heh)
 
bool is_boundary (HalfedgeHandle _heh) const
 Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
 
HalfedgeHandle next_halfedge_handle (HalfedgeHandle _heh) const
 
void set_next_halfedge_handle (HalfedgeHandle _heh, HalfedgeHandle _nheh)
 
void set_prev_halfedge_handle (HalfedgeHandle _heh, HalfedgeHandle _pheh)
 
void set_prev_halfedge_handle (HalfedgeHandle _heh, HalfedgeHandle _pheh, GenProg::TrueType)
 
void set_prev_halfedge_handle (HalfedgeHandle, HalfedgeHandle, GenProg::FalseType)
 
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh) const
 
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh, GenProg::TrueType) const
 
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh, GenProg::FalseType) const
 
HalfedgeHandle opposite_halfedge_handle (HalfedgeHandle _heh) const
 
HalfedgeHandle ccw_rotated_halfedge_handle (HalfedgeHandle _heh) const
 
HalfedgeHandle cw_rotated_halfedge_handle (HalfedgeHandle _heh) const
 
HalfedgeHandle halfedge_handle (EdgeHandle _eh, unsigned int _i) const
 
EdgeHandle edge_handle (HalfedgeHandle _heh) const
 
HalfedgeHandle halfedge_handle (FaceHandle _fh) const
 
void set_halfedge_handle (FaceHandle _fh, HalfedgeHandle _heh)
 
const StatusInfostatus (VertexHandle _vh) const
 Status Query API.
 
StatusInfostatus (VertexHandle _vh)
 
void reset_status ()
 Reinitializes the status of all vertices using the StatusInfo default constructor, i.e. More...
 
const StatusInfostatus (HalfedgeHandle _hh) const
 
StatusInfostatus (HalfedgeHandle _hh)
 
const StatusInfostatus (EdgeHandle _eh) const
 
StatusInfostatus (EdgeHandle _eh)
 
const StatusInfostatus (FaceHandle _fh) const
 
StatusInfostatus (FaceHandle _fh)
 
bool has_vertex_status () const
 
bool has_halfedge_status () const
 
bool has_edge_status () const
 
bool has_face_status () const
 
VertexStatusPropertyHandle vertex_status_pph () const
 
HalfedgeStatusPropertyHandle halfedge_status_pph () const
 
EdgeStatusPropertyHandle edge_status_pph () const
 
FaceStatusPropertyHandle face_status_pph () const
 
VertexStatusPropertyHandle status_pph (VertexHandle) const
 status property by handle
 
HalfedgeStatusPropertyHandle status_pph (HalfedgeHandle) const
 
EdgeStatusPropertyHandle status_pph (EdgeHandle) const
 
FaceStatusPropertyHandle status_pph (FaceHandle) const
 
void request_vertex_status ()
 Status Request API.
 
void request_halfedge_status ()
 
void request_edge_status ()
 
void request_face_status ()
 
void release_vertex_status ()
 Status Release API.
 
void release_halfedge_status ()
 
void release_edge_status ()
 
void release_face_status ()
 
- Public Member Functions inherited from OpenMesh::BaseKernel
template<class T >
void copy_property (VPropHandleT< T > &_ph, VertexHandle _vh_from, VertexHandle _vh_to)
 You should not use this function directly. More...
 
template<class T >
void copy_property (HPropHandleT< T > _ph, HalfedgeHandle _hh_from, HalfedgeHandle _hh_to)
 You should not use this function directly. More...
 
template<class T >
void copy_property (EPropHandleT< T > _ph, EdgeHandle _eh_from, EdgeHandle _eh_to)
 You should not use this function directly. More...
 
template<class T >
void copy_property (FPropHandleT< T > _ph, FaceHandle _fh_from, FaceHandle _fh_to)
 You should not use this function directly. More...
 
void copy_all_properties (VertexHandle _vh_from, VertexHandle _vh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type) More...
 
void copy_all_properties (HalfedgeHandle _hh_from, HalfedgeHandle _hh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type) More...
 
void copy_all_properties (EdgeHandle _eh_from, EdgeHandle _eh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type) More...
 
void copy_all_properties (FaceHandle _fh_from, FaceHandle _fh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type) More...
 
void copy_all_kernel_properties (const BaseKernel &_other)
 copy_all_kernel_properties uses the = operator to copy all properties from a given other BaseKernel. More...
 
size_t n_vprops (void) const
 
size_t n_eprops (void) const
 
size_t n_hprops (void) const
 
size_t n_fprops (void) const
 
size_t n_mprops (void) const
 
BaseProperty_get_vprop (const std::string &_name)
 
BaseProperty_get_eprop (const std::string &_name)
 
BaseProperty_get_hprop (const std::string &_name)
 
BaseProperty_get_fprop (const std::string &_name)
 
BaseProperty_get_mprop (const std::string &_name)
 
const BaseProperty_get_vprop (const std::string &_name) const
 
const BaseProperty_get_eprop (const std::string &_name) const
 
const BaseProperty_get_hprop (const std::string &_name) const
 
const BaseProperty_get_fprop (const std::string &_name) const
 
const BaseProperty_get_mprop (const std::string &_name) const
 
BaseProperty_vprop (size_t _idx)
 
BaseProperty_eprop (size_t _idx)
 
BaseProperty_hprop (size_t _idx)
 
BaseProperty_fprop (size_t _idx)
 
BaseProperty_mprop (size_t _idx)
 
const BaseProperty_vprop (size_t _idx) const
 
const BaseProperty_eprop (size_t _idx) const
 
const BaseProperty_hprop (size_t _idx) const
 
const BaseProperty_fprop (size_t _idx) const
 
const BaseProperty_mprop (size_t _idx) const
 
size_t _add_vprop (BaseProperty *_bp)
 
size_t _add_eprop (BaseProperty *_bp)
 
size_t _add_hprop (BaseProperty *_bp)
 
size_t _add_fprop (BaseProperty *_bp)
 
size_t _add_mprop (BaseProperty *_bp)
 
template<typename HandleT >
size_t n_elements () const
 
void property_stats () const
 
void property_stats (std::ostream &_ostr) const
 
void vprop_stats (std::string &_string) const
 
void hprop_stats (std::string &_string) const
 
void eprop_stats (std::string &_string) const
 
void fprop_stats (std::string &_string) const
 
void mprop_stats (std::string &_string) const
 
void vprop_stats () const
 
void hprop_stats () const
 
void eprop_stats () const
 
void fprop_stats () const
 
void mprop_stats () const
 
void vprop_stats (std::ostream &_ostr) const
 
void hprop_stats (std::ostream &_ostr) const
 
void eprop_stats (std::ostream &_ostr) const
 
void fprop_stats (std::ostream &_ostr) const
 
void mprop_stats (std::ostream &_ostr) const
 
prop_iterator vprops_begin ()
 
prop_iterator vprops_end ()
 
const_prop_iterator vprops_begin () const
 
const_prop_iterator vprops_end () const
 
prop_iterator eprops_begin ()
 
prop_iterator eprops_end ()
 
const_prop_iterator eprops_begin () const
 
const_prop_iterator eprops_end () const
 
prop_iterator hprops_begin ()
 
prop_iterator hprops_end ()
 
const_prop_iterator hprops_begin () const
 
const_prop_iterator hprops_end () const
 
prop_iterator fprops_begin ()
 
prop_iterator fprops_end ()
 
const_prop_iterator fprops_begin () const
 
const_prop_iterator fprops_end () const
 
prop_iterator mprops_begin ()
 
prop_iterator mprops_end ()
 
const_prop_iterator mprops_begin () const
 
const_prop_iterator mprops_end () const
 
template<>
size_t n_elements () const
 
template<>
size_t n_elements () const
 
template<>
size_t n_elements () const
 
template<>
size_t n_elements () const
 
template<class T >
void add_property (VPropHandleT< T > &_ph, const std::string &_name="<vprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>")
 You should not use this function directly. More...
 
template<typename T >
void remove_property (VPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (HPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (EPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (FPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (MPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
PropertyT< T > & property (VPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (VPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & property (HPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (HPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & property (EPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (EPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & property (FPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (FPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & mproperty (MPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & mproperty (MPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
VPropHandleT< T >::reference property (VPropHandleT< T > _ph, VertexHandle _vh)
 You should not use this function directly. More...
 
template<class T >
VPropHandleT< T >::const_reference property (VPropHandleT< T > _ph, VertexHandle _vh) const
 You should not use this function directly. More...
 
template<class T >
HPropHandleT< T >::reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh)
 You should not use this function directly. More...
 
template<class T >
HPropHandleT< T >::const_reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const
 You should not use this function directly. More...
 
template<class T >
EPropHandleT< T >::reference property (EPropHandleT< T > _ph, EdgeHandle _eh)
 You should not use this function directly. More...
 
template<class T >
EPropHandleT< T >::const_reference property (EPropHandleT< T > _ph, EdgeHandle _eh) const
 You should not use this function directly. More...
 
template<class T >
FPropHandleT< T >::reference property (FPropHandleT< T > _ph, FaceHandle _fh)
 You should not use this function directly. More...
 
template<class T >
FPropHandleT< T >::const_reference property (FPropHandleT< T > _ph, FaceHandle _fh) const
 You should not use this function directly. More...
 
template<class T >
MPropHandleT< T >::reference property (MPropHandleT< T > _ph)
 You should not use this function directly. More...
 
template<class T >
MPropHandleT< T >::const_reference property (MPropHandleT< T > _ph) const
 You should not use this function directly. More...
 

Static Public Member Functions

static bool is_triangles ()
 
- Static Public Member Functions inherited from OpenMesh::ArrayKernel
static HalfedgeHandle s_halfedge_handle (EdgeHandle _eh, unsigned int _i)
 
static EdgeHandle s_edge_handle (HalfedgeHandle _heh)
 

Static Public Attributes

Mesh Handles
static const VertexHandle InvalidVertexHandle
 Invalid handle.
 
static const HalfedgeHandle InvalidHalfedgeHandle
 Invalid handle.
 
static const EdgeHandle InvalidEdgeHandle
 Invalid handle.
 
static const FaceHandle InvalidFaceHandle
 Invalid handle.
 

Protected Member Functions

void collapse_edge (HalfedgeHandle _hh)
 Helper for halfedge collapse.
 
void collapse_loop (HalfedgeHandle _hh)
 Helper for halfedge collapse.
 
- Protected Member Functions inherited from OpenMesh::BaseKernel
BaseProperty_vprop (BaseHandle _h)
 
BaseProperty_eprop (BaseHandle _h)
 
BaseProperty_hprop (BaseHandle _h)
 
BaseProperty_fprop (BaseHandle _h)
 
BaseProperty_mprop (BaseHandle _h)
 
const BaseProperty_vprop (BaseHandle _h) const
 
const BaseProperty_eprop (BaseHandle _h) const
 
const BaseProperty_hprop (BaseHandle _h) const
 
const BaseProperty_fprop (BaseHandle _h) const
 
const BaseProperty_mprop (BaseHandle _h) const
 
void vprops_reserve (size_t _n) const
 Reserves space for _n elements in all vertex property vectors.
 
void vprops_resize (size_t _n) const
 Resizes all vertex property vectors to the specified size.
 
void vprops_resize_if_smaller (size_t _n) const
 Same as vprops_resize() but ignores vertex property vectors that have a size larger than _n. More...
 
void vprops_clear ()
 
void vprops_swap (unsigned int _i0, unsigned int _i1) const
 
void hprops_reserve (size_t _n) const
 
void hprops_resize (size_t _n) const
 
void hprops_clear ()
 
void hprops_swap (unsigned int _i0, unsigned int _i1) const
 
void eprops_reserve (size_t _n) const
 
void eprops_resize (size_t _n) const
 
void eprops_clear ()
 
void eprops_swap (unsigned int _i0, unsigned int _i1) const
 
void fprops_reserve (size_t _n) const
 
void fprops_resize (size_t _n) const
 
void fprops_clear ()
 
void fprops_swap (unsigned int _i0, unsigned int _i1) const
 
void mprops_resize (size_t _n) const
 
void mprops_clear ()
 

Navigation with smart handles to allow usage of old-style navigation with smart handles

SmartHalfedgeHandle next_halfedge_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle prev_halfedge_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle opposite_halfedge_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle ccw_rotated_halfedge_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle cw_rotated_halfedge_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle halfedge_handle (SmartEdgeHandle _eh, unsigned int _i) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle halfedge_handle (SmartFaceHandle _fh) const
 returns the face handle of the opposite halfedge
 
SmartHalfedgeHandle halfedge_handle (SmartVertexHandle _vh) const
 returns the face handle of the opposite halfedge
 
SmartEdgeHandle edge_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartFaceHandle face_handle (SmartHalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
SmartFaceHandle opposite_face_handle (HalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
static SmartHalfedgeHandle s_halfedge_handle (SmartEdgeHandle _eh, unsigned int _i)
 returns the face handle of the opposite halfedge
 
static SmartEdgeHandle s_edge_handle (SmartHalfedgeHandle _heh)
 returns the face handle of the opposite halfedge
 

Range based iterators and circulators

typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > > ConstVertexRange
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > > ConstVertexRangeSkipping
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRange
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRangeSkipping
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > > ConstEdgeRange
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > > ConstEdgeRangeSkipping
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > > ConstFaceRange
 
typedef EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > > ConstFaceRangeSkipping
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > > ConstVertexVertexRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > > ConstVertexIHalfedgeRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > > ConstVertexOHalfedgeRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > > ConstVertexEdgeRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > > ConstVertexFaceRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > > ConstFaceVertexRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > > ConstFaceHalfedgeRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > > ConstFaceEdgeRange
 
typedef CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > > ConstFaceFaceRange
 
ConstVertexRangeSkipping vertices () const
 
ConstVertexRange all_vertices () const
 
ConstHalfedgeRangeSkipping halfedges () const
 
ConstHalfedgeRange all_halfedges () const
 
ConstEdgeRangeSkipping edges () const
 
ConstEdgeRange all_edges () const
 
ConstFaceRangeSkipping faces () const
 
ConstFaceRange all_faces () const
 
template<typename HandleType >
ElementRange< HandleType >::RangeSkipping elements () const
 
template<typename HandleType >
ElementRange< HandleType >::Range all_elements () const
 
ConstVertexVertexRange vv_range (VertexHandle _vh) const
 
ConstVertexIHalfedgeRange vih_range (VertexHandle _vh) const
 
ConstVertexOHalfedgeRange voh_range (VertexHandle _vh) const
 
ConstVertexEdgeRange ve_range (VertexHandle _vh) const
 
ConstVertexFaceRange vf_range (VertexHandle _vh) const
 
ConstFaceVertexRange fv_range (FaceHandle _fh) const
 
ConstFaceHalfedgeRange fh_range (FaceHandle _fh) const
 
ConstFaceEdgeRange fe_range (FaceHandle _fh) const
 
ConstFaceFaceRange ff_range (FaceHandle _fh) const
 

Additional Inherited Members

- Protected Attributes inherited from OpenMesh::ArrayKernel
VertexStatusPropertyHandle vertex_status_
 
HalfedgeStatusPropertyHandle halfedge_status_
 
EdgeStatusPropertyHandle edge_status_
 
FaceStatusPropertyHandle face_status_
 
unsigned int refcount_vstatus_
 
unsigned int refcount_hstatus_
 
unsigned int refcount_estatus_
 
unsigned int refcount_fstatus_
 

Detailed Description

Connectivity Class for polygonal meshes.

Member Typedef Documentation

◆ ConstEdgeRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstEdgeRangeSkipping

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstFaceEdgeRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstFaceFaceRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstFaceHalfedgeRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstFaceRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstFaceRangeSkipping

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstFaceVertexRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstHalfedgeRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstHalfedgeRangeSkipping

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstVertexEdgeRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstVertexFaceRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstVertexIHalfedgeRange

◆ ConstVertexOHalfedgeRange

◆ ConstVertexRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstVertexRangeSkipping

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ ConstVertexVertexRange

Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ HalfedgeLoopCCWIter

◆ HalfedgeLoopIter

Member Function Documentation

◆ add_face() [1/5]

SmartFaceHandle OpenMesh::PolyConnectivity::add_face ( const std::vector< VertexHandle > &  _vhandles)

Add and connect a new face.

Create a new face consisting of the vertices provided by the vertex handle vector. (The vertices have to be already added to the mesh by add_vertex)

Parameters
_vhandlessorted list of vertex handles (also defines order in which the vertices are added to the face)

◆ add_face() [2/5]

SmartFaceHandle OpenMesh::PolyConnectivity::add_face ( const std::vector< SmartVertexHandle > &  _vhandles)

Add and connect a new face.

Create a new face consisting of the vertices provided by the vertex handle vector. (The vertices have to be already added to the mesh by add_vertex)

Parameters
_vhandlessorted list of vertex handles (also defines order in which the vertices are added to the face)

◆ add_face() [3/5]

SmartFaceHandle OpenMesh::PolyConnectivity::add_face ( VertexHandle  _vh0,
VertexHandle  _vh1,
VertexHandle  _vh2 
)

Add and connect a new face.

Create a new face consisting of three vertices provided by the handles. (The vertices have to be already added to the mesh by add_vertex)

Parameters
_vh0First vertex handle
_vh1Second vertex handle
_vh2Third vertex handle

◆ add_face() [4/5]

SmartFaceHandle OpenMesh::PolyConnectivity::add_face ( VertexHandle  _vh0,
VertexHandle  _vh1,
VertexHandle  _vh2,
VertexHandle  _vh3 
)

Add and connect a new face.

Create a new face consisting of four vertices provided by the handles. (The vertices have to be already added to the mesh by add_vertex)

Parameters
_vh0First vertex handle
_vh1Second vertex handle
_vh2Third vertex handle
_vh3Fourth vertex handle

◆ add_face() [5/5]

SmartFaceHandle OpenMesh::PolyConnectivity::add_face ( const VertexHandle _vhandles,
size_t  _vhs_size 
)

Add and connect a new face.

Create a new face consisting of vertices provided by a handle array. (The vertices have to be already added to the mesh by add_vertex)

Parameters
_vhandlespointer to a sorted list of vertex handles (also defines order in which the vertices are added to the face)
_vhs_sizenumber of vertex handles in the array

◆ all_edges()

PolyConnectivity::ConstEdgeRange OpenMesh::PolyConnectivity::all_edges ( ) const
inline
Returns
The edges as a range object suitable for C++11 range based for loops. Will include deleted edges.

◆ all_elements()

template<typename HandleType >
ElementRange<HandleType>::Range OpenMesh::PolyConnectivity::all_elements ( ) const
Returns
The elements corresponding to the template type as a range object suitable for C++11 range based for loops. Will include deleted faces.

◆ all_faces()

PolyConnectivity::ConstFaceRange OpenMesh::PolyConnectivity::all_faces ( ) const
inline
Returns
The faces as a range object suitable for C++11 range based for loops. Will include deleted faces.

◆ all_halfedges()

PolyConnectivity::ConstHalfedgeRange OpenMesh::PolyConnectivity::all_halfedges ( ) const
inline
Returns
The halfedges as a range object suitable for C++11 range based for loops. Will include deleted halfedges.

◆ all_vertices()

PolyConnectivity::ConstVertexRange OpenMesh::PolyConnectivity::all_vertices ( ) const
inline
Returns
The vertices as a range object suitable for C++11 range based for loops. Will include deleted vertices.

◆ assign_connectivity()

void OpenMesh::PolyConnectivity::assign_connectivity ( const PolyConnectivity _other)
inline

◆ collapse()

void OpenMesh::PolyConnectivity::collapse ( HalfedgeHandle  _heh)

Halfedge collapse: collapse the from-vertex of halfedge _heh into its to-vertex.

Attention
Needs vertex/edge/face status attribute in order to delete the items that degenerate.
Note
The from vertex is marked as deleted while the to vertex will still exist.
This function does not perform a garbage collection. It only marks degenerate items as deleted.
Attention
A halfedge collapse may lead to topological inconsistencies. Therefore you should check this using is_collapse_ok().

◆ delete_edge()

void OpenMesh::PolyConnectivity::delete_edge ( EdgeHandle  _eh,
bool  _delete_isolated_vertices = true 
)

Mark edge (two opposite halfedges) and incident faces deleted.

Resulting isolated vertices are marked deleted if _delete_isolated_vertices is true. Items marked deleted will be removed by garbageCollection().

Attention
Needs the Attributes::Status attribute for vertices, edges and faces.

◆ delete_face()

void OpenMesh::PolyConnectivity::delete_face ( FaceHandle  _fh,
bool  _delete_isolated_vertices = true 
)

Delete face _fh and resulting degenerated empty halfedges as well.

Resulting isolated vertices will be deleted if _delete_isolated_vertices is true.

Attention
All item will only be marked to be deleted. They will actually be removed by calling garbage_collection().
Needs the Attributes::Status attribute for vertices, edges and faces.

◆ delete_vertex()

void OpenMesh::PolyConnectivity::delete_vertex ( VertexHandle  _vh,
bool  _delete_isolated_vertices = true 
)

Mark vertex and all incident edges and faces deleted.

Items marked deleted will be removed by garbageCollection().

Attention
Needs the Attributes::Status attribute for vertices, edges and faces.

◆ edges()

PolyConnectivity::ConstEdgeRangeSkipping OpenMesh::PolyConnectivity::edges ( ) const
inline
Returns
The edges as a range object suitable for C++11 range based for loops. Will skip deleted edges.

◆ elements()

template<typename HandleType >
ElementRange<HandleType>::RangeSkipping OpenMesh::PolyConnectivity::elements ( ) const
Returns
The elements corresponding to the template type as a range object suitable for C++11 range based for loops. Will skip deleted faces.

◆ faces()

PolyConnectivity::ConstFaceRangeSkipping OpenMesh::PolyConnectivity::faces ( ) const
inline
Returns
The faces as a range object suitable for C++11 range based for loops. Will skip deleted faces.

◆ fe_range()

PolyConnectivity::ConstFaceEdgeRange OpenMesh::PolyConnectivity::fe_range ( FaceHandle  _fh) const
inline
Returns
The edges incident to the specified face as a range object suitable for C++11 range based for loops.

◆ ff_range()

PolyConnectivity::ConstFaceFaceRange OpenMesh::PolyConnectivity::ff_range ( FaceHandle  _fh) const
inline
Returns
The faces adjacent to the specified face as a range object suitable for C++11 range based for loops.

◆ fh_range()

PolyConnectivity::ConstFaceHalfedgeRange OpenMesh::PolyConnectivity::fh_range ( FaceHandle  _fh) const
inline
Returns
The halfedges incident to the specified face as a range object suitable for C++11 range based for loops.

◆ fv_range()

PolyConnectivity::ConstFaceVertexRange OpenMesh::PolyConnectivity::fv_range ( FaceHandle  _fh) const
inline
Returns
The vertices incident to the specified face as a range object suitable for C++11 range based for loops.

◆ halfedges()

PolyConnectivity::ConstHalfedgeRangeSkipping OpenMesh::PolyConnectivity::halfedges ( ) const
inline
Returns
The halfedges as a range object suitable for C++11 range based for loops. Will skip deleted halfedges.

◆ insert_edge()

PolyConnectivity::HalfedgeHandle OpenMesh::PolyConnectivity::insert_edge ( HalfedgeHandle  _prev_heh,
HalfedgeHandle  _next_heh 
)

Inserts an edge between to_vh(_prev_heh) and from_vh(_next_heh).

A new face is created started at heh0 of the inserted edge and its halfedges loop includes both _prev_heh and _next_heh. If an old face existed which includes the argument halfedges, it is split at the new edge. heh0 is returned.

Note
assumes _prev_heh and _next_heh are either boundary or pointed to the same face

◆ is_boundary() [1/4]

bool OpenMesh::PolyConnectivity::is_boundary ( HalfedgeHandle  _heh) const
inline

Check if the halfedge is at the boundary.

The halfedge is at the boundary, if no face is incident to it.

Parameters
_hehHalfedgeHandle to test
Returns
boundary?

◆ is_boundary() [2/4]

bool OpenMesh::PolyConnectivity::is_boundary ( EdgeHandle  _eh) const
inline

Is the edge a boundary edge?

Checks it the edge _eh is a boundary edge, i.e. is one of its halfedges a boundary halfedge.

Parameters
_ehEdge handle to test
Returns
boundary?

◆ is_boundary() [3/4]

bool OpenMesh::PolyConnectivity::is_boundary ( VertexHandle  _vh) const
inline

Is vertex _vh a boundary vertex ?

Checks if the associated halfedge (which would on a boundary be the outside halfedge), is connected to a face. Which is equivalent, if the vertex is at the boundary of the mesh, as OpenMesh will make sure, that if there is a boundary halfedge at the vertex, the halfedge will be the one which is associated to the vertex.

Parameters
_vhVertexHandle to test
Returns
boundary?

◆ is_boundary() [4/4]

bool OpenMesh::PolyConnectivity::is_boundary ( FaceHandle  _fh,
bool  _check_vertex = false 
) const

Check if face is at the boundary.

Is face _fh at boundary, i.e. is one of its edges (or vertices) a boundary edge?

Parameters
_fhCheck this face
_check_vertexIf true, check the corner vertices of the face, too.
Returns
boundary?

◆ is_collapse_ok()

bool OpenMesh::PolyConnectivity::is_collapse_ok ( HalfedgeHandle  _he)

Returns whether collapsing halfedge _heh is ok or would lead to topological inconsistencies.

Attention
This method need the Attributes::Status attribute and changes the tagged bit.

◆ is_manifold()

bool OpenMesh::PolyConnectivity::is_manifold ( VertexHandle  _vh) const

Is (the mesh at) vertex _vh two-manifold ?

The vertex is non-manifold if more than one gap exists, i.e. more than one outgoing boundary halfedge. If (at least) one boundary halfedge exists, the vertex' halfedge must be a boundary halfedge.

Parameters
_vhVertexHandle to test
Returns
manifold?

◆ is_simple_link()

bool OpenMesh::PolyConnectivity::is_simple_link ( EdgeHandle  _eh) const

return true if the this the only link between the faces adjacent to _eh.

_eh is allowed to be boundary, in which case true is returned iff _eh is the only boundary edge of its ajdacent face.

◆ is_simply_connected()

bool OpenMesh::PolyConnectivity::is_simply_connected ( FaceHandle  _fh) const

return true if _fh shares only one edge with all of its adjacent faces.

Boundary is treated as one face, i.e., the function false if _fh has more than one boundary edge.

◆ reinsert_edge()

void OpenMesh::PolyConnectivity::reinsert_edge ( EdgeHandle  _eh)

Inverse of remove_edge.

_eh should be the handle of the edge and the vertex and halfedge handles pointed by edge(_eh) should be valid.

◆ remove_edge()

PolyConnectivity::FaceHandle OpenMesh::PolyConnectivity::remove_edge ( EdgeHandle  _eh)

Removes the edge _eh.

Its adjacent faces are merged. _eh and one of the adjacent faces are set deleted. The handle of the remaining face is returned (InvalidFaceHandle is returned if _eh is a boundary edge).

Precondition
is_simple_link(_eh). This ensures that there are no hole faces or isolated vertices appearing in result of the operation.
Attention
Needs the Attributes::Status attribute for edges and faces.
Note
This function does not perform a garbage collection. It only marks items as deleted.

◆ split()

void OpenMesh::PolyConnectivity::split ( FaceHandle  _fh,
VertexHandle  _vh 
)

Face split (= 1-to-n split).

Split an arbitrary face into triangles by connecting each vertex of fh to vh.

Note
fh will remain valid (it will become one of the triangles)
the halfedge handles of the new triangles will point to the old halfeges
The properties of the new faces and all other new primitives will be undefined!
Parameters
_fhFace handle that should be splitted
_vhVertex handle of the new vertex that will be inserted in the face

◆ split_copy()

void OpenMesh::PolyConnectivity::split_copy ( FaceHandle  _fh,
VertexHandle  _vh 
)

Face split (= 1-to-n split).

Split an arbitrary face into triangles by connecting each vertex of fh to vh.

Note
fh will remain valid (it will become one of the triangles)
the halfedge handles of the new triangles will point to the old halfeges
The properties of the new faces will be adjusted to the properties of the original faces
Properties of the new edges and halfedges will be undefined
Parameters
_fhFace handle that should be splitted
_vhVertex handle of the new vertex that will be inserted in the face

◆ split_edge()

void OpenMesh::PolyConnectivity::split_edge ( EdgeHandle  _eh,
VertexHandle  _vh 
)

Edge split (inserts a vertex on the edge only)

This edge split only splits the edge without introducing new faces! As this is for polygonal meshes, we can have valence 2 vertices here.

Note
The properties of the new edges and halfedges will be undefined!
Parameters
_ehHandle of the edge, that will be splitted
_vhHandle of the vertex that will be inserted at the edge

◆ split_edge_copy()

void OpenMesh::PolyConnectivity::split_edge_copy ( EdgeHandle  _eh,
VertexHandle  _vh 
)

Edge split (inserts a vertex on the edge only)

This edge split only splits the edge without introducing new faces! As this is for polygonal meshes, we can have valence 2 vertices here.

Note
The properties of the new edge will be copied from the splitted edge
Properties of the new halfedges will be undefined
Parameters
_ehHandle of the edge, that will be splitted
_vhHandle of the vertex that will be inserted at the edge

◆ triangulate()

void OpenMesh::PolyConnectivity::triangulate ( FaceHandle  _fh)

Triangulate the face _fh.

Split an arbitrary face into triangles by connecting each vertex of fh after its second to vh.

Note
_fh will remain valid (it will become one of the triangles)
The halfedge handles of the new triangles will point to the old halfedges
Parameters
_fhHandle of the face that should be triangulated

◆ ve_range()

PolyConnectivity::ConstVertexEdgeRange OpenMesh::PolyConnectivity::ve_range ( VertexHandle  _vh) const
inline
Returns
The edges incident to the specified vertex as a range object suitable for C++11 range based for loops.

◆ vertices()

PolyConnectivity::ConstVertexRangeSkipping OpenMesh::PolyConnectivity::vertices ( ) const
inline
Returns
The vertices as a range object suitable for C++11 range based for loops. Will skip deleted vertices.

◆ vf_range()

PolyConnectivity::ConstVertexFaceRange OpenMesh::PolyConnectivity::vf_range ( VertexHandle  _vh) const
inline
Returns
The faces incident to the specified vertex as a range object suitable for C++11 range based for loops.

◆ vih_range()

PolyConnectivity::ConstVertexIHalfedgeRange OpenMesh::PolyConnectivity::vih_range ( VertexHandle  _vh) const
inline
Returns
The incoming halfedges incident to the specified vertex as a range object suitable for C++11 range based for loops.

◆ voh_range()

PolyConnectivity::ConstVertexOHalfedgeRange OpenMesh::PolyConnectivity::voh_range ( VertexHandle  _vh) const
inline
Returns
The outgoing halfedges incident to the specified vertex as a range object suitable for C++11 range based for loops.

◆ vv_range()

PolyConnectivity::ConstVertexVertexRange OpenMesh::PolyConnectivity::vv_range ( VertexHandle  _vh) const
inline
Returns
The vertices adjacent to the specified vertex as a range object suitable for C++11 range based for loops.

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

Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .