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

Connectivity Class for polygonal meshes. More...

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

Inheritance diagram for OpenMesh::PolyConnectivity:
OpenMesh::ArrayKernel OpenMesh::BaseKernel OpenMesh::TriConnectivity

Classes

struct  AddFaceEdgeInfo
 
class  CirculatorRange
 Generic class for iterator ranges. More...
 
class  EntityRange
 Generic class for vertex/halfedge/edge/face ranges. More...
 

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,&This::has_vertex_status,&This::n_vertices > 
VertexIter
 Linear iterator.
 
typedef
Iterators::GenericIteratorT
< This, This::HalfedgeHandle,
ArrayKernel,&This::has_halfedge_status,&This::n_halfedges > 
HalfedgeIter
 Linear iterator.
 
typedef
Iterators::GenericIteratorT
< This, This::EdgeHandle,
ArrayKernel,&This::has_edge_status,&This::n_edges > 
EdgeIter
 Linear iterator.
 
typedef
Iterators::GenericIteratorT
< This, This::FaceHandle,
ArrayKernel,&This::has_face_status,&This::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
< This, This::VertexHandle,
This::VertexHandle,&Iterators::GenericCirculatorBaseT
< This >::toVertexHandle > 
VertexVertexIter
 
typedef
Iterators::GenericCirculatorT
< This, This::VertexHandle,
This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT
< This >::toHalfedgeHandle > 
VertexOHalfedgeIter
 
typedef
Iterators::GenericCirculatorT
< This, This::VertexHandle,
This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT
< This >
::toOppositeHalfedgeHandle > 
VertexIHalfedgeIter
 
typedef
Iterators::GenericCirculatorT
< This, This::VertexHandle,
This::FaceHandle,&Iterators::GenericCirculatorBaseT
< This >::toFaceHandle > 
VertexFaceIter
 
typedef
Iterators::GenericCirculatorT
< This, This::VertexHandle,
This::EdgeHandle,&Iterators::GenericCirculatorBaseT
< This >::toEdgeHandle > 
VertexEdgeIter
 
typedef
Iterators::GenericCirculatorT
< This, This::FaceHandle,
This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT
< This >::toHalfedgeHandle > 
HalfedgeLoopIter
 
typedef VertexVertexIter ConstVertexVertexIter
 
typedef VertexOHalfedgeIter ConstVertexOHalfedgeIter
 
typedef VertexIHalfedgeIter ConstVertexIHalfedgeIter
 
typedef VertexFaceIter ConstVertexFaceIter
 
typedef VertexEdgeIter ConstVertexEdgeIter
 
typedef
Iterators::GenericCirculatorT
< This, This::FaceHandle,
This::VertexHandle,&Iterators::GenericCirculatorBaseT
< This >::toVertexHandle > 
FaceVertexIter
 
typedef
Iterators::GenericCirculatorT
< This, This::FaceHandle,
This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT
< This >::toHalfedgeHandle > 
FaceHalfedgeIter
 
typedef
Iterators::GenericCirculatorT
< This, This::FaceHandle,
This::EdgeHandle,&Iterators::GenericCirculatorBaseT
< This >::toEdgeHandle > 
FaceEdgeIter
 
typedef
Iterators::GenericCirculatorT
< This, This::FaceHandle,
This::FaceHandle,&Iterators::GenericCirculatorBaseT
< This >::toOppositeFaceHandle > 
FaceFaceIter
 
typedef FaceVertexIter ConstFaceVertexIter
 
typedef FaceHalfedgeIter ConstFaceHalfedgeIter
 
typedef FaceEdgeIter ConstFaceEdgeIter
 
typedef FaceFaceIter ConstFaceFaceIter
 
typedef HalfedgeLoopIter ConstHalfedgeLoopIter
 
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 VertexOHalfedgeIter VOHIter
 Alias typedef.
 
typedef VertexIHalfedgeIter VIHIter
 Alias typedef.
 
typedef VertexEdgeIter VEIter
 Alias typedef.
 
typedef VertexFaceIter VFIter
 Alias typedef.
 
typedef FaceVertexIter FVIter
 Alias typedef.
 
typedef FaceHalfedgeIter FHIter
 Alias typedef.
 
typedef FaceEdgeIter FEIter
 Alias typedef.
 
typedef FaceFaceIter FFIter
 Alias typedef.
 
typedef ConstVertexVertexIter CVVIter
 Alias typedef.
 
typedef ConstVertexOHalfedgeIter CVOHIter
 Alias typedef.
 
typedef ConstVertexIHalfedgeIter CVIHIter
 Alias typedef.
 
typedef ConstVertexEdgeIter CVEIter
 Alias typedef.
 
typedef ConstVertexFaceIter CVFIter
 Alias typedef.
 
typedef ConstFaceVertexIter CFVIter
 Alias typedef.
 
typedef ConstFaceHalfedgeIter CFHIter
 Alias typedef.
 
typedef ConstFaceEdgeIter CFEIter
 Alias typedef.
 
typedef ConstFaceFaceIter CFFIter
 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
< VertexHandle
VertexStatusSet
 
typedef AutoStatusSetT
< EdgeHandle
EdgeStatusSet
 
typedef AutoStatusSetT
< FaceHandle
FaceStatusSet
 
typedef AutoStatusSetT
< HalfedgeHandle
HalfedgeStatusSet
 
typedef ExtStatusSetT< FaceHandleExtFaceStatusSet
 
typedef ExtStatusSetT
< VertexHandle
ExtVertexStatusSet
 
typedef ExtStatusSetT< EdgeHandleExtEdgeStatusSet
 
typedef ExtStatusSetT
< HalfedgeHandle
ExtHalfedgeStatusSet
 
- 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)
 
FaceHandle opposite_face_handle (HalfedgeHandle _heh) const
 returns the face handle of the opposite halfedge
 
void adjust_outgoing_halfedge (VertexHandle _vh)
 
HalfedgeHandle 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)
 
bool is_simple_link (EdgeHandle _eh) const
 
bool is_simply_connected (FaceHandle _fh) const
 
FaceHandle remove_edge (EdgeHandle _eh)
 
void reinsert_edge (EdgeHandle _eh)
 
HalfedgeHandle insert_edge (HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh)
 
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)
 
void split_edge_copy (EdgeHandle _eh, VertexHandle _vh)
 
Adding items to a mesh
VertexHandle add_vertex ()
 Add a new vertex.
 
FaceHandle add_face (const std::vector< VertexHandle > &_vhandles)
 Add and connect a new face. More...
 
FaceHandle add_face (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2)
 Add and connect a new face. More...
 
FaceHandle add_face (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3)
 Add and connect a new face. More...
 
FaceHandle 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)
 
void delete_vertex (VertexHandle _vh, bool _delete_isolated_vertices=true)
 
void delete_edge (EdgeHandle _eh, bool _delete_isolated_vertices=true)
 
void delete_face (FaceHandle _fh, bool _delete_isolated_vertices=true)
 
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
 
VertexIHalfedgeIter vih_iter (VertexHandle _vh)
 vertex - incoming halfedge circulator
 
VertexOHalfedgeIter voh_iter (VertexHandle _vh)
 vertex - outgoing halfedge circulator
 
VertexEdgeIter ve_iter (VertexHandle _vh)
 vertex - edge circulator
 
VertexFaceIter vf_iter (VertexHandle _vh)
 vertex - face circulator
 
ConstVertexVertexIter cvv_iter (VertexHandle _vh) const
 const vertex circulator
 
ConstVertexIHalfedgeIter cvih_iter (VertexHandle _vh) const
 const vertex - incoming halfedge circulator
 
ConstVertexOHalfedgeIter cvoh_iter (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator
 
ConstVertexEdgeIter cve_iter (VertexHandle _vh) const
 const vertex - edge circulator
 
ConstVertexFaceIter cvf_iter (VertexHandle _vh) const
 const vertex - face circulator
 
FaceVertexIter fv_iter (FaceHandle _fh)
 face - vertex circulator
 
FaceHalfedgeIter fh_iter (FaceHandle _fh)
 face - halfedge circulator
 
FaceEdgeIter fe_iter (FaceHandle _fh)
 face - edge circulator
 
FaceFaceIter ff_iter (FaceHandle _fh)
 face - face circulator
 
ConstFaceVertexIter cfv_iter (FaceHandle _fh) const
 const face - vertex circulator
 
ConstFaceHalfedgeIter cfh_iter (FaceHandle _fh) const
 const face - halfedge circulator
 
ConstFaceEdgeIter cfe_iter (FaceHandle _fh) const
 const face - edge circulator
 
ConstFaceFaceIter cff_iter (FaceHandle _fh) const
 const face - face circulator
 
VertexVertexIter vv_begin (VertexHandle _vh)
 vertex - vertex circulator
 
VertexIHalfedgeIter vih_begin (VertexHandle _vh)
 vertex - incoming halfedge circulator
 
VertexOHalfedgeIter voh_begin (VertexHandle _vh)
 vertex - outgoing halfedge circulator
 
VertexEdgeIter ve_begin (VertexHandle _vh)
 vertex - edge circulator
 
VertexFaceIter vf_begin (VertexHandle _vh)
 vertex - face circulator
 
ConstVertexVertexIter cvv_begin (VertexHandle _vh) const
 const vertex circulator
 
ConstVertexIHalfedgeIter cvih_begin (VertexHandle _vh) const
 const vertex - incoming halfedge circulator
 
ConstVertexOHalfedgeIter cvoh_begin (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator
 
ConstVertexEdgeIter cve_begin (VertexHandle _vh) const
 const vertex - edge circulator
 
ConstVertexFaceIter cvf_begin (VertexHandle _vh) const
 const vertex - face circulator
 
FaceVertexIter fv_begin (FaceHandle _fh)
 face - vertex circulator
 
FaceHalfedgeIter fh_begin (FaceHandle _fh)
 face - halfedge circulator
 
FaceEdgeIter fe_begin (FaceHandle _fh)
 face - edge circulator
 
FaceFaceIter ff_begin (FaceHandle _fh)
 face - face circulator
 
HalfedgeLoopIter hl_begin (HalfedgeHandle _heh)
 halfedge circulator
 
ConstFaceVertexIter cfv_begin (FaceHandle _fh) const
 const face - vertex circulator
 
ConstFaceHalfedgeIter cfh_begin (FaceHandle _fh) const
 const face - halfedge circulator
 
ConstFaceEdgeIter cfe_begin (FaceHandle _fh) const
 const face - edge circulator
 
ConstFaceFaceIter cff_begin (FaceHandle _fh) const
 const face - face circulator
 
ConstHalfedgeLoopIter chl_begin (HalfedgeHandle _heh) const
 const halfedge circulator
 
VertexVertexIter vv_end (VertexHandle _vh)
 vertex - vertex circulator
 
VertexIHalfedgeIter vih_end (VertexHandle _vh)
 vertex - incoming halfedge circulator
 
VertexOHalfedgeIter voh_end (VertexHandle _vh)
 vertex - outgoing halfedge circulator
 
VertexEdgeIter ve_end (VertexHandle _vh)
 vertex - edge circulator
 
VertexFaceIter vf_end (VertexHandle _vh)
 vertex - face circulator
 
ConstVertexVertexIter cvv_end (VertexHandle _vh) const
 const vertex circulator
 
ConstVertexIHalfedgeIter cvih_end (VertexHandle _vh) const
 const vertex - incoming halfedge circulator
 
ConstVertexOHalfedgeIter cvoh_end (VertexHandle _vh) const
 const vertex - outgoing halfedge circulator
 
ConstVertexEdgeIter cve_end (VertexHandle _vh) const
 const vertex - edge circulator
 
ConstVertexFaceIter cvf_end (VertexHandle _vh) const
 const vertex - face circulator
 
FaceVertexIter fv_end (FaceHandle _fh)
 face - vertex circulator
 
FaceHalfedgeIter fh_end (FaceHandle _fh)
 face - halfedge circulator
 
FaceEdgeIter fe_end (FaceHandle _fh)
 face - edge circulator
 
FaceFaceIter ff_end (FaceHandle _fh)
 face - face circulator
 
HalfedgeLoopIter hl_end (HalfedgeHandle _heh)
 face - face circulator
 
ConstFaceVertexIter cfv_end (FaceHandle _fh) const
 const face - vertex circulator
 
ConstFaceHalfedgeIter cfh_end (FaceHandle _fh) const
 const face - halfedge circulator
 
ConstFaceEdgeIter cfe_end (FaceHandle _fh) const
 const face - edge circulator
 
ConstFaceFaceIter cff_end (FaceHandle _fh) const
 const face - face circulator
 
ConstHalfedgeLoopIter chl_end (HalfedgeHandle _heh) const
 const face - face circulator
 
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)
 
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 ()
 
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 ()
 Clear the whole mesh. More...
 
void clean ()
 Reset the whole mesh. More...
 
size_t n_vertices () const
 
size_t n_halfedges () const
 
size_t n_edges () const
 
size_t n_faces () const
 
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)
 
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)
 
template<class T >
void copy_property (HPropHandleT< T > _ph, HalfedgeHandle _hh_from, HalfedgeHandle _hh_to)
 
template<class T >
void copy_property (EPropHandleT< T > _ph, EdgeHandle _eh_from, EdgeHandle _eh_to)
 
template<class T >
void copy_property (FPropHandleT< T > _ph, FaceHandle _fh_from, FaceHandle _fh_to)
 
void copy_all_properties (VertexHandle _vh_from, VertexHandle _vh_to, bool _copyBuildIn=false)
 
void copy_all_properties (HalfedgeHandle _hh_from, HalfedgeHandle _hh_to, bool _copyBuildIn=false)
 
void copy_all_properties (EdgeHandle _eh_from, EdgeHandle _eh_to, bool _copyBuildIn=false)
 
void copy_all_properties (FaceHandle _fh_from, FaceHandle _fh_to, bool _copyBuildIn=false)
 
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)
 
void property_stats (std::ostream &_ostr=std::clog) 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 (std::ostream &_ostr=std::clog) const
 
void hprop_stats (std::ostream &_ostr=std::clog) const
 
void eprop_stats (std::ostream &_ostr=std::clog) const
 
void fprop_stats (std::ostream &_ostr=std::clog) const
 
void mprop_stats (std::ostream &_ostr=std::clog) 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<class T >
void add_property (VPropHandleT< T > &_ph, const std::string &_name="<vprop>")
 
template<class T >
void add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>")
 
template<class T >
void add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>")
 
template<class T >
void add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>")
 
template<class T >
void add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>")
 
template<typename T >
void remove_property (VPropHandleT< T > &_ph)
 
template<typename T >
void remove_property (HPropHandleT< T > &_ph)
 
template<typename T >
void remove_property (EPropHandleT< T > &_ph)
 
template<typename T >
void remove_property (FPropHandleT< T > &_ph)
 
template<typename T >
void remove_property (MPropHandleT< T > &_ph)
 
template<class T >
bool get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const
 
template<class T >
bool get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const
 
template<class T >
bool get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const
 
template<class T >
bool get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const
 
template<class T >
bool get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const
 
template<class T >
PropertyT< T > & property (VPropHandleT< T > _ph)
 
template<class T >
const PropertyT< T > & property (VPropHandleT< T > _ph) const
 
template<class T >
PropertyT< T > & property (HPropHandleT< T > _ph)
 
template<class T >
const PropertyT< T > & property (HPropHandleT< T > _ph) const
 
template<class T >
PropertyT< T > & property (EPropHandleT< T > _ph)
 
template<class T >
const PropertyT< T > & property (EPropHandleT< T > _ph) const
 
template<class T >
PropertyT< T > & property (FPropHandleT< T > _ph)
 
template<class T >
const PropertyT< T > & property (FPropHandleT< T > _ph) const
 
template<class T >
PropertyT< T > & mproperty (MPropHandleT< T > _ph)
 
template<class T >
const PropertyT< T > & mproperty (MPropHandleT< T > _ph) const
 
template<class T >
VPropHandleT< T >::reference property (VPropHandleT< T > _ph, VertexHandle _vh)
 
template<class T >
VPropHandleT< T >::const_reference property (VPropHandleT< T > _ph, VertexHandle _vh) const
 
template<class T >
HPropHandleT< T >::reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh)
 
template<class T >
HPropHandleT< T >::const_reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const
 
template<class T >
EPropHandleT< T >::reference property (EPropHandleT< T > _ph, EdgeHandle _eh)
 
template<class T >
EPropHandleT< T >::const_reference property (EPropHandleT< T > _ph, EdgeHandle _eh) const
 
template<class T >
FPropHandleT< T >::reference property (FPropHandleT< T > _ph, FaceHandle _fh)
 
template<class T >
FPropHandleT< T >::const_reference property (FPropHandleT< T > _ph, FaceHandle _fh) const
 
template<class T >
MPropHandleT< T >::reference property (MPropHandleT< T > _ph)
 
template<class T >
MPropHandleT< T >::const_reference property (MPropHandleT< T > _ph) const
 

Static Public Member Functions

static bool is_triangles ()
 

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
 
void vprops_resize (size_t _n) const
 
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 ()
 

Private Attributes

std::vector< AddFaceEdgeInfoedgeData_
 
std::vector< std::pair
< HalfedgeHandle,
HalfedgeHandle > > 
next_cache_
 
uint next_cache_count_
 

Range based iterators and circulators

typedef EntityRange< const
PolyConnectivity,
PolyConnectivity::ConstVertexIter,&PolyConnectivity::vertices_begin,&PolyConnectivity::vertices_end
ConstVertexRange
 
typedef EntityRange< const
PolyConnectivity,
PolyConnectivity::ConstHalfedgeIter,&PolyConnectivity::halfedges_begin,&PolyConnectivity::halfedges_end
ConstHalfedgeRange
 
typedef EntityRange< const
PolyConnectivity,
PolyConnectivity::ConstEdgeIter,&PolyConnectivity::edges_begin,&PolyConnectivity::edges_end
ConstEdgeRange
 
typedef EntityRange< const
PolyConnectivity,
PolyConnectivity::ConstFaceIter,&PolyConnectivity::faces_begin,&PolyConnectivity::faces_end
ConstFaceRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstVertexVertexIter,
VertexHandle,&PolyConnectivity::cvv_begin,&PolyConnectivity::cvv_end
ConstVertexVertexRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstVertexIHalfedgeIter,
VertexHandle,&PolyConnectivity::cvih_begin,&PolyConnectivity::cvih_end
ConstVertexIHalfedgeRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstVertexOHalfedgeIter,
VertexHandle,&PolyConnectivity::cvoh_begin,&PolyConnectivity::cvoh_end
ConstVertexOHalfedgeRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstVertexEdgeIter,
VertexHandle,&PolyConnectivity::cve_begin,&PolyConnectivity::cve_end
ConstVertexEdgeRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstVertexFaceIter,
VertexHandle,&PolyConnectivity::cvf_begin,&PolyConnectivity::cvf_end
ConstVertexFaceRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstFaceVertexIter,
FaceHandle,&PolyConnectivity::cfv_begin,&PolyConnectivity::cfv_end
ConstFaceVertexRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstFaceHalfedgeIter,
FaceHandle,&PolyConnectivity::cfh_begin,&PolyConnectivity::cfh_end
ConstFaceHalfedgeRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstFaceEdgeIter, FaceHandle,&PolyConnectivity::cfe_begin,&PolyConnectivity::cfe_end
ConstFaceEdgeRange
 
typedef CirculatorRange< const
PolyConnectivity,
ConstFaceFaceIter, FaceHandle,&PolyConnectivity::cff_begin,&PolyConnectivity::cff_end
ConstFaceFaceRange
 
ConstVertexRange vertices () const
 
ConstHalfedgeRange halfedges () const
 
ConstEdgeRange edges () const
 
ConstFaceRange faces () 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
 

Detailed Description

Connectivity Class for polygonal meshes.

Definition at line 54 of file PolyConnectivity.hh.

Member Typedef Documentation

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

Definition at line 649 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 184 of file PolyConnectivity.hh.

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

Definition at line 747 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 185 of file PolyConnectivity.hh.

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

Definition at line 753 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 183 of file PolyConnectivity.hh.

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

Definition at line 741 of file PolyConnectivity.hh.

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

Definition at line 654 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 182 of file PolyConnectivity.hh.

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

Definition at line 735 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 190 of file PolyConnectivity.hh.

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

Definition at line 644 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 148 of file PolyConnectivity.hh.

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

Definition at line 723 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 147 of file PolyConnectivity.hh.

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

Definition at line 729 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 146 of file PolyConnectivity.hh.

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

Definition at line 712 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 145 of file PolyConnectivity.hh.

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

Definition at line 717 of file PolyConnectivity.hh.

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

Definition at line 639 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 144 of file PolyConnectivity.hh.

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

Definition at line 706 of file PolyConnectivity.hh.

Enumerate incident edges in a counter clockwise fashion.

Definition at line 173 of file PolyConnectivity.hh.

Enumerate adjacent faces in a counter clockwise fashion.

Definition at line 180 of file PolyConnectivity.hh.

Enumerate incident half edges in a counter clockwise fashion.

Definition at line 166 of file PolyConnectivity.hh.

Enumerate incident vertices in a counter clockwise fashion.

Definition at line 159 of file PolyConnectivity.hh.

Enumerates incident edges in a clockwise fashion.

Definition at line 135 of file PolyConnectivity.hh.

Enumerates incident faces in a clockwise fashion.

Definition at line 128 of file PolyConnectivity.hh.

Enumerates incoming half edges in a clockwise fashion.

Definition at line 121 of file PolyConnectivity.hh.

Enumerates outgoing half edges in a clockwise fashion.

Definition at line 114 of file PolyConnectivity.hh.

Enumerates 1-ring vertices in a clockwise fashion.

Definition at line 107 of file PolyConnectivity.hh.

Member Function Documentation

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

Definition at line 316 of file PolyConnectivity.cc.

FaceHandle 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

Definition at line 308 of file PolyConnectivity.cc.

FaceHandle 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

Definition at line 300 of file PolyConnectivity.cc.

PolyConnectivity::FaceHandle 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

Definition at line 115 of file PolyConnectivity.cc.

void OpenMesh::PolyConnectivity::adjust_outgoing_halfedge ( VertexHandle  _vh)

Adjust outgoing halfedge handle for vertices, so that it is a boundary halfedge whenever possible.

Definition at line 100 of file PolyConnectivity.cc.

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

assign_connectivity() method. See ArrayKernel::assign_connectivity() for more details.

Definition at line 247 of file PolyConnectivity.hh.

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

Definition at line 711 of file PolyConnectivity.cc.

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.

Definition at line 475 of file PolyConnectivity.cc.

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.

Definition at line 502 of file PolyConnectivity.cc.

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.

Definition at line 454 of file PolyConnectivity.cc.

ConstEdgeRange OpenMesh::PolyConnectivity::edges ( ) const
inline
Returns
The edges as a range object suitabl for C++11 range based for loops.

Definition at line 672 of file PolyConnectivity.hh.

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

Definition at line 678 of file PolyConnectivity.hh.

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.

Definition at line 815 of file PolyConnectivity.hh.

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.

Definition at line 823 of file PolyConnectivity.hh.

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.

Definition at line 807 of file PolyConnectivity.hh.

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.

Definition at line 799 of file PolyConnectivity.hh.

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

Definition at line 666 of file PolyConnectivity.hh.

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

Definition at line 976 of file PolyConnectivity.cc.

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?

Definition at line 841 of file PolyConnectivity.hh.

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?

Definition at line 852 of file PolyConnectivity.hh.

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?

Definition at line 869 of file PolyConnectivity.hh.

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?

Definition at line 68 of file PolyConnectivity.cc.

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.

Definition at line 321 of file PolyConnectivity.cc.

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?

Definition at line 83 of file PolyConnectivity.cc.

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.

Definition at line 823 of file PolyConnectivity.cc.

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.

Definition at line 844 of file PolyConnectivity.cc.

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.

Definition at line 924 of file PolyConnectivity.cc.

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.

Definition at line 863 of file PolyConnectivity.cc.

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

Definition at line 1068 of file PolyConnectivity.cc.

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

Definition at line 1111 of file PolyConnectivity.cc.

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

Definition at line 1140 of file PolyConnectivity.cc.

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

Definition at line 1205 of file PolyConnectivity.cc.

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

Definition at line 1011 of file PolyConnectivity.cc.

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.

Definition at line 783 of file PolyConnectivity.hh.

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

Definition at line 660 of file PolyConnectivity.hh.

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.

Definition at line 791 of file PolyConnectivity.hh.

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.

Definition at line 767 of file PolyConnectivity.hh.

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.

Definition at line 775 of file PolyConnectivity.hh.

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.

Definition at line 759 of file PolyConnectivity.hh.


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