OpenMesh

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
OpenMesh::PolyConnectivity Class Reference

Connectivity Class for polygonal meshes. More...

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

Inheritance diagram for OpenMesh::PolyConnectivity:
[legend]
Collaboration diagram for OpenMesh::PolyConnectivity:
[legend]

## Classes
struct | AddFaceEdgeInfo
class | EntityRange

## 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::VertexVertexIterT < This > | VertexVertexIter
| Circulator.
typedef Iterators::VertexOHalfedgeIterT < This > | VertexOHalfedgeIter
| Circulator.
typedef Iterators::VertexIHalfedgeIterT < This > | VertexIHalfedgeIter
| Circulator.
typedef Iterators::VertexEdgeIterT < This > | VertexEdgeIter
| Circulator.
typedef Iterators::VertexFaceIterT < This > | VertexFaceIter
| Circulator.
typedef Iterators::FaceVertexIterT < This > | FaceVertexIter
| Circulator.
typedef Iterators::FaceHalfedgeIterT < This > | FaceHalfedgeIter
| Circulator.
typedef Iterators::FaceEdgeIterT< This > | FaceEdgeIter
| Circulator.
typedef Iterators::FaceFaceIterT< This > | FaceFaceIter
| Circulator.
typedef Iterators::ConstVertexVertexIterT < This > | ConstVertexVertexIter
| Circulator.
typedef Iterators::ConstVertexOHalfedgeIterT < This > | ConstVertexOHalfedgeIter
| Circulator.
typedef Iterators::ConstVertexIHalfedgeIterT < This > | ConstVertexIHalfedgeIter
| Circulator.
typedef Iterators::ConstVertexEdgeIterT < This > | ConstVertexEdgeIter
| Circulator.
typedef Iterators::ConstVertexFaceIterT < This > | ConstVertexFaceIter
| Circulator.
typedef Iterators::ConstFaceVertexIterT < This > | ConstFaceVertexIter
| Circulator.
typedef Iterators::ConstFaceHalfedgeIterT < This > | ConstFaceHalfedgeIter
| Circulator.
typedef Iterators::ConstFaceEdgeIterT < This > | ConstFaceEdgeIter
| Circulator.
typedef Iterators::ConstFaceFaceIterT < This > | ConstFaceFaceIter
| Circulator.
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< StatusInfo > | VertexStatusPropertyHandle
typedef HPropHandleT< StatusInfo > | HalfedgeStatusPropertyHandle
typedef EPropHandleT< StatusInfo > | EdgeStatusPropertyHandle
typedef FPropHandleT< StatusInfo > | FaceStatusPropertyHandle
typedef AutoStatusSetT < VertexHandle > | VertexStatusSet
typedef AutoStatusSetT < EdgeHandle > | EdgeStatusSet
typedef AutoStatusSetT < FaceHandle > | FaceStatusSet
typedef AutoStatusSetT < HalfedgeHandle > | HalfedgeStatusSet
typedef ExtStatusSetT< FaceHandle > | ExtFaceStatusSet
typedef ExtStatusSetT < VertexHandle > | ExtVertexStatusSet
typedef ExtStatusSetT< EdgeHandle > | ExtEdgeStatusSet
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)
| assign_connectivity() method.
FaceHandle | opposite_face_handle (HalfedgeHandle _heh) const
| returns the face handle of the opposite halfedge
void | adjust_outgoing_halfedge (VertexHandle _vh)
| Adjust outgoing halfedge handle for vertices, so that it is a boundary halfedge whenever possible.
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)
| Halfedge collapse: collapse the from-vertex of halfedge _heh into its to-vertex.
bool | is_simple_link (EdgeHandle _eh) const
| return true if the this the only link between the faces adjacent to _eh.
bool | is_simply_connected (FaceHandle _fh) const
| return true if _fh shares only one edge with all of its adjacent faces.
FaceHandle | remove_edge (EdgeHandle _eh)
| Removes the edge _eh.
void | reinsert_edge (EdgeHandle _eh)
| Inverse of remove_edge.
HalfedgeHandle | insert_edge (HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh)
| Inserts an edge between to_vh(_prev_heh) and from_vh(_next_heh).
void | split (FaceHandle _fh, VertexHandle _vh)
| Face split (= 1-to-n split).
void | split_copy (FaceHandle _fh, VertexHandle _vh)
| Face split (= 1-to-n split).
void | triangulate (FaceHandle _fh)
| Triangulate the face _fh.
void | triangulate ()
| triangulate the entire mesh
void | split_edge (EdgeHandle _eh, VertexHandle _vh)
| Edge split (inserts a vertex on the edge only)
void | split_edge_copy (EdgeHandle _eh, VertexHandle _vh)
| Edge split (inserts a vertex on the edge only)
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.
FaceHandle | add_face (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2)
| Add and connect a new face.
FaceHandle | add_face (VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3)
| Add and connect a new face.
FaceHandle | add_face (const VertexHandle *_vhandles, size_t _vhs_size)
| Add and connect a new face.
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.
void | delete_vertex (VertexHandle _vh, bool _delete_isolated_vertices=true)
| Mark vertex and all incident edges and faces deleted.
void | delete_edge (EdgeHandle _eh, bool _delete_isolated_vertices=true)
| Mark edge (two opposite halfedges) and incident faces deleted.
void | delete_face (FaceHandle _fh, bool _delete_isolated_vertices=true)
| Delete face _fh and resulting degenerated empty halfedges as well.
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
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
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
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
Boundary and manifold tests
bool | is_boundary (HalfedgeHandle _heh) const
| Check if the halfedge is at the boundary.
bool | is_boundary (EdgeHandle _eh) const
| Is the edge a boundary edge?
bool | is_boundary (VertexHandle _vh) const
| Is vertex _vh a boundary vertex ?
bool | is_boundary (FaceHandle _fh, bool _check_vertex=false) const
| Check if face is at the boundary.
bool | is_manifold (VertexHandle _vh) const
| Is (the mesh at) vertex _vh two-manifold ?
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.
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
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
void | clear ()
| Clear the whole mesh.
void | clean ()
| Reset the whole mesh.
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)
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::True)
void | set_prev_halfedge_handle (HalfedgeHandle, HalfedgeHandle, GenProg::False)
HalfedgeHandle | prev_halfedge_handle (HalfedgeHandle _heh) const
HalfedgeHandle | prev_halfedge_handle (HalfedgeHandle _heh, GenProg::True) const
HalfedgeHandle | prev_halfedge_handle (HalfedgeHandle _heh, GenProg::False) 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 StatusInfo & | status (VertexHandle _vh) const
| Status Query API.
StatusInfo & | status (VertexHandle _vh)
const StatusInfo & | status (HalfedgeHandle _hh) const
StatusInfo & | status (HalfedgeHandle _hh)
const StatusInfo & | status (EdgeHandle _eh) const
StatusInfo & | status (EdgeHandle _eh)
const StatusInfo & | status (FaceHandle _fh) const
StatusInfo & | status (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)
| Copies a single property from one mesh element to another (of the same type)
template<class T >
void | copy_property (HPropHandleT< T > _ph, HalfedgeHandle _hh_from, HalfedgeHandle _hh_to)
| Copies a single property from one mesh element to another (of the same type)
template<class T >
void | copy_property (EPropHandleT< T > _ph, EdgeHandle _eh_from, EdgeHandle _eh_to)
| Copies a single property from one mesh element to another (of the same type)
template<class T >
void | copy_property (FPropHandleT< T > _ph, FaceHandle _fh_from, FaceHandle _fh_to)
| Copies a single property from one mesh element to another (of the same type)
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)
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)
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)
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)
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>")
| Adds a property.
template<class T >
void | add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>")
| Adds a property.
template<class T >
void | add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>")
| Adds a property.
template<class T >
void | add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>")
| Adds a property.
template<class T >
void | add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>")
| Adds a property.
template<typename T >
void | remove_property (VPropHandleT< T > &_ph)
| Remove a property.
template<typename T >
void | remove_property (HPropHandleT< T > &_ph)
| Remove a property.
template<typename T >
void | remove_property (EPropHandleT< T > &_ph)
| Remove a property.
template<typename T >
void | remove_property (FPropHandleT< T > &_ph)
| Remove a property.
template<typename T >
void | remove_property (MPropHandleT< T > &_ph)
| Remove a property.
template<class T >
bool | get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const
| Retrieves the handle to a named property by it's name.
template<class T >
bool | get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const
| Retrieves the handle to a named property by it's name.
template<class T >
bool | get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const
| Retrieves the handle to a named property by it's name.
template<class T >
bool | get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const
| Retrieves the handle to a named property by it's name.
template<class T >
bool | get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const
| Retrieves the handle to a named property by it's name.
template<class T >
PropertyT< T > & | property (VPropHandleT< T > _ph)
| Access a property.
template<class T >
const PropertyT< T > & | property (VPropHandleT< T > _ph) const
| Access a property.
template<class T >
PropertyT< T > & | property (HPropHandleT< T > _ph)
| Access a property.
template<class T >
const PropertyT< T > & | property (HPropHandleT< T > _ph) const
| Access a property.
template<class T >
PropertyT< T > & | property (EPropHandleT< T > _ph)
| Access a property.
template<class T >
const PropertyT< T > & | property (EPropHandleT< T > _ph) const
| Access a property.
template<class T >
PropertyT< T > & | property (FPropHandleT< T > _ph)
| Access a property.
template<class T >
const PropertyT< T > & | property (FPropHandleT< T > _ph) const
| Access a property.
template<class T >
PropertyT< T > & | mproperty (MPropHandleT< T > _ph)
| Access a property.
template<class T >
const PropertyT< T > & | mproperty (MPropHandleT< T > _ph) const
| Access a property.
template<class T >
VPropHandleT< T >::reference | property (VPropHandleT< T > _ph, VertexHandle _vh)
| Return value of property for an item.
template<class T >
VPropHandleT< T >::const_reference | property (VPropHandleT< T > _ph, VertexHandle _vh) const
| Return value of property for an item.
template<class T >
HPropHandleT< T >::reference | property (HPropHandleT< T > _ph, HalfedgeHandle _hh)
| Return value of property for an item.
template<class T >
HPropHandleT< T >::const_reference | property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const
| Return value of property for an item.
template<class T >
EPropHandleT< T >::reference | property (EPropHandleT< T > _ph, EdgeHandle _eh)
| Return value of property for an item.
template<class T >
EPropHandleT< T >::const_reference | property (EPropHandleT< T > _ph, EdgeHandle _eh) const
| Return value of property for an item.
template<class T >
FPropHandleT< T >::reference | property (FPropHandleT< T > _ph, FaceHandle _fh)
| Return value of property for an item.
template<class T >
FPropHandleT< T >::const_reference | property (FPropHandleT< T > _ph, FaceHandle _fh) const
| Return value of property for an item.
template<class T >
MPropHandleT< T >::reference | property (MPropHandleT< T > _ph)
| Return value of property for an item.
template<class T >
MPropHandleT< T >::const_reference | property (MPropHandleT< T > _ph) const
| Return value of property for an item.

## 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.

## Begin and end iterators
typedef EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter,&PolyConnectivity::vertices_begin,&PolyConnectivity::vertices_end > | ConstVertexRange
| Begin iterator for vertices.
typedef EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter,&PolyConnectivity::halfedges_begin,&PolyConnectivity::halfedges_end > | ConstHalfedgeRange
| Begin iterator for vertices.
typedef EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter,&PolyConnectivity::edges_begin,&PolyConnectivity::edges_end > | ConstEdgeRange
| Begin iterator for vertices.
typedef EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter,&PolyConnectivity::faces_begin,&PolyConnectivity::faces_end > | ConstFaceRange
| Begin iterator for vertices.
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.
ConstVertexRange | vertices () const
ConstHalfedgeRange | halfedges () const
ConstEdgeRange | edges () const
ConstFaceRange | faces () const

## Detailed Description

Connectivity Class for polygonal meshes.

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

  _vhandles | sorted list of vertex handles (also defines order in which the vertices are added to the face)

Reimplemented in OpenMesh::TriConnectivity.

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

  _vh0 | First vertex handle
  _vh1 | Second vertex handle
  _vh2 | Third vertex handle

Reimplemented in OpenMesh::TriConnectivity.

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

  _vh0 | First vertex handle
  _vh1 | Second vertex handle
  _vh2 | Third vertex handle
  _vh3 | Fourth vertex handle

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

  _vhandles | pointer to a sorted list of vertex handles (also defines order in which the vertices are added to the face)
  _vhs_size | number of vertex handles in the array

Reimplemented in OpenMesh::TriConnectivity.

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

assign_connectivity() method.

See ArrayKernel::assign_connectivity() for more details.

Reimplemented in OpenMesh::TriConnectivity.

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

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.

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.

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.

ConstEdgeRange OpenMesh::PolyConnectivity::edges | ( |  | ) | const
| inline

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

ConstFaceRange OpenMesh::PolyConnectivity::faces | ( |  | ) | const
| inline

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

ConstHalfedgeRange OpenMesh::PolyConnectivity::halfedges | ( |  | ) | const
| inline

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

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

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

  _heh | HalfedgeHandle to test

Returns
  boundary?

Reimplemented from OpenMesh::ArrayKernel.

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

  _eh | Edge handle to test

Returns
  boundary?

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

  _vh | VertexHandle to test

Returns
  boundary?

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

  _fh | Check this face
  _check_vertex | If `true`, check the corner vertices of the face, too.

Returns
  boundary?

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.

Reimplemented in OpenMesh::TriConnectivity.

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

  _vh | VertexHandle to test

Returns
  manifold?

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.

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.

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.

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.

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

  _fh | Face handle that should be splitted
  _vh | Vertex handle of the new vertex that will be inserted in the face

Reimplemented in OpenMesh::TriConnectivity.

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

  _fh | Face handle that should be splitted
  _vh | Vertex handle of the new vertex that will be inserted in the face

Reimplemented in OpenMesh::TriConnectivity.

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

  _eh | Handle of the edge, that will be splitted
  _vh | Handle of the vertex that will be inserted at the edge

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

  _eh | Handle of the edge, that will be splitted
  _vh | Handle of the vertex that will be inserted at the edge

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

  _fh | Handle of the face that should be triangulated

ConstVertexRange OpenMesh::PolyConnectivity::vertices | ( |  | ) | const
| inline

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

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

- OpenMesh/Core/Mesh/PolyConnectivity.hh
- OpenMesh/Core/Mesh/PolyConnectivity.cc