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>
210 inline static bool is_triangles()
224 {
return new_vertex(); }
233 FaceHandle add_face(
const std::vector<VertexHandle>& _vhandles);
286 void delete_vertex(
VertexHandle _vh,
bool _delete_isolated_vertices =
true);
296 void delete_edge(
EdgeHandle _eh,
bool _delete_isolated_vertices=
true);
308 void delete_face(
FaceHandle _fh,
bool _delete_isolated_vertices=
true);
317 VertexIter vertices_begin();
319 ConstVertexIter vertices_begin()
const;
321 VertexIter vertices_end();
323 ConstVertexIter vertices_end()
const;
326 HalfedgeIter halfedges_begin();
328 ConstHalfedgeIter halfedges_begin()
const;
330 HalfedgeIter halfedges_end();
332 ConstHalfedgeIter halfedges_end()
const;
335 EdgeIter edges_begin();
337 ConstEdgeIter edges_begin()
const;
339 EdgeIter edges_end();
341 ConstEdgeIter edges_end()
const;
344 FaceIter faces_begin();
346 ConstFaceIter faces_begin()
const;
348 FaceIter faces_end();
350 ConstFaceIter faces_end()
const;
363 {
return ConstVertexIter(*
this,
VertexHandle(0),
true); }
374 {
return EdgeIter(*
this,
EdgeHandle(0),
true); }
377 {
return ConstEdgeIter(*
this,
EdgeHandle(0),
true); }
381 {
return FaceIter(*
this,
FaceHandle(0),
true); }
384 {
return ConstFaceIter(*
this,
FaceHandle(0),
true); }
396 {
return VertexVertexIter(*
this, _vh); }
399 {
return VertexIHalfedgeIter(*
this, _vh); }
402 {
return VertexOHalfedgeIter(*
this, _vh); }
405 {
return VertexEdgeIter(*
this, _vh); }
408 {
return VertexFaceIter(*
this, _vh); }
412 {
return ConstVertexVertexIter(*
this, _vh); }
415 {
return ConstVertexIHalfedgeIter(*
this, _vh); }
418 {
return ConstVertexOHalfedgeIter(*
this, _vh); }
421 {
return ConstVertexEdgeIter(*
this, _vh); }
424 {
return ConstVertexFaceIter(*
this, _vh); }
428 {
return FaceVertexIter(*
this, _fh); }
431 {
return FaceHalfedgeIter(*
this, _fh); }
434 {
return FaceEdgeIter(*
this, _fh); }
437 {
return FaceFaceIter(*
this, _fh); }
441 {
return ConstFaceVertexIter(*
this, _fh); }
444 {
return ConstFaceHalfedgeIter(*
this, _fh); }
447 {
return ConstFaceEdgeIter(*
this, _fh); }
450 {
return ConstFaceFaceIter(*
this, _fh); }
456 {
return VertexVertexIter(*
this, _vh); }
459 {
return VertexIHalfedgeIter(*
this, _vh); }
462 {
return VertexOHalfedgeIter(*
this, _vh); }
465 {
return VertexEdgeIter(*
this, _vh); }
468 {
return VertexFaceIter(*
this, _vh); }
472 {
return ConstVertexVertexIter(*
this, _vh); }
475 {
return ConstVertexIHalfedgeIter(*
this, _vh); }
478 {
return ConstVertexOHalfedgeIter(*
this, _vh); }
481 {
return ConstVertexEdgeIter(*
this, _vh); }
484 {
return ConstVertexFaceIter(*
this, _vh); }
488 {
return FaceVertexIter(*
this, _fh); }
491 {
return FaceHalfedgeIter(*
this, _fh); }
494 {
return FaceEdgeIter(*
this, _fh); }
497 {
return FaceFaceIter(*
this, _fh); }
500 {
return HalfedgeLoopIter(*
this, _heh); }
504 {
return ConstFaceVertexIter(*
this, _fh); }
507 {
return ConstFaceHalfedgeIter(*
this, _fh); }
510 {
return ConstFaceEdgeIter(*
this, _fh); }
513 {
return ConstFaceFaceIter(*
this, _fh); }
516 {
return ConstHalfedgeLoopIter(*
this, _heh); }
522 {
return VertexVertexIter(*
this, _vh,
true); }
525 {
return VertexIHalfedgeIter(*
this, _vh,
true); }
528 {
return VertexOHalfedgeIter(*
this, _vh,
true); }
531 {
return VertexEdgeIter(*
this, _vh,
true); }
534 {
return VertexFaceIter(*
this, _vh,
true); }
538 {
return ConstVertexVertexIter(*
this, _vh,
true); }
541 {
return ConstVertexIHalfedgeIter(*
this, _vh,
true); }
544 {
return ConstVertexOHalfedgeIter(*
this, _vh,
true); }
547 {
return ConstVertexEdgeIter(*
this, _vh,
true); }
550 {
return ConstVertexFaceIter(*
this, _vh,
true); }
554 {
return FaceVertexIter(*
this, _fh,
true); }
557 {
return FaceHalfedgeIter(*
this, _fh,
true); }
560 {
return FaceEdgeIter(*
this, _fh,
true); }
563 {
return FaceFaceIter(*
this, _fh,
true); }
566 {
return HalfedgeLoopIter(*
this, _heh,
true); }
570 {
return ConstFaceVertexIter(*
this, _fh,
true); }
573 {
return ConstFaceHalfedgeIter(*
this, _fh,
true); }
576 {
return ConstFaceEdgeIter(*
this, _fh,
true); }
579 {
return ConstFaceFaceIter(*
this, _fh,
true); }
582 {
return ConstHalfedgeLoopIter(*
this, _heh,
true); }
590 typename CONTAINER_TYPE,
592 ITER_TYPE (CONTAINER_TYPE::*begin_fn)()
const,
593 ITER_TYPE (CONTAINER_TYPE::*end_fn)()
const>
596 EntityRange(CONTAINER_TYPE &container) : container_(container) {}
597 ITER_TYPE begin() {
return (container_.*begin_fn)(); }
598 ITER_TYPE end() {
return (container_.*end_fn)(); }
601 CONTAINER_TYPE &container_;
609 const PolyConnectivity,
614 const PolyConnectivity,
619 const PolyConnectivity,
628 ConstVertexRange
vertices()
const {
return ConstVertexRange(*
this); }
634 ConstHalfedgeRange
halfedges()
const {
return ConstHalfedgeRange(*
this); }
640 ConstEdgeRange
edges()
const {
return ConstEdgeRange(*
this); }
646 ConstFaceRange
faces()
const {
return ConstFaceRange(*
this); }
650 typename CONTAINER_TYPE,
652 typename CENTER_ENTITY_TYPE,
653 ITER_TYPE (CONTAINER_TYPE::*begin_fn)(CENTER_ENTITY_TYPE)
const,
654 ITER_TYPE (CONTAINER_TYPE::*end_fn)(CENTER_ENTITY_TYPE)
const>
658 CONTAINER_TYPE &container,
659 CENTER_ENTITY_TYPE center) :
660 container_(container), center_(center) {}
661 ITER_TYPE begin() {
return (container_.*begin_fn)(center_); }
662 ITER_TYPE end() {
return (container_.*end_fn)(center_); }
665 CONTAINER_TYPE &container_;
666 CENTER_ENTITY_TYPE center_;
670 const PolyConnectivity,
671 ConstVertexVertexIter,
676 const PolyConnectivity,
677 ConstVertexIHalfedgeIter,
682 const PolyConnectivity,
683 ConstVertexOHalfedgeIter, VertexHandle,
687 const PolyConnectivity,
693 const PolyConnectivity,
699 const PolyConnectivity,
705 const PolyConnectivity,
706 ConstFaceHalfedgeIter,
711 const PolyConnectivity,
717 const PolyConnectivity,
727 ConstVertexVertexRange
vv_range(VertexHandle _vh)
const {
728 return ConstVertexVertexRange(*
this, _vh);
735 ConstVertexIHalfedgeRange
vih_range(VertexHandle _vh)
const {
736 return ConstVertexIHalfedgeRange(*
this, _vh);
743 ConstVertexOHalfedgeRange
voh_range(VertexHandle _vh)
const {
744 return ConstVertexOHalfedgeRange(*
this, _vh);
751 ConstVertexEdgeRange
ve_range(VertexHandle _vh)
const {
752 return ConstVertexEdgeRange(*
this, _vh);
759 ConstVertexFaceRange
vf_range(VertexHandle _vh)
const {
760 return ConstVertexFaceRange(*
this, _vh);
767 ConstFaceVertexRange
fv_range(FaceHandle _fh)
const {
768 return ConstFaceVertexRange(*
this, _fh);
775 ConstFaceHalfedgeRange
fh_range(FaceHandle _fh)
const {
776 return ConstFaceHalfedgeRange(*
this, _fh);
783 ConstFaceEdgeRange
fe_range(FaceHandle _fh)
const {
784 return ConstFaceEdgeRange(*
this, _fh);
791 ConstFaceFaceRange
ff_range(FaceHandle _fh)
const {
792 return ConstFaceFaceRange(*
this, _fh);
822 return (is_boundary(halfedge_handle(_eh, 0)) ||
823 is_boundary(halfedge_handle(_eh, 1)));
840 return (!(heh.
is_valid() && face_handle(heh).is_valid()));
852 bool is_boundary(FaceHandle _fh,
bool _check_vertex=
false)
const;
864 bool is_manifold(VertexHandle _vh)
const;
872 {
return face_handle(opposite_halfedge_handle(_heh)); }
879 void adjust_outgoing_halfedge(VertexHandle _vh);
882 HalfedgeHandle find_halfedge(VertexHandle _start_vh, VertexHandle _end_vh)
const;
884 uint valence(VertexHandle _vh)
const;
886 uint valence(FaceHandle _fh)
const;
914 bool is_simply_connected(FaceHandle _fh)
const;
955 void split(FaceHandle _fh, VertexHandle _vh);
970 void split_copy(FaceHandle _fh, VertexHandle _vh);
985 void triangulate(FaceHandle _fh);
1001 void split_edge(
EdgeHandle _eh, VertexHandle _vh);
1014 void split_edge_copy(
EdgeHandle _eh, VertexHandle _vh);
1022 const Vertex& deref(VertexHandle _h)
const {
return vertex(_h); }
1024 Vertex&
deref(VertexHandle _h) {
return vertex(_h); }
1029 const Face&
deref(FaceHandle _h)
const {
return face(_h); }
1030 Face&
deref(FaceHandle _h) {
return face(_h); }
1042 struct AddFaceEdgeInfo
1048 std::vector<AddFaceEdgeInfo> edgeData_;
1049 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_;
1050 uint next_cache_count_;
1056 #endif//OPENMESH_POLYCONNECTIVITY_HH
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel,&This::has_face_status,&This::n_faces > FaceIter
Linear iterator.
Definition: PolyConnectivity.hh:82
EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter,&PolyConnectivity::edges_begin,&PolyConnectivity::edges_end > ConstEdgeRange
Definition: PolyConnectivity.hh:617
VertexOHalfedgeIter voh_begin(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:461
ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
const halfedge circulator
Definition: PolyConnectivity.hh:515
FaceIter faces_end()
End iterator for faces.
Definition: PolyConnectivity.cc:699
CirculatorRange< const PolyConnectivity, ConstVertexEdgeIter, VertexHandle,&PolyConnectivity::cve_begin,&PolyConnectivity::cve_end > ConstVertexEdgeRange
Definition: PolyConnectivity.hh:691
ConstVertexRange vertices() const
Definition: PolyConnectivity.hh:628
VertexEdgeIter ve_begin(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:464
CirculatorRange< const PolyConnectivity, ConstFaceVertexIter, FaceHandle,&PolyConnectivity::cfv_begin,&PolyConnectivity::cfv_end > ConstFaceVertexRange
Definition: PolyConnectivity.hh:703
CirculatorRange< const PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle,&PolyConnectivity::cfh_begin,&PolyConnectivity::cfh_end > ConstFaceHalfedgeRange
Definition: PolyConnectivity.hh:709
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:569
VertexEdgeIter VEIter
Alias typedef.
Definition: PolyConnectivity.hh:187
ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:411
EdgeIter EIter
Alias typedef.
Definition: PolyConnectivity.hh:176
FaceIter ConstFaceIter
Linear iterator.
Definition: PolyConnectivity.hh:87
VertexIter vertices_end()
End iterator for vertices.
Definition: PolyConnectivity.cc:627
HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
halfedge circulator
Definition: PolyConnectivity.hh:499
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:477
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:572
ConstHalfedgeIter CHIter
Alias typedef.
Definition: PolyConnectivity.hh:180
ConstVertexVertexRange vv_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:727
HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
face - face circulator
Definition: PolyConnectivity.hh:565
VertexIHalfedgeIter vih_iter(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:398
bool is_valid() const
The handle is valid iff the index is not equal to -1.
Definition: Handles.hh:70
ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:414
FaceVertexIter fv_begin(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:487
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:474
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1025
ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:443
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:503
ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:775
EdgeIter edges_begin()
Begin iterator for edges.
Definition: PolyConnectivity.cc:663
ConstVertexEdgeIter CVEIter
Alias typedef.
Definition: PolyConnectivity.hh:197
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:546
FaceVertexIter fv_end(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:553
ConstVertexFaceIter CVFIter
Alias typedef.
Definition: PolyConnectivity.hh:198
CirculatorRange< const PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle,&PolyConnectivity::cvih_begin,&PolyConnectivity::cvih_end > ConstVertexIHalfedgeRange
Definition: PolyConnectivity.hh:680
HalfedgeIter halfedges_end()
End iterator for halfedges.
Definition: PolyConnectivity.cc:651
Definition: CirculatorsT.hh:221
VertexOHalfedgeIter voh_end(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:527
EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter,&PolyConnectivity::vertices_begin,&PolyConnectivity::vertices_end > ConstVertexRange
Definition: PolyConnectivity.hh:607
FaceIter FIter
Alias typedef.
Definition: PolyConnectivity.hh:177
ConstFaceFaceRange ff_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:791
VertexFaceIter vf_end(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:533
VertexVertexIter VVIter
Alias typedef.
Definition: PolyConnectivity.hh:184
ConstFaceVertexIter CFVIter
Alias typedef.
Definition: PolyConnectivity.hh:199
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:56
FaceFaceIter FFIter
Alias typedef.
Definition: PolyConnectivity.hh:192
Handle for a halfedge entity.
Definition: Handles.hh:121
static const FaceHandle InvalidFaceHandle
Invalid handle.
Definition: PolyConnectivity.hh:66
ConstVertexVertexIter CVVIter
Alias typedef.
Definition: PolyConnectivity.hh:194
CirculatorRange< const PolyConnectivity, ConstFaceEdgeIter, FaceHandle,&PolyConnectivity::cfe_begin,&PolyConnectivity::cfe_end > ConstFaceEdgeRange
Definition: PolyConnectivity.hh:715
ConstFaceEdgeRange fe_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:783
VertexIter ConstVertexIter
Linear iterator.
Definition: PolyConnectivity.hh:84
FaceFaceIter ff_iter(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:436
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:543
VertexFaceIter vf_begin(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:467
VertexEdgeIter ve_end(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:530
VertexIHalfedgeIter vih_end(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:524
EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter,&PolyConnectivity::faces_begin,&PolyConnectivity::faces_end > ConstFaceRange
Definition: PolyConnectivity.hh:622
const Face & deref(FaceHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1029
VertexVertexIter vv_end(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:521
Generic class for iterator ranges.
Definition: PolyConnectivity.hh:655
FaceEdgeIter fe_begin(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:493
FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
Definition: PolyConnectivity.hh:871
FaceHalfedgeIter fh_end(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:556
VertexVertexIter vv_begin(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:455
HalfedgeIter ConstHalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:85
VertexEdgeIter ve_iter(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:404
FaceHalfedgeIter fh_iter(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:430
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:62
ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:471
Edge & deref(EdgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1028
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
Definition: PolyConnectivity.hh:809
CirculatorRange< const PolyConnectivity, ConstVertexVertexIter, VertexHandle,&PolyConnectivity::cvv_begin,&PolyConnectivity::cvv_end > ConstVertexVertexRange
Definition: PolyConnectivity.hh:674
ConstEdgeRange edges() const
Definition: PolyConnectivity.hh:640
Definition: IteratorsT.hh:82
ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:743
VertexIter vertices_begin()
Begin iterator for vertices.
Definition: PolyConnectivity.cc:615
void assign_connectivity(const ArrayKernel &_other)
ArrayKernel uses the default copy constructor and assignment operator, which means that the connectiv...
Definition: ArrayKernel.cc:69
Definition: CirculatorsT.hh:159
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
Definition: ArrayKernel.hh:358
Connectivity Class for polygonal meshes.
Definition: PolyConnectivity.hh:54
Handle for a edge entity.
Definition: Handles.hh:128
ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:735
EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter,&PolyConnectivity::halfedges_begin,&PolyConnectivity::halfedges_end > ConstHalfedgeRange
Definition: PolyConnectivity.hh:612
ConstFaceEdgeIter CFEIter
Alias typedef.
Definition: PolyConnectivity.hh:201
HalfedgeIter HIter
Alias typedef.
Definition: PolyConnectivity.hh:175
ConstVertexFaceRange vf_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:759
Face & deref(FaceHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1030
ConstFaceRange faces() const
Definition: PolyConnectivity.hh:646
FaceFaceIter ff_end(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:562
CirculatorRange< const PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle,&PolyConnectivity::cvoh_begin,&PolyConnectivity::cvoh_end > ConstVertexOHalfedgeRange
Definition: PolyConnectivity.hh:685
VertexIter vertices_sbegin()
Begin iterator for vertices.
Definition: PolyConnectivity.hh:359
ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:440
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:512
FaceVertexIter FVIter
Alias typedef.
Definition: PolyConnectivity.hh:189
VertexOHalfedgeIter VOHIter
Alias typedef.
Definition: PolyConnectivity.hh:185
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
Definition: PolyConnectivity.cc:639
VertexFaceIter VFIter
Alias typedef.
Definition: PolyConnectivity.hh:188
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:64
ConstFaceHalfedgeIter CFHIter
Alias typedef.
Definition: PolyConnectivity.hh:200
VertexHandle add_vertex()
Add a new vertex.
Definition: PolyConnectivity.hh:223
ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:446
void assign_connectivity(const PolyConnectivity &_other)
assign_connectivity() method.
Definition: PolyConnectivity.hh:215
Mesh kernel using arrays for mesh item storage.
Definition: ArrayKernel.hh:85
ConstVertexEdgeRange ve_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:751
EdgeHandle EHandle
Alias typedef.
Definition: PolyConnectivity.hh:171
FaceHalfedgeIter fh_begin(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:490
VertexOHalfedgeIter voh_iter(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:401
FaceIter faces_sbegin()
Begin iterator for faces.
Definition: PolyConnectivity.hh:380
CirculatorRange< const PolyConnectivity, ConstFaceFaceIter, FaceHandle,&PolyConnectivity::cff_begin,&PolyConnectivity::cff_end > ConstFaceFaceRange
Definition: PolyConnectivity.hh:721
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:578
FaceEdgeIter FEIter
Alias typedef.
Definition: PolyConnectivity.hh:191
CirculatorRange< const PolyConnectivity, ConstVertexFaceIter, VertexHandle,&PolyConnectivity::cvf_begin,&PolyConnectivity::cvf_end > ConstVertexFaceRange
Definition: PolyConnectivity.hh:697
Vertex & deref(VertexHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1024
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
Definition: PolyConnectivity.hh:820
FaceHandle FHandle
Alias typedef.
Definition: PolyConnectivity.hh:172
ConstEdgeIter edges_sbegin() const
Const begin iterator for edges.
Definition: PolyConnectivity.hh:376
ConstVertexIter CVIter
Alias typedef.
Definition: PolyConnectivity.hh:179
ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
const face - face circulator
Definition: PolyConnectivity.hh:581
ConstEdgeIter CEIter
Alias typedef.
Definition: PolyConnectivity.hh:181
Handle for a face entity.
Definition: Handles.hh:135
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:509
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
Definition: PolyConnectivity.hh:837
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:549
EdgeIter ConstEdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:86
ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:417
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
Definition: PolyConnectivity.hh:195
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:540
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:575
EdgeIter edges_sbegin()
Begin iterator for edges.
Definition: PolyConnectivity.hh:373
FaceVertexIter fv_iter(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:427
Generic class for vertex/halfedge/edge/face ranges.
Definition: PolyConnectivity.hh:594
FaceFaceIter ff_begin(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:496
ConstFaceIter faces_sbegin() const
Const begin iterator for faces.
Definition: PolyConnectivity.hh:383
HalfedgeHandle HHandle
Alias typedef.
Definition: PolyConnectivity.hh:170
VertexIHalfedgeIter VIHIter
Alias typedef.
Definition: PolyConnectivity.hh:186
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:483
FaceEdgeIter fe_iter(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:433
ConstVertexIter vertices_sbegin() const
Const begin iterator for vertices.
Definition: PolyConnectivity.hh:362
ConstHalfedgeRange halfedges() const
Definition: PolyConnectivity.hh:634
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
Definition: PolyConnectivity.hh:366
ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:423
ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:420
ConstFaceFaceIter cff_iter(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:449
ConstFaceVertexRange fv_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:767
VertexIHalfedgeIter vih_begin(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:458
VertexIter VIter
Alias typedef.
Definition: PolyConnectivity.hh:174
Handle for a vertex entity.
Definition: Handles.hh:114
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel,&This::has_edge_status,&This::n_edges > EdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:81
ConstFaceIter CFIter
Alias typedef.
Definition: PolyConnectivity.hh:182
ConstVertexVertexIter cvv_end(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:537
ConstHalfedgeIter halfedges_sbegin() const
Const begin iterator for halfedges.
Definition: PolyConnectivity.hh:369
FaceEdgeIter fe_end(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:559
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:506
VertexFaceIter vf_iter(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:407
VertexVertexIter vv_iter(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:395
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
Definition: PolyConnectivity.hh:196
FaceIter faces_begin()
Begin iterator for faces.
Definition: PolyConnectivity.cc:687
FaceHalfedgeIter FHIter
Alias typedef.
Definition: PolyConnectivity.hh:190
ConstFaceFaceIter CFFIter
Alias typedef.
Definition: PolyConnectivity.hh:202
const Edge & deref(EdgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1027
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1026
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:480
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel,&This::has_halfedge_status,&This::n_halfedges > HalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:80
EdgeIter edges_end()
End iterator for edges.
Definition: PolyConnectivity.cc:675