44 #ifndef OPENMESH_POLYCONNECTIVITY_HH 45 #define OPENMESH_POLYCONNECTIVITY_HH 47 #include <OpenMesh/Core/Mesh/ArrayKernel.hh> 48 #include <OpenMesh/Core/Mesh/SmartRange.hh> 55 template <
class Mesh,
class ValueHandle,
class MemberOwner,
bool (MemberOwner::*PrimitiveStatusMember)() const,
size_t (MemberOwner::*PrimitiveCountMember)() const>
56 class GenericIteratorT;
59 class GenericCirculatorBaseT;
61 template<
typename Traits>
62 class GenericCirculatorT_DEPRECATED;
64 template<
typename Traits,
bool CW>
65 class GenericCirculatorT;
68 template <
typename RangeTraitT>
74 ITER_T (CONTAINER_T::*begin_fn)()
const,
75 ITER_T (CONTAINER_T::*end_fn)()
const>
78 using CONTAINER_TYPE = CONTAINER_T;
79 using ITER_TYPE = ITER_T;
80 static ITER_TYPE begin(
const CONTAINER_TYPE& _container) {
return (_container.*begin_fn)(); }
81 static ITER_TYPE end(
const CONTAINER_TYPE& _container) {
return (_container.*end_fn)(); }
85 template <
typename CirculatorRangeTraitT>
91 typename CENTER_ENTITY_T,
93 ITER_T (CONTAINER_T::*begin_fn)(CENTER_ENTITY_T)
const,
94 ITER_T (CONTAINER_T::*end_fn)(CENTER_ENTITY_T)
const>
97 using CONTAINER_TYPE = CONTAINER_T;
98 using ITER_TYPE = ITER_T;
99 using CENTER_ENTITY_TYPE = CENTER_ENTITY_T;
100 using TO_ENTITYE_TYPE = TO_ENTITY_T;
101 static ITER_TYPE begin(
const CONTAINER_TYPE& _container, CENTER_ENTITY_TYPE _ce) {
return (_container.*begin_fn)(_ce); }
102 static ITER_TYPE end(
const CONTAINER_TYPE& _container, CENTER_ENTITY_TYPE _ce) {
return (_container.*end_fn)(_ce); }
471 inline static bool is_triangles()
502 SmartFaceHandle add_face(
const std::vector<SmartVertexHandle>& _vhandles);
555 void delete_vertex(
VertexHandle _vh,
bool _delete_isolated_vertices =
true);
565 void delete_edge(
EdgeHandle _eh,
bool _delete_isolated_vertices=
true);
577 void delete_face(
FaceHandle _fh,
bool _delete_isolated_vertices=
true);
586 using ArrayKernel::next_halfedge_handle;
587 using ArrayKernel::prev_halfedge_handle;
588 using ArrayKernel::opposite_halfedge_handle;
589 using ArrayKernel::ccw_rotated_halfedge_handle;
590 using ArrayKernel::cw_rotated_halfedge_handle;
598 using ArrayKernel::s_halfedge_handle;
599 using ArrayKernel::s_edge_handle;
604 using ArrayKernel::halfedge_handle;
605 using ArrayKernel::edge_handle;
606 using ArrayKernel::face_handle;
622 VertexIter vertices_begin();
624 ConstVertexIter vertices_begin()
const;
626 VertexIter vertices_end();
628 ConstVertexIter vertices_end()
const;
631 HalfedgeIter halfedges_begin();
633 ConstHalfedgeIter halfedges_begin()
const;
635 HalfedgeIter halfedges_end();
637 ConstHalfedgeIter halfedges_end()
const;
640 EdgeIter edges_begin();
642 ConstEdgeIter edges_begin()
const;
644 EdgeIter edges_end();
646 ConstEdgeIter edges_end()
const;
649 FaceIter faces_begin();
651 ConstFaceIter faces_begin()
const;
653 FaceIter faces_end();
655 ConstFaceIter faces_end()
const;
664 VertexIter vertices_sbegin();
666 ConstVertexIter vertices_sbegin()
const;
669 HalfedgeIter halfedges_sbegin();
671 ConstHalfedgeIter halfedges_sbegin()
const;
674 EdgeIter edges_sbegin();
676 ConstEdgeIter edges_sbegin()
const;
679 FaceIter faces_sbegin();
681 ConstFaceIter faces_sbegin()
const;
725 ConstVertexVertexCWIter cvv_cwiter(
VertexHandle _vh)
const;
727 ConstVertexVertexCCWIter cvv_ccwiter(
VertexHandle _vh)
const;
729 ConstVertexIHalfedgeIter cvih_iter(
VertexHandle _vh)
const;
731 ConstVertexIHalfedgeCWIter cvih_cwiter(
VertexHandle _vh)
const;
733 ConstVertexIHalfedgeCCWIter cvih_ccwiter(
VertexHandle _vh)
const;
735 ConstVertexOHalfedgeIter cvoh_iter(
VertexHandle _vh)
const;
737 ConstVertexOHalfedgeCWIter cvoh_cwiter(
VertexHandle _vh)
const;
739 ConstVertexOHalfedgeCCWIter cvoh_ccwiter(
VertexHandle _vh)
const;
743 ConstVertexEdgeCWIter cve_cwiter(
VertexHandle _vh)
const;
745 ConstVertexEdgeCCWIter cve_ccwiter(
VertexHandle _vh)
const;
749 ConstVertexFaceCWIter cvf_cwiter(
VertexHandle _vh)
const;
751 ConstVertexFaceCCWIter cvf_ccwiter(
VertexHandle _vh)
const;
764 FaceHalfedgeCCWIter fh_ccwiter(
FaceHandle _fh);
779 ConstFaceVertexIter cfv_iter(
FaceHandle _fh)
const;
781 ConstFaceVertexCWIter cfv_cwiter(
FaceHandle _fh)
const;
783 ConstFaceVertexCCWIter cfv_ccwiter(
FaceHandle _fh)
const;
785 ConstFaceHalfedgeIter cfh_iter(
FaceHandle _fh)
const;
787 ConstFaceHalfedgeCWIter cfh_cwiter(
FaceHandle _fh)
const;
789 ConstFaceHalfedgeCCWIter cfh_ccwiter(
FaceHandle _fh)
const;
791 ConstFaceEdgeIter cfe_iter(
FaceHandle _fh)
const;
793 ConstFaceEdgeCWIter cfe_cwiter(
FaceHandle _fh)
const;
795 ConstFaceEdgeCCWIter cfe_ccwiter(
FaceHandle _fh)
const;
797 ConstFaceFaceIter cff_iter(
FaceHandle _fh)
const;
799 ConstFaceFaceCWIter cff_cwiter(
FaceHandle _fh)
const;
801 ConstFaceFaceCCWIter cff_ccwiter(
FaceHandle _fh)
const;
838 ConstVertexVertexIter cvv_begin(
VertexHandle _vh)
const;
840 ConstVertexVertexCWIter cvv_cwbegin(
VertexHandle _vh)
const;
842 ConstVertexVertexCCWIter cvv_ccwbegin(
VertexHandle _vh)
const;
844 ConstVertexIHalfedgeIter cvih_begin(
VertexHandle _vh)
const;
846 ConstVertexIHalfedgeCWIter cvih_cwbegin(
VertexHandle _vh)
const;
848 ConstVertexIHalfedgeCCWIter cvih_ccwbegin(
VertexHandle _vh)
const;
850 ConstVertexOHalfedgeIter cvoh_begin(
VertexHandle _vh)
const;
852 ConstVertexOHalfedgeCWIter cvoh_cwbegin(
VertexHandle _vh)
const;
854 ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(
VertexHandle _vh)
const;
858 ConstVertexEdgeCWIter cve_cwbegin(
VertexHandle _vh)
const;
860 ConstVertexEdgeCCWIter cve_ccwbegin(
VertexHandle _vh)
const;
864 ConstVertexFaceCWIter cvf_cwbegin(
VertexHandle _vh)
const;
866 ConstVertexFaceCCWIter cvf_ccwbegin(
VertexHandle _vh)
const;
873 FaceVertexCCWIter fv_ccwbegin(
FaceHandle _fh);
877 FaceHalfedgeCWIter fh_cwbegin(
FaceHandle _fh);
879 FaceHalfedgeCCWIter fh_ccwbegin(
FaceHandle _fh);
900 ConstFaceVertexIter cfv_begin(
FaceHandle _fh)
const;
902 ConstFaceVertexCWIter cfv_cwbegin(
FaceHandle _fh)
const;
904 ConstFaceVertexCCWIter cfv_ccwbegin(
FaceHandle _fh)
const;
906 ConstFaceHalfedgeIter cfh_begin(
FaceHandle _fh)
const;
908 ConstFaceHalfedgeCWIter cfh_cwbegin(
FaceHandle _fh)
const;
910 ConstFaceHalfedgeCCWIter cfh_ccwbegin(
FaceHandle _fh)
const;
912 ConstFaceEdgeIter cfe_begin(
FaceHandle _fh)
const;
914 ConstFaceEdgeCWIter cfe_cwbegin(
FaceHandle _fh)
const;
916 ConstFaceEdgeCCWIter cfe_ccwbegin(
FaceHandle _fh)
const;
918 ConstFaceFaceIter cff_begin(
FaceHandle _fh)
const;
920 ConstFaceFaceCWIter cff_cwbegin(
FaceHandle _fh)
const;
922 ConstFaceFaceCCWIter cff_ccwbegin(
FaceHandle _fh)
const;
966 ConstVertexVertexCWIter cvv_cwend(
VertexHandle _vh)
const;
968 ConstVertexVertexCCWIter cvv_ccwend(
VertexHandle _vh)
const;
970 ConstVertexIHalfedgeIter cvih_end(
VertexHandle _vh)
const;
972 ConstVertexIHalfedgeCWIter cvih_cwend(
VertexHandle _vh)
const;
974 ConstVertexIHalfedgeCCWIter cvih_ccwend(
VertexHandle _vh)
const;
976 ConstVertexOHalfedgeIter cvoh_end(
VertexHandle _vh)
const;
978 ConstVertexOHalfedgeCWIter cvoh_cwend(
VertexHandle _vh)
const;
980 ConstVertexOHalfedgeCCWIter cvoh_ccwend(
VertexHandle _vh)
const;
984 ConstVertexEdgeCWIter cve_cwend(
VertexHandle _vh)
const;
986 ConstVertexEdgeCCWIter cve_ccwend(
VertexHandle _vh)
const;
990 ConstVertexFaceCWIter cvf_cwend(
VertexHandle _vh)
const;
992 ConstVertexFaceCCWIter cvf_ccwend(
VertexHandle _vh)
const;
1005 FaceHalfedgeCCWIter fh_ccwend(
FaceHandle _fh);
1026 ConstFaceVertexIter cfv_end(
FaceHandle _fh)
const;
1028 ConstFaceVertexCWIter cfv_cwend(
FaceHandle _fh)
const;
1030 ConstFaceVertexCCWIter cfv_ccwend(
FaceHandle _fh)
const;
1032 ConstFaceHalfedgeIter cfh_end(
FaceHandle _fh)
const;
1034 ConstFaceHalfedgeCWIter cfh_cwend(
FaceHandle _fh)
const;
1036 ConstFaceHalfedgeCCWIter cfh_ccwend(
FaceHandle _fh)
const;
1038 ConstFaceEdgeIter cfe_end(
FaceHandle _fh)
const;
1040 ConstFaceEdgeCWIter cfe_cwend(
FaceHandle _fh)
const;
1042 ConstFaceEdgeCCWIter cfe_ccwend(
FaceHandle _fh)
const;
1044 ConstFaceFaceIter cff_end(
FaceHandle _fh)
const;
1046 ConstFaceFaceCWIter cff_cwend(
FaceHandle _fh)
const;
1048 ConstFaceFaceCCWIter cff_ccwend(
FaceHandle _fh)
const;
1066 const PolyConnectivity,
1071 const PolyConnectivity,
1076 const PolyConnectivity,
1081 const PolyConnectivity,
1086 const PolyConnectivity,
1091 const PolyConnectivity,
1096 const PolyConnectivity,
1102 template <
typename HandleType>
1109 ConstVertexRangeSkipping vertices()
const;
1115 ConstVertexRange all_vertices()
const;
1121 ConstHalfedgeRangeSkipping halfedges()
const;
1127 ConstHalfedgeRange all_halfedges()
const;
1133 ConstEdgeRangeSkipping edges()
const;
1139 ConstEdgeRange all_edges()
const;
1145 ConstFaceRangeSkipping faces()
const;
1151 ConstFaceRange all_faces()
const;
1157 template <
typename HandleType>
1164 template <
typename HandleType>
1170 ConstVertexVertexCWIter,
1177 ConstVertexIHalfedgeIter,
1184 ConstVertexOHalfedgeIter,
1191 ConstVertexEdgeIter,
1198 ConstVertexFaceIter,
1205 ConstFaceVertexIter,
1212 ConstFaceHalfedgeIter,
1236 ConstVertexVertexRange vv_range(VertexHandle _vh)
const;
1242 ConstVertexIHalfedgeRange vih_range(VertexHandle _vh)
const;
1248 ConstVertexOHalfedgeRange voh_range(VertexHandle _vh)
const;
1254 ConstVertexEdgeRange ve_range(VertexHandle _vh)
const ;
1260 ConstVertexFaceRange vf_range(VertexHandle _vh)
const;
1266 ConstFaceVertexRange fv_range(FaceHandle _fh)
const;
1272 ConstFaceHalfedgeRange fh_range(FaceHandle _fh)
const;
1278 ConstFaceEdgeRange fe_range(FaceHandle _fh)
const;
1284 ConstFaceFaceRange ff_range(FaceHandle _fh)
const;
1313 return (is_boundary(halfedge_handle(_eh, 0)) ||
1314 is_boundary(halfedge_handle(_eh, 1)));
1330 HalfedgeHandle heh(halfedge_handle(_vh));
1343 bool is_boundary(FaceHandle _fh,
bool _check_vertex=
false)
const;
1355 bool is_manifold(VertexHandle _vh)
const;
1363 {
return face_handle(opposite_halfedge_handle(_heh)); }
1370 void adjust_outgoing_halfedge(VertexHandle _vh);
1373 HalfedgeHandle find_halfedge(VertexHandle _start_vh, VertexHandle _end_vh)
const;
1375 uint valence(VertexHandle _vh)
const;
1377 uint valence(FaceHandle _fh)
const;
1395 void collapse(HalfedgeHandle _heh);
1400 bool is_simple_link(EdgeHandle _eh)
const;
1405 bool is_simply_connected(FaceHandle _fh)
const;
1418 FaceHandle remove_edge(EdgeHandle _eh);
1422 void reinsert_edge(EdgeHandle _eh);
1432 HalfedgeHandle insert_edge(HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh);
1446 void split(FaceHandle _fh, VertexHandle _vh);
1461 void split_copy(FaceHandle _fh, VertexHandle _vh);
1476 void triangulate(FaceHandle _fh);
1492 void split_edge(EdgeHandle _eh, VertexHandle _vh);
1505 void split_edge_copy(EdgeHandle _eh, VertexHandle _vh);
1513 const Vertex& deref(VertexHandle _h)
const {
return vertex(_h); }
1515 Vertex&
deref(VertexHandle _h) {
return vertex(_h); }
1516 const Halfedge&
deref(HalfedgeHandle _h)
const {
return halfedge(_h); }
1517 Halfedge&
deref(HalfedgeHandle _h) {
return halfedge(_h); }
1518 const Edge&
deref(EdgeHandle _h)
const {
return edge(_h); }
1519 Edge&
deref(EdgeHandle _h) {
return edge(_h); }
1520 const Face&
deref(FaceHandle _h)
const {
return face(_h); }
1521 Face&
deref(FaceHandle _h) {
return face(_h); }
1526 void collapse_edge(HalfedgeHandle _hh);
1528 void collapse_loop(HalfedgeHandle _hh);
1535 HalfedgeHandle halfedge_handle;
1539 std::vector<AddFaceEdgeInfo> edgeData_;
1540 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_;
1574 #include <OpenMesh/Core/Mesh/PolyConnectivity_inline_impl.hh> 1576 #endif//OPENMESH_POLYCONNECTIVITY_HH Iterators::GenericCirculatorT< VertexEdgeTraits, false > VertexEdgeCCWIter
Handle for a edge entity.
Handle for a face entity.
HalfedgeHandle HHandle
Alias typedef.
FaceHalfedgeIter ConstFaceHalfedgeIter
ConstEdgeIter CEIter
Alias typedef.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > > ConstVertexRangeSkipping
VertexIter ConstVertexIter
Linear iterator.
FaceFaceCCWIter ConstFaceFaceCCWIter
VertexIter vertices_end()
End iterator for vertices.
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > > ConstVertexEdgeRange
FaceHandle FHandle
Alias typedef.
ConstVertexOHalfedgeCCWIter CVOHCCWIter
Alias typedef.
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
ConstVertexEdgeCWIter CVECWIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< FaceFaceTraits > FaceFaceIter
Iterators::GenericCirculatorT_DEPRECATED< VertexOppositeHalfedgeTraits > VertexIHalfedgeIter
HalfedgeLoopIter ConstHalfedgeLoopIter
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
EdgeIter EIter
Alias typedef.
VertexVertexCWIter ConstVertexVertexCWIter
VertexOHalfedgeIter ConstVertexOHalfedgeIter
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
ConstFaceIter CFIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > > ConstFaceEdgeRange
Iterators::GenericCirculatorT_DEPRECATED< FaceEdgeTraits > FaceEdgeIter
Handle for a halfedge entity.
VertexFaceCWIter ConstVertexFaceCWIter
EdgeHandle EHandle
Alias typedef.
Iterators::GenericCirculatorT< VertexFaceTraits, true > VertexFaceCWIter
FaceIter faces_begin()
Begin iterator for faces.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > > ConstFaceFaceRange
VertexVertexIter VVIter
Alias typedef.
Edge & deref(EdgeHandle _h)
Get item from handle.
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
VertexEdgeIter ConstVertexEdgeIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > HalfedgeLoopCCWIter
VertexFaceCWIter VFCWIter
Alias typedef.
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRange
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
void assign_connectivity(const PolyConnectivity &_other)
ConstVertexOHalfedgeCWIter CVOHCWIter
Alias typedef.
FaceEdgeCWIter FECWIter
Alias typedef.
VertexIHalfedgeCWIter VIHICWter
Alias typedef.
VertexIHalfedgeCCWIter VIHICCWter
Alias typedef.
FaceIter faces_end()
End iterator for faces.
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
ConstFaceFaceIter CFFIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > > ConstVertexVertexRange
Handle for a vertex entity.
VertexEdgeCCWIter ConstVertexEdgeCCWIter
ConstFaceEdgeCWIter CFECWIter
Alias typedef.
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
bool is_valid() const
The handle is valid iff the index is not negative.
FaceHalfedgeIter FHIter
Alias typedef.
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
VertexIHalfedgeIter ConstVertexIHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< FaceVertexTraits > FaceVertexIter
Iterators::GenericCirculatorT< FaceFaceTraits, true > FaceFaceCCWIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > > ConstVertexRange
FaceFaceIter FFIter
Alias typedef.
FaceVertexCCWIter FVCCWIter
Alias typedef.
ConstFaceHalfedgeCCWIter CFHCCWIter
Alias typedef.
EdgeIter edges_end()
End iterator for edges.
Iterators::GenericCirculatorT< VertexFaceTraits, false > VertexFaceCCWIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > > ConstFaceRange
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
const Face & deref(FaceHandle _h) const
Get item from handle.
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
const vertex circulator cw
Vertex & deref(VertexHandle _h)
Get item from handle.
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
FaceIter faces_sbegin()
Begin iterator for faces.
VertexOHalfedgeCCWIter VOHCCWIter
Alias typedef.
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
void assign_connectivity(const ArrayKernel &_other)
ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
const vertex circulator cw
VertexIHalfedgeIter VIHIter
Alias typedef.
VertexVertexCCWIter VVCCWIter
Alias typedef.
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > HalfedgeLoopCWIter
Iterators::GenericCirculatorT< VertexEdgeTraits, true > VertexEdgeCWIter
ConstVertexIHalfedgeCWIter CVIHCWIter
Alias typedef.
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
VertexIter VIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > HalfedgeLoopIter
VertexVertexIter ConstVertexVertexIter
VertexEdgeIter VEIter
Alias typedef.
FaceIter FIter
Alias typedef.
FaceEdgeIter FEIter
Alias typedef.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > > ConstFaceRangeSkipping
Iterators::GenericCirculatorT< VertexHalfedgeTraits, false > VertexOHalfedgeCCWIter
FaceVertexIter FVIter
Alias typedef.
VertexFaceIter VFIter
Alias typedef.
FaceEdgeCWIter ConstFaceEdgeCWIter
Iterators::GenericCirculatorT_DEPRECATED< VertexVertexTraits > VertexVertexIter
ConstVertexVertexCCWIter CVVCCWIter
Alias typedef.
FaceEdgeIter ConstFaceEdgeIter
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
VertexOHalfedgeCWIter VOHCWIter
Alias typedef.
Generic class for iterator ranges.
ConstFaceHalfedgeCWIter CFHCWIter
Alias typedef.
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
VertexVertexCWIter VVCWIter
Alias typedef.
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
ConstFaceFaceCCWIter CFFCCWIter
Alias typedef.
Iterators::GenericCirculatorT_DEPRECATED< VertexFaceTraits > VertexFaceIter
VertexEdgeCWIter VECWIter
Alias typedef.
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
ConstFaceEdgeCCWIter CFECCWIter
Alias typedef.
Iterators::GenericCirculatorT< FaceVertexTraits, false > FaceVertexCWIter
FaceEdgeCCWIter FECWWIter
Alias typedef.
Iterators::GenericCirculatorT< FaceEdgeTraits, true > FaceEdgeCCWIter
Face & deref(FaceHandle _h)
Get item from handle.
ConstFaceVertexCWIter CFVCWIter
Alias typedef.
FaceVertexCWIter FVCWIter
Alias typedef.
ConstFaceVertexIter CFVIter
Alias typedef.
VertexOHalfedgeIter VOHIter
Alias typedef.
ConstVertexVertexCWIter CVVCWIter
Alias typedef.
FaceHalfedgeCCWIter FHCWWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > > ConstVertexIHalfedgeRange
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > FaceHalfedgeIter
FaceVertexIter ConstFaceVertexIter
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, true > VertexIHalfedgeCWIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > FaceHalfedgeCWIter
VertexFaceIter ConstVertexFaceIter
FaceFaceIter ConstFaceFaceIter
ConstHalfedgeIter CHIter
Alias typedef.
FaceFaceCWIter ConstFaceFaceCWIter
ConstVertexIter CVIter
Alias typedef.
FaceIter ConstFaceIter
Linear iterator.
Generic class for vertex/halfedge/edge/face ranges.
ConstVertexIHalfedgeCCWIter CVIHCCWIter
Alias typedef.
HalfedgeIter ConstHalfedgeIter
Linear iterator.
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > > ConstEdgeRange
ConstVertexEdgeCCWIter CVECCWIter
Alias typedef.
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > FaceHalfedgeCCWIter
VertexFaceCCWIter VFCCWIter
Alias typedef.
VertexIter vertices_begin()
Begin iterator for vertices.
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
FaceHalfedgeCWIter FHCWIter
Alias typedef.
VertexVertexCCWIter ConstVertexVertexCCWIter
Iterators::GenericCirculatorT< FaceVertexTraits, true > FaceVertexCCWIter
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
Iterators::GenericCirculatorT< VertexHalfedgeTraits, true > VertexOHalfedgeCWIter
ConstVertexEdgeIter CVEIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > > ConstVertexFaceRange
FaceVertexCWIter ConstFaceVertexCWIter
EdgeIter ConstEdgeIter
Linear iterator.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > > ConstFaceVertexRange
Iterators::GenericCirculatorT< FaceEdgeTraits, false > FaceEdgeCWIter
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
VertexIter vertices_sbegin()
Begin iterator for vertices.
HalfedgeIter halfedges_end()
End iterator for halfedges.
ConstFaceVertexCCWIter CFVCCWIter
Alias typedef.
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
ConstVertexFaceIter CVFIter
Alias typedef.
ConstFaceFaceCWIter CFFCWIter
Alias typedef.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRangeSkipping
FaceEdgeCCWIter ConstFaceEdgeCCWIter
Iterators::GenericCirculatorT_DEPRECATED< VertexEdgeTraits > VertexEdgeIter
Connectivity Class for polygonal meshes.
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
VertexEdgeCCWIter VECCWIter
Alias typedef.
FaceVertexCCWIter ConstFaceVertexCCWIter
VertexFaceCCWIter ConstVertexFaceCCWIter
static const FaceHandle InvalidFaceHandle
Invalid handle.
ConstVertexFaceCCWIter CVFCCWIter
Alias typedef.
Iterators::GenericCirculatorT< FaceFaceTraits, false > FaceFaceCWIter
ConstFaceHalfedgeIter CFHIter
Alias typedef.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > > ConstEdgeRangeSkipping
ConstVertexFaceCWIter CVFCWIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > > ConstVertexOHalfedgeRange
EdgeIter edges_sbegin()
Begin iterator for edges.
ConstVertexVertexIter CVVIter
Alias typedef.
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, false > VertexIHalfedgeCCWIter
Iterators::GenericCirculatorT_DEPRECATED< VertexHalfedgeTraits > VertexOHalfedgeIter
EdgeIter edges_begin()
Begin iterator for edges.
ConstFaceEdgeIter CFEIter
Alias typedef.
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
HalfedgeIter HIter
Alias typedef.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > > ConstFaceHalfedgeRange
Iterators::GenericCirculatorT< VertexVertexTraits, true > VertexVertexCWIter
Iterators::GenericCirculatorT< VertexVertexTraits, false > VertexVertexCCWIter
FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
VertexEdgeCWIter ConstVertexEdgeCWIter
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator
const Edge & deref(EdgeHandle _h) const
Get item from handle.