42 #ifndef OPENMESH_POLYCONNECTIVITY_HH
43 #define OPENMESH_POLYCONNECTIVITY_HH
45 #include <OpenMesh/Core/Mesh/ArrayKernel.hh>
46 #include <OpenMesh/Core/Mesh/IteratorsT.hh>
47 #include <OpenMesh/Core/Mesh/CirculatorsT.hh>
242 inline static bool is_triangles()
256 {
return new_vertex(); }
265 FaceHandle add_face(
const std::vector<VertexHandle>& _vhandles);
318 void delete_vertex(
VertexHandle _vh,
bool _delete_isolated_vertices =
true);
328 void delete_edge(
EdgeHandle _eh,
bool _delete_isolated_vertices=
true);
340 void delete_face(
FaceHandle _fh,
bool _delete_isolated_vertices=
true);
349 VertexIter vertices_begin();
351 ConstVertexIter vertices_begin()
const;
353 VertexIter vertices_end();
355 ConstVertexIter vertices_end()
const;
358 HalfedgeIter halfedges_begin();
360 ConstHalfedgeIter halfedges_begin()
const;
362 HalfedgeIter halfedges_end();
364 ConstHalfedgeIter halfedges_end()
const;
367 EdgeIter edges_begin();
369 ConstEdgeIter edges_begin()
const;
371 EdgeIter edges_end();
373 ConstEdgeIter edges_end()
const;
376 FaceIter faces_begin();
378 ConstFaceIter faces_begin()
const;
380 FaceIter faces_end();
382 ConstFaceIter faces_end()
const;
395 {
return ConstVertexIter(*
this,
VertexHandle(0),
true); }
406 {
return EdgeIter(*
this,
EdgeHandle(0),
true); }
409 {
return ConstEdgeIter(*
this,
EdgeHandle(0),
true); }
413 {
return FaceIter(*
this,
FaceHandle(0),
true); }
416 {
return ConstFaceIter(*
this,
FaceHandle(0),
true); }
444 {
return ConstVertexVertexIter(*
this, _vh); }
447 {
return ConstVertexIHalfedgeIter(*
this, _vh); }
450 {
return ConstVertexOHalfedgeIter(*
this, _vh); }
453 {
return ConstVertexEdgeIter(*
this, _vh); }
456 {
return ConstVertexFaceIter(*
this, _vh); }
473 {
return ConstFaceVertexIter(*
this, _fh); }
476 {
return ConstFaceHalfedgeIter(*
this, _fh); }
479 {
return ConstFaceEdgeIter(*
this, _fh); }
482 {
return ConstFaceFaceIter(*
this, _fh); }
504 {
return ConstVertexVertexIter(*
this, _vh); }
507 {
return ConstVertexIHalfedgeIter(*
this, _vh); }
510 {
return ConstVertexOHalfedgeIter(*
this, _vh); }
513 {
return ConstVertexEdgeIter(*
this, _vh); }
516 {
return ConstVertexFaceIter(*
this, _vh); }
536 {
return ConstFaceVertexIter(*
this, _fh); }
539 {
return ConstFaceHalfedgeIter(*
this, _fh); }
542 {
return ConstFaceEdgeIter(*
this, _fh); }
545 {
return ConstFaceFaceIter(*
this, _fh); }
548 {
return ConstHalfedgeLoopIter(*
this, _heh); }
570 {
return ConstVertexVertexIter(*
this, _vh,
true); }
573 {
return ConstVertexIHalfedgeIter(*
this, _vh,
true); }
576 {
return ConstVertexOHalfedgeIter(*
this, _vh,
true); }
579 {
return ConstVertexEdgeIter(*
this, _vh,
true); }
582 {
return ConstVertexFaceIter(*
this, _vh,
true); }
602 {
return ConstFaceVertexIter(*
this, _fh,
true); }
605 {
return ConstFaceHalfedgeIter(*
this, _fh,
true); }
608 {
return ConstFaceEdgeIter(*
this, _fh,
true); }
611 {
return ConstFaceFaceIter(*
this, _fh,
true); }
614 {
return ConstHalfedgeLoopIter(*
this, _heh,
true); }
622 typename CONTAINER_TYPE,
624 ITER_TYPE (CONTAINER_TYPE::*begin_fn)()
const,
625 ITER_TYPE (CONTAINER_TYPE::*end_fn)()
const>
628 EntityRange(CONTAINER_TYPE &container) : container_(container) {}
629 ITER_TYPE begin()
const {
return (container_.*begin_fn)(); }
630 ITER_TYPE end()
const {
return (container_.*end_fn)(); }
633 CONTAINER_TYPE &container_;
641 const PolyConnectivity,
646 const PolyConnectivity,
651 const PolyConnectivity,
660 ConstVertexRange
vertices()
const {
return ConstVertexRange(*
this); }
666 ConstHalfedgeRange
halfedges()
const {
return ConstHalfedgeRange(*
this); }
672 ConstEdgeRange
edges()
const {
return ConstEdgeRange(*
this); }
678 ConstFaceRange
faces()
const {
return ConstFaceRange(*
this); }
682 typename CONTAINER_TYPE,
684 typename CENTER_ENTITY_TYPE,
685 ITER_TYPE (CONTAINER_TYPE::*begin_fn)(CENTER_ENTITY_TYPE)
const,
686 ITER_TYPE (CONTAINER_TYPE::*end_fn)(CENTER_ENTITY_TYPE)
const>
690 CONTAINER_TYPE &container,
691 CENTER_ENTITY_TYPE center) :
692 container_(container), center_(center) {}
693 ITER_TYPE begin() {
return (container_.*begin_fn)(center_); }
694 ITER_TYPE end() {
return (container_.*end_fn)(center_); }
697 CONTAINER_TYPE &container_;
698 CENTER_ENTITY_TYPE center_;
702 const PolyConnectivity,
703 ConstVertexVertexIter,
708 const PolyConnectivity,
709 ConstVertexIHalfedgeIter,
714 const PolyConnectivity,
715 ConstVertexOHalfedgeIter, VertexHandle,
719 const PolyConnectivity,
725 const PolyConnectivity,
731 const PolyConnectivity,
737 const PolyConnectivity,
738 ConstFaceHalfedgeIter,
743 const PolyConnectivity,
749 const PolyConnectivity,
759 ConstVertexVertexRange
vv_range(VertexHandle _vh)
const {
760 return ConstVertexVertexRange(*
this, _vh);
767 ConstVertexIHalfedgeRange
vih_range(VertexHandle _vh)
const {
768 return ConstVertexIHalfedgeRange(*
this, _vh);
775 ConstVertexOHalfedgeRange
voh_range(VertexHandle _vh)
const {
776 return ConstVertexOHalfedgeRange(*
this, _vh);
783 ConstVertexEdgeRange
ve_range(VertexHandle _vh)
const {
784 return ConstVertexEdgeRange(*
this, _vh);
791 ConstVertexFaceRange
vf_range(VertexHandle _vh)
const {
792 return ConstVertexFaceRange(*
this, _vh);
799 ConstFaceVertexRange
fv_range(FaceHandle _fh)
const {
800 return ConstFaceVertexRange(*
this, _fh);
807 ConstFaceHalfedgeRange
fh_range(FaceHandle _fh)
const {
808 return ConstFaceHalfedgeRange(*
this, _fh);
815 ConstFaceEdgeRange
fe_range(FaceHandle _fh)
const {
816 return ConstFaceEdgeRange(*
this, _fh);
823 ConstFaceFaceRange
ff_range(FaceHandle _fh)
const {
824 return ConstFaceFaceRange(*
this, _fh);
854 return (is_boundary(halfedge_handle(_eh, 0)) ||
855 is_boundary(halfedge_handle(_eh, 1)));
872 return (!(heh.
is_valid() && face_handle(heh).is_valid()));
884 bool is_boundary(FaceHandle _fh,
bool _check_vertex=
false)
const;
896 bool is_manifold(VertexHandle _vh)
const;
904 {
return face_handle(opposite_halfedge_handle(_heh)); }
911 void adjust_outgoing_halfedge(VertexHandle _vh);
914 HalfedgeHandle find_halfedge(VertexHandle _start_vh, VertexHandle _end_vh)
const;
916 uint valence(VertexHandle _vh)
const;
918 uint valence(FaceHandle _fh)
const;
946 bool is_simply_connected(FaceHandle _fh)
const;
987 void split(FaceHandle _fh, VertexHandle _vh);
1002 void split_copy(FaceHandle _fh, VertexHandle _vh);
1017 void triangulate(FaceHandle _fh);
1033 void split_edge(
EdgeHandle _eh, VertexHandle _vh);
1046 void split_edge_copy(
EdgeHandle _eh, VertexHandle _vh);
1054 const Vertex& deref(VertexHandle _h)
const {
return vertex(_h); }
1056 Vertex&
deref(VertexHandle _h) {
return vertex(_h); }
1061 const Face&
deref(FaceHandle _h)
const {
return face(_h); }
1062 Face&
deref(FaceHandle _h) {
return face(_h); }
1074 struct AddFaceEdgeInfo
1080 std::vector<AddFaceEdgeInfo> edgeData_;
1081 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_;
1082 uint next_cache_count_;
1088 #endif//OPENMESH_POLYCONNECTIVITY_HH
FaceEdgeIter fe_iter(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:465
FaceHalfedgeIter fh_end(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:588
Vertex & deref(VertexHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1056
ConstHalfedgeIter CHIter
Alias typedef.
Definition: PolyConnectivity.hh:212
ConstFaceEdgeRange fe_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:815
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:62
ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:503
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
Definition: PolyConnectivity.hh:841
VertexIHalfedgeIter vih_iter(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:430
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:607
FaceIter FIter
Alias typedef.
Definition: PolyConnectivity.hh:209
ConstFaceIter faces_sbegin() const
Const begin iterator for faces.
Definition: PolyConnectivity.hh:415
VertexFaceIter vf_end(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:565
Definition: IteratorsT.hh:82
void assign_connectivity(const ArrayKernel &_other)
ArrayKernel uses the default copy constructor and assignment operator, which means that the connectiv...
Definition: ArrayKernel.cc:69
FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
Definition: PolyConnectivity.hh:903
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:538
FaceFaceIter FFIter
Alias typedef.
Definition: PolyConnectivity.hh:224
ConstHalfedgeRange halfedges() const
Definition: PolyConnectivity.hh:666
ConstFaceEdgeIter CFEIter
Alias typedef.
Definition: PolyConnectivity.hh:233
ConstVertexFaceIter CVFIter
Alias typedef.
Definition: PolyConnectivity.hh:230
HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
face - face circulator
Definition: PolyConnectivity.hh:597
FaceIter faces_begin()
Begin iterator for faces.
Definition: PolyConnectivity.cc:687
Face & deref(FaceHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1062
HalfedgeIter halfedges_end()
End iterator for halfedges.
Definition: PolyConnectivity.cc:651
VertexFaceIter vf_begin(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:499
Iterators::GenericCirculatorT< This, This::VertexHandle, This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT< This >::toOppositeHalfedgeHandle > VertexIHalfedgeIter
Enumerates incoming half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:121
ConstFaceHalfedgeIter CFHIter
Alias typedef.
Definition: PolyConnectivity.hh:232
Generic class for iterator ranges.
Definition: PolyConnectivity.hh:687
EdgeIter EIter
Alias typedef.
Definition: PolyConnectivity.hh:208
VertexIter ConstVertexIter
Linear iterator.
Definition: PolyConnectivity.hh:84
ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:775
Iterators::GenericCirculatorT< This, This::VertexHandle, This::EdgeHandle,&Iterators::GenericCirculatorBaseT< This >::toEdgeHandle > VertexEdgeIter
Enumerates incident edges in a clockwise fashion.
Definition: PolyConnectivity.hh:135
FaceIter ConstFaceIter
Linear iterator.
Definition: PolyConnectivity.hh:87
FaceFaceIter ff_begin(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:528
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:541
Iterators::GenericCirculatorT< This, This::VertexHandle, This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > VertexOHalfedgeIter
Enumerates outgoing half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:114
EdgeIter edges_end()
End iterator for edges.
Definition: PolyConnectivity.cc:675
VertexEdgeIter ve_end(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:562
Iterators::GenericCirculatorT< This, This::VertexHandle, This::VertexHandle,&Iterators::GenericCirculatorBaseT< This >::toVertexHandle > VertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:107
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel,&This::has_face_status,&This::n_faces > FaceIter
Linear iterator.
Definition: PolyConnectivity.hh:82
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:578
VertexOHalfedgeIter voh_iter(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:433
FaceVertexIter ConstFaceVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:182
Edge & deref(EdgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1060
CirculatorRange< const PolyConnectivity, ConstFaceVertexIter, FaceHandle,&PolyConnectivity::cfv_begin,&PolyConnectivity::cfv_end > ConstFaceVertexRange
Definition: PolyConnectivity.hh:735
VertexOHalfedgeIter VOHIter
Alias typedef.
Definition: PolyConnectivity.hh:217
ConstFaceVertexRange fv_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:799
ConstEdgeIter edges_sbegin() const
Const begin iterator for edges.
Definition: PolyConnectivity.hh:408
FaceFaceIter ff_iter(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:468
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:506
VertexIter VIter
Alias typedef.
Definition: PolyConnectivity.hh:206
FaceHalfedgeIter FHIter
Alias typedef.
Definition: PolyConnectivity.hh:222
ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:767
ConstVertexVertexIter cvv_end(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:569
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel,&This::has_halfedge_status,&This::n_halfedges > HalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:80
Iterators::GenericCirculatorT< This, This::FaceHandle, This::EdgeHandle,&Iterators::GenericCirculatorBaseT< This >::toEdgeHandle > FaceEdgeIter
Enumerate incident edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:173
VertexIter vertices_end()
End iterator for vertices.
Definition: PolyConnectivity.cc:627
CirculatorRange< const PolyConnectivity, ConstVertexFaceIter, VertexHandle,&PolyConnectivity::cvf_begin,&PolyConnectivity::cvf_end > ConstVertexFaceRange
Definition: PolyConnectivity.hh:729
FaceHalfedgeIter ConstFaceHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:183
CirculatorRange< const PolyConnectivity, ConstFaceFaceIter, FaceHandle,&PolyConnectivity::cff_begin,&PolyConnectivity::cff_end > ConstFaceFaceRange
Definition: PolyConnectivity.hh:753
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:610
FaceEdgeIter FEIter
Alias typedef.
Definition: PolyConnectivity.hh:223
Definition: CirculatorsT.hh:221
VertexFaceIter vf_iter(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:439
VertexOHalfedgeIter voh_begin(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:493
VertexFaceIter VFIter
Alias typedef.
Definition: PolyConnectivity.hh:220
FaceIter faces_end()
End iterator for faces.
Definition: PolyConnectivity.cc:699
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:604
CirculatorRange< const PolyConnectivity, ConstFaceEdgeIter, FaceHandle,&PolyConnectivity::cfe_begin,&PolyConnectivity::cfe_end > ConstFaceEdgeRange
Definition: PolyConnectivity.hh:747
Mesh kernel using arrays for mesh item storage.
Definition: ArrayKernel.hh:85
ConstFaceFaceIter CFFIter
Alias typedef.
Definition: PolyConnectivity.hh:234
ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:475
VertexIHalfedgeIter vih_end(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:556
VertexVertexIter vv_end(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:553
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:515
ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:472
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
Definition: PolyConnectivity.hh:852
VertexEdgeIter ve_iter(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:436
CirculatorRange< const PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle,&PolyConnectivity::cvih_begin,&PolyConnectivity::cvih_end > ConstVertexIHalfedgeRange
Definition: PolyConnectivity.hh:712
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
Definition: PolyConnectivity.cc:639
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:601
FaceEdgeIter ConstFaceEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:184
VertexIHalfedgeIter vih_begin(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:490
CirculatorRange< const PolyConnectivity, ConstVertexVertexIter, VertexHandle,&PolyConnectivity::cvv_begin,&PolyConnectivity::cvv_end > ConstVertexVertexRange
Definition: PolyConnectivity.hh:706
Generic class for vertex/halfedge/edge/face ranges.
Definition: PolyConnectivity.hh:626
ConstHalfedgeIter halfedges_sbegin() const
Const begin iterator for halfedges.
Definition: PolyConnectivity.hh:401
HalfedgeIter HIter
Alias typedef.
Definition: PolyConnectivity.hh:207
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:509
EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter,&PolyConnectivity::halfedges_begin,&PolyConnectivity::halfedges_end > ConstHalfedgeRange
Definition: PolyConnectivity.hh:644
ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:449
VertexVertexIter vv_begin(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:487
ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:455
static const FaceHandle InvalidFaceHandle
Invalid handle.
Definition: PolyConnectivity.hh:66
FaceHandle FHandle
Alias typedef.
Definition: PolyConnectivity.hh:204
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > FaceHalfedgeIter
Enumerate incident half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:166
Handle for a vertex entity.
Definition: Handles.hh:114
ConstVertexIter CVIter
Alias typedef.
Definition: PolyConnectivity.hh:211
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:575
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1058
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1057
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel,&This::has_edge_status,&This::n_edges > EdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:81
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:512
FaceFaceIter ff_end(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:594
CirculatorRange< const PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle,&PolyConnectivity::cvoh_begin,&PolyConnectivity::cvoh_end > ConstVertexOHalfedgeRange
Definition: PolyConnectivity.hh:717
Iterators::GenericCirculatorT< This, This::FaceHandle, This::FaceHandle,&Iterators::GenericCirculatorBaseT< This >::toOppositeFaceHandle > FaceFaceIter
Enumerate adjacent faces in a counter clockwise fashion.
Definition: PolyConnectivity.hh:180
EdgeIter ConstEdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:86
FaceEdgeIter fe_begin(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:525
HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
halfedge circulator
Definition: PolyConnectivity.hh:531
Connectivity Class for polygonal meshes.
Definition: PolyConnectivity.hh:54
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
Definition: PolyConnectivity.hh:227
ConstEdgeRange edges() const
Definition: PolyConnectivity.hh:672
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:535
ConstFaceFaceRange ff_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:823
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle,&Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > HalfedgeLoopIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:142
ConstVertexEdgeIter CVEIter
Alias typedef.
Definition: PolyConnectivity.hh:229
HalfedgeLoopIter ConstHalfedgeLoopIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:190
Definition: CirculatorsT.hh:159
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
Definition: PolyConnectivity.hh:398
ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:452
ConstVertexVertexIter CVVIter
Alias typedef.
Definition: PolyConnectivity.hh:226
ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
const halfedge circulator
Definition: PolyConnectivity.hh:547
ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
const face - face circulator
Definition: PolyConnectivity.hh:613
EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter,&PolyConnectivity::vertices_begin,&PolyConnectivity::vertices_end > ConstVertexRange
Definition: PolyConnectivity.hh:639
VertexOHalfedgeIter ConstVertexOHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:145
ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:446
ConstFaceIter CFIter
Alias typedef.
Definition: PolyConnectivity.hh:214
ConstEdgeIter CEIter
Alias typedef.
Definition: PolyConnectivity.hh:213
FaceVertexIter fv_begin(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:519
VertexFaceIter ConstVertexFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:147
EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter,&PolyConnectivity::faces_begin,&PolyConnectivity::faces_end > ConstFaceRange
Definition: PolyConnectivity.hh:654
ConstFaceVertexIter CFVIter
Alias typedef.
Definition: PolyConnectivity.hh:231
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:581
FaceEdgeIter fe_end(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:591
EdgeIter edges_begin()
Begin iterator for edges.
Definition: PolyConnectivity.cc:663
VertexEdgeIter ve_begin(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:496
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:544
HalfedgeIter ConstHalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:85
Handle for a face entity.
Definition: Handles.hh:135
VertexHandle add_vertex()
Add a new vertex.
Definition: PolyConnectivity.hh:255
VertexEdgeIter ConstVertexEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:148
const Edge & deref(EdgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1059
VertexEdgeIter VEIter
Alias typedef.
Definition: PolyConnectivity.hh:219
Handle for a halfedge entity.
Definition: Handles.hh:121
VertexVertexIter ConstVertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:144
VertexIter vertices_begin()
Begin iterator for vertices.
Definition: PolyConnectivity.cc:615
Iterators::GenericCirculatorT< This, This::VertexHandle, This::FaceHandle,&Iterators::GenericCirculatorBaseT< This >::toFaceHandle > VertexFaceIter
Enumerates incident faces in a clockwise fashion.
Definition: PolyConnectivity.hh:128
VertexOHalfedgeIter voh_end(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:559
Handle for a edge entity.
Definition: Handles.hh:128
VertexIHalfedgeIter ConstVertexIHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:146
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
Definition: ArrayKernel.hh:358
FaceHalfedgeIter fh_begin(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:522
FaceIter faces_sbegin()
Begin iterator for faces.
Definition: PolyConnectivity.hh:412
CirculatorRange< const PolyConnectivity, ConstVertexEdgeIter, VertexHandle,&PolyConnectivity::cve_begin,&PolyConnectivity::cve_end > ConstVertexEdgeRange
Definition: PolyConnectivity.hh:723
FaceHalfedgeIter fh_iter(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:462
FaceVertexIter FVIter
Alias typedef.
Definition: PolyConnectivity.hh:221
ConstVertexFaceRange vf_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:791
ConstFaceFaceIter cff_iter(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:481
EdgeIter edges_sbegin()
Begin iterator for edges.
Definition: PolyConnectivity.hh:405
FaceVertexIter fv_iter(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:459
ConstVertexRange vertices() const
Definition: PolyConnectivity.hh:660
CirculatorRange< const PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle,&PolyConnectivity::cfh_begin,&PolyConnectivity::cfh_end > ConstFaceHalfedgeRange
Definition: PolyConnectivity.hh:741
ConstFaceRange faces() const
Definition: PolyConnectivity.hh:678
ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:807
ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:443
EdgeHandle EHandle
Alias typedef.
Definition: PolyConnectivity.hh:203
VertexVertexIter VVIter
Alias typedef.
Definition: PolyConnectivity.hh:216
FaceVertexIter fv_end(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:585
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
Definition: PolyConnectivity.hh:869
Iterators::GenericCirculatorT< This, This::FaceHandle, This::VertexHandle,&Iterators::GenericCirculatorBaseT< This >::toVertexHandle > FaceVertexIter
Enumerate incident vertices in a counter clockwise fashion.
Definition: PolyConnectivity.hh:159
ConstVertexVertexRange vv_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:759
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:56
EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter,&PolyConnectivity::edges_begin,&PolyConnectivity::edges_end > ConstEdgeRange
Definition: PolyConnectivity.hh:649
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:64
VertexVertexIter vv_iter(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:427
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
Definition: PolyConnectivity.hh:228
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:572
FaceFaceIter ConstFaceFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:185
ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:478
HalfedgeHandle HHandle
Alias typedef.
Definition: PolyConnectivity.hh:202
VertexIter vertices_sbegin()
Begin iterator for vertices.
Definition: PolyConnectivity.hh:391
bool is_valid() const
The handle is valid iff the index is not equal to -1.
Definition: Handles.hh:70
void assign_connectivity(const PolyConnectivity &_other)
assign_connectivity() method.
Definition: PolyConnectivity.hh:247
ConstVertexEdgeRange ve_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:783
VertexIHalfedgeIter VIHIter
Alias typedef.
Definition: PolyConnectivity.hh:218
ConstVertexIter vertices_sbegin() const
Const begin iterator for vertices.
Definition: PolyConnectivity.hh:394
const Face & deref(FaceHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1061