Developer Documentation
Loading...
Searching...
No Matches
PolyConnectivity_inline_impl.hh
1/* ========================================================================= *
2 * *
3 * OpenMesh *
4 * Copyright (c) 2001-2025, RWTH-Aachen University *
5 * Department of Computer Graphics and Multimedia *
6 * All rights reserved. *
7 * www.openmesh.org *
8 * *
9 *---------------------------------------------------------------------------*
10 * This file is part of OpenMesh. *
11 *---------------------------------------------------------------------------*
12 * *
13 * Redistribution and use in source and binary forms, with or without *
14 * modification, are permitted provided that the following conditions *
15 * are met: *
16 * *
17 * 1. Redistributions of source code must retain the above copyright notice, *
18 * this list of conditions and the following disclaimer. *
19 * *
20 * 2. Redistributions in binary form must reproduce the above copyright *
21 * notice, this list of conditions and the following disclaimer in the *
22 * documentation and/or other materials provided with the distribution. *
23 * *
24 * 3. Neither the name of the copyright holder nor the names of its *
25 * contributors may be used to endorse or promote products derived from *
26 * this software without specific prior written permission. *
27 * *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 * ========================================================================= */
41
42#ifndef OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
43#error Do not include this directly, include instead PolyConnectivity.hh
44#endif // OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
45
46#include <OpenMesh/Core/Mesh/PolyConnectivity.hh> // To help some IDEs
47#include <OpenMesh/Core/Mesh/IteratorsT.hh>
48#include <OpenMesh/Core/Mesh/CirculatorsT.hh>
49
50namespace OpenMesh {
51
52
54
60
61inline SmartHalfedgeHandle PolyConnectivity::s_halfedge_handle(SmartEdgeHandle _eh, unsigned int _i) { return make_smart(ArrayKernel::s_halfedge_handle(EdgeHandle(_eh), _i), _eh.mesh()); }
62inline SmartEdgeHandle PolyConnectivity::s_edge_handle(SmartHalfedgeHandle _heh) { return make_smart(ArrayKernel::s_edge_handle(HalfedgeHandle(_heh)), _heh.mesh()); }
63
64inline SmartHalfedgeHandle PolyConnectivity::halfedge_handle(SmartEdgeHandle _eh, unsigned int _i) const { return make_smart(halfedge_handle(EdgeHandle(_eh), _i), *this); }
68
70
72
73
75template <typename RangeTraitT>
76class EntityRange : public SmartRangeT<EntityRange<RangeTraitT>, typename RangeTraitT::ITER_TYPE::SmartHandle> {
77 public:
78 typedef typename RangeTraitT::ITER_TYPE iterator;
79 typedef typename RangeTraitT::ITER_TYPE const_iterator;
80
81 explicit EntityRange(typename RangeTraitT::CONTAINER_TYPE &container) : container_(&container) {}
82 typename RangeTraitT::ITER_TYPE begin() const { return RangeTraitT::begin(*container_); }
83 typename RangeTraitT::ITER_TYPE end() const { return RangeTraitT::end(*container_); }
84
85 private:
86 typename RangeTraitT::CONTAINER_TYPE *container_;
87};
88
90template <typename CirculatorRangeTraitT>
91//class CirculatorRange : public SmartRangeT<CirculatorRange<CirculatorRangeTraitT>, decltype (make_smart(std::declval<typename CirculatorRangeTraitT::TO_ENTITYE_TYPE>(), std::declval<PolyConnectivity>()))>{
92class CirculatorRange : public SmartRangeT<CirculatorRange<CirculatorRangeTraitT>, typename SmartHandle<typename CirculatorRangeTraitT::TO_ENTITYE_TYPE>::type>{
93 public:
94 typedef typename CirculatorRangeTraitT::ITER_TYPE ITER_TYPE;
95 typedef typename CirculatorRangeTraitT::CENTER_ENTITY_TYPE CENTER_ENTITY_TYPE;
96 typedef typename CirculatorRangeTraitT::CONTAINER_TYPE CONTAINER_TYPE;
97 typedef ITER_TYPE iterator;
98 typedef ITER_TYPE const_iterator;
100 const CONTAINER_TYPE &container,
101 CENTER_ENTITY_TYPE center) :
102 container_(&container), heh_()
103 {
104 auto it = CirculatorRangeTraitT::begin(*container_, center);
105 heh_ = it.heh_;
106 }
107
109 const CONTAINER_TYPE &container,
110 HalfedgeHandle heh, int) :
111 container_(&container), heh_(heh) {}
112
113 ITER_TYPE begin() const { return CirculatorRangeTraitT::begin(*container_, heh_, 1); }
114 ITER_TYPE end() const { return CirculatorRangeTraitT::end(*container_, heh_, 1); }
115
116 private:
117 const CONTAINER_TYPE *container_;
118 HalfedgeHandle heh_;
119};
120
121
130
131template <> inline PolyConnectivity::ConstVertexRangeSkipping PolyConnectivity::elements<VertexHandle>() const { return vertices(); }
132template <> inline PolyConnectivity::ConstVertexRange PolyConnectivity::all_elements<VertexHandle>() const { return all_vertices(); }
133template <> inline PolyConnectivity::ConstHalfedgeRangeSkipping PolyConnectivity::elements<HalfedgeHandle>() const { return halfedges(); }
134template <> inline PolyConnectivity::ConstHalfedgeRange PolyConnectivity::all_elements<HalfedgeHandle>() const { return all_halfedges(); }
135template <> inline PolyConnectivity::ConstEdgeRangeSkipping PolyConnectivity::elements<EdgeHandle>() const { return edges(); }
136template <> inline PolyConnectivity::ConstEdgeRange PolyConnectivity::all_elements<EdgeHandle>() const { return all_edges(); }
137template <> inline PolyConnectivity::ConstFaceRangeSkipping PolyConnectivity::elements<FaceHandle>() const { return faces(); }
138template <> inline PolyConnectivity::ConstFaceRange PolyConnectivity::all_elements<FaceHandle>() const { return all_faces(); }
139
140
144
148
152
156
160
164
168
172
176
180
184
188
192
196
200
204
205
209
213
217
221
225
229
233
237
241
245
249
253
254
255
259
263
267
271
275
279
283
287
291
295
299
300
304
305
306
309
312
315
318
321
324
327
330
333
336
339
342
345
348
351
352
355
358
361
364
367
370
373
376
379
382
385
388
391
394
397
400
403
406
409
412
415
418
421
424
427
430
433
436
439
442
445
448
451
454
457
460
463
466
469
472
475
478
481
484
487
490
493
496
499
502
505
508
511
514
517
520
523
526
529
532
535
538
541
544
547
550
553
556
559
560
563
566
569
572
575
578
581
584
587
590
593
596
599
602
605
606
609
612
615
618
621
624
627
630
633
636
639
642
645
648
651
652
655
658
661
664
667
670
673
676
679
682
685
688
691
694
697
698
701
704
707
710
713
716
719
722
725
728
731
734
737
740
743
744
747
750
753
754
757
760
763
764
765// 'end' circulators
766
769
772
775
778
781
784
787
790
793
796
799
802
805
808
811
812
815
818
821
824
827
830
833
836
839
842
845
848
851
854
857
858
861
864
867
870
873
876
879
882
885
888
891
894
897
900
903
904
907
910
913
916
919
922
925
928
931
934
937
940
943
946
949
950
953
956
959
960
963
966
969
970
971inline PolyConnectivity::ConstVertexFaceRange SmartVertexHandle::faces() const { assert(mesh() != nullptr); return mesh()->vf_range (*this); }
972inline PolyConnectivity::ConstVertexFaceCWRange SmartVertexHandle::faces_cw() const { assert(mesh() != nullptr); return mesh()->vf_cw_range (*this); }
973inline PolyConnectivity::ConstVertexFaceCCWRange SmartVertexHandle::faces_ccw() const { assert(mesh() != nullptr); return mesh()->vf_ccw_range(*this); }
974
975inline PolyConnectivity::ConstVertexEdgeRange SmartVertexHandle::edges() const { assert(mesh() != nullptr); return mesh()->ve_range (*this); }
976inline PolyConnectivity::ConstVertexEdgeCWRange SmartVertexHandle::edges_cw() const { assert(mesh() != nullptr); return mesh()->ve_cw_range (*this); }
977inline PolyConnectivity::ConstVertexEdgeCCWRange SmartVertexHandle::edges_ccw() const { assert(mesh() != nullptr); return mesh()->ve_ccw_range(*this); }
978
979inline PolyConnectivity::ConstVertexVertexRange SmartVertexHandle::vertices() const { assert(mesh() != nullptr); return mesh()->vv_range (*this); }
980inline PolyConnectivity::ConstVertexVertexCWRange SmartVertexHandle::vertices_cw() const { assert(mesh() != nullptr); return mesh()->vv_cw_range (*this); }
982
986
990
994
998
999
1000inline PolyConnectivity::ConstHalfedgeLoopRange SmartHalfedgeHandle::loop() const { assert(mesh() != nullptr); return mesh()->hl_range (*this); }
1001inline PolyConnectivity::ConstHalfedgeLoopCWRange SmartHalfedgeHandle::loop_cw() const { assert(mesh() != nullptr); return mesh()->hl_cw_range (*this); }
1003
1004
1005inline PolyConnectivity::ConstFaceVertexRange SmartFaceHandle::vertices() const { assert(mesh() != nullptr); return mesh()->fv_range (*this); }
1006inline PolyConnectivity::ConstFaceVertexCWRange SmartFaceHandle::vertices_cw() const { assert(mesh() != nullptr); return mesh()->fv_cw_range (*this); }
1008
1009inline PolyConnectivity::ConstFaceHalfedgeRange SmartFaceHandle::halfedges() const { assert(mesh() != nullptr); return mesh()->fh_range (*this); }
1010inline PolyConnectivity::ConstFaceHalfedgeCWRange SmartFaceHandle::halfedges_cw() const { assert(mesh() != nullptr); return mesh()->fh_cw_range (*this); }
1012
1013inline PolyConnectivity::ConstFaceEdgeRange SmartFaceHandle::edges() const { assert(mesh() != nullptr); return mesh()->fe_range (*this); }
1014inline PolyConnectivity::ConstFaceEdgeCWRange SmartFaceHandle::edges_cw() const { assert(mesh() != nullptr); return mesh()->fe_cw_range (*this); }
1015inline PolyConnectivity::ConstFaceEdgeCCWRange SmartFaceHandle::edges_ccw() const { assert(mesh() != nullptr); return mesh()->fe_ccw_range(*this); }
1016
1017inline PolyConnectivity::ConstFaceFaceRange SmartFaceHandle::faces() const { assert(mesh() != nullptr); return mesh()->ff_range (*this); }
1018inline PolyConnectivity::ConstFaceFaceCWRange SmartFaceHandle::faces_cw() const { assert(mesh() != nullptr); return mesh()->ff_cw_range (*this); }
1019inline PolyConnectivity::ConstFaceFaceCCWRange SmartFaceHandle::faces_ccw() const { assert(mesh() != nullptr); return mesh()->ff_ccw_range(*this); }
1020
1021
1022inline PolyConnectivity::ConstEdgeVertexRange SmartEdgeHandle::vertices() const { assert(mesh() != nullptr); return mesh()->ev_range (*this); }
1023
1024inline PolyConnectivity::ConstEdgeHalfedgeRange SmartEdgeHandle::halfedges() const { assert(mesh() != nullptr); return mesh()->eh_range (*this); }
1025
1026inline PolyConnectivity::ConstEdgeHalfedgeRange SmartEdgeHandle::halfedges(HalfedgeHandle _heh) const { assert(mesh() != nullptr); return mesh()->eh_range (_heh); }
1027
1028inline PolyConnectivity::ConstEdgeFaceRange SmartEdgeHandle::faces() const { assert(mesh() != nullptr); return mesh()->ef_range (*this); }
1029
1030}//namespace OpenMesh
size_t n_vertices() const override
size_t n_edges() const override
VertexHandle new_vertex()
Add a new vertex.
size_t n_faces() const override
size_t n_halfedges() const override
Generic class for iterator ranges.
Generic class for vertex/halfedge/edge/face ranges.
ConstFaceHalfedgeCWRange fh_cw_range(FaceHandle _fh) const
ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
const vertex circulator cw
FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh)
face - halfedge circulator cw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_begin, &PolyConnectivity::cvv_end > > ConstVertexVertexRange
EdgeIter edges_end()
End iterator for edges.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > > ConstFaceVertexRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeCWIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_cwbegin, &PolyConnectivity::cfh_cwend > > ConstFaceHalfedgeCWRange
VertexVertexIter vv_begin(VertexHandle _vh)
vertex - vertex circulator
EdgeIter ConstEdgeIter
Linear iterator.
ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const
const face - face circulator
VertexVertexCCWIter vv_ccwiter(VertexHandle _vh)
vertex - vertex circulator ccw
VertexVertexIter vv_end(VertexHandle _vh)
vertex - vertex circulator
Iterators::GenericCirculatorT< VertexEdgeTraits, false > VertexEdgeCCWIter
FaceEdgeCWIter fe_cwiter(FaceHandle _fh)
face - edge circulator cw
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
FaceFaceCCWIter ff_ccwiter(FaceHandle _fh)
face - face circulator ccw
EdgeVertexIter ev_begin(EdgeHandle _eh)
edge - vertex circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceCWIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_cwbegin, &PolyConnectivity::cff_cwend > > ConstFaceFaceCWRange
HalfedgeIter halfedges_end()
End iterator for halfedges.
VertexFaceIter vf_begin(VertexHandle _vh)
vertex - face circulator
ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const
const face - edge circulator cw
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
ConstEdgeFaceRange ef_range(EdgeHandle _eh) const
FaceFaceCWIter ff_cwiter(FaceHandle _fh)
face - face circulator cw
VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
ConstHalfedgeLoopRange hl_range(HalfedgeHandle _heh) const
VertexFaceCWIter vf_cwbegin(VertexHandle _vh)
vertex - face circulator cw
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh)
face - edge circulator ccw
ConstVertexVertexCWRange vv_cw_range(VertexHandle _vh) const
ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
const vertex circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeCCWIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_ccwbegin, &PolyConnectivity::cfh_ccwend > > ConstFaceHalfedgeCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_ccwbegin, &PolyConnectivity::cvv_ccwend > > ConstVertexVertexCCWRange
FaceHalfedgeCWIter fh_cwend(FaceHandle _fh)
face - halfedge circulator cw
VertexIHalfedgeIter ConstVertexIHalfedgeIter
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
VertexEdgeCWIter ve_cwbegin(VertexHandle _vh)
vertex - edge circulator cw
ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Iterators::GenericCirculatorT< VertexVertexTraits, false > VertexVertexCCWIter
VertexIter vertices_sbegin()
Begin iterator for vertices.
FaceHalfedgeIter fh_end(FaceHandle _fh)
face - halfedge circulator
VertexFaceCWIter vf_cwiter(VertexHandle _vh)
vertex - face circulator cw
ConstEdgeFaceIter cef_begin(EdgeHandle _eh) const
const edge - face circulator
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const
const face - face circulator
Iterators::GenericCirculatorT< FaceVertexTraits, false > FaceVertexCWIter
FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh)
face - halfedge circulator ccw
HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh)
halfedge circulator ccw
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
SmartHalfedgeHandle opposite_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
const face - halfedge circulator
ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const
const face - face circulator ccw
ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const
const face - halfedge circulator cw
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
EdgeIter edges_sbegin()
Begin iterator for edges.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > > ConstVertexVertexCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeCCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_ccwbegin, &PolyConnectivity::cvoh_ccwend > > ConstVertexOHalfedgeCCWRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > > ConstEdgeRangeSkipping
VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh)
vertex - incoming halfedge circulator cw
EdgeIter edges_begin()
Begin iterator for edges.
FaceVertexCWIter fv_cwiter(FaceHandle _fh)
face - vertex circulator cw
ConstFaceFaceRange ff_range(FaceHandle _fh) const
ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
static SmartEdgeHandle s_edge_handle(SmartHalfedgeHandle _heh)
returns the face handle of the opposite halfedge
ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const
const vertex - edge circulator ccw
ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
const vertex circulator cw
ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopCCWIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_ccwbegin, &PolyConnectivity::chl_ccwend > > ConstHalfedgeLoopCCWRange
FaceVertexIter fv_begin(FaceHandle _fh)
face - vertex circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexCWIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_cwbegin, &PolyConnectivity::cfv_cwend > > ConstFaceVertexCWRange
VertexEdgeCWIter ve_cwend(VertexHandle _vh)
vertex - edge circulator cw
FaceVertexCCWIter fv_ccwiter(FaceHandle _fh)
face - vertex circulator ccw
ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const
const vertex circulator ccw
EdgeVertexIter ev_iter(EdgeHandle _eh)
edge - vertex circulator
ConstEdgeVertexIter cev_begin(EdgeHandle _eh) const
const edge - vertex circulator
HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh)
halfedge circulator
FaceFaceCWIter ff_cwend(FaceHandle _fh)
face - face circulator cw
VertexVertexCCWIter ConstVertexVertexCCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > > ConstVertexIHalfedgeRange
FaceFaceIter ff_iter(FaceHandle _fh)
face - face circulator
ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
const face - face circulator
FaceVertexCWIter fv_cwend(FaceHandle _fh)
face - vertex circulator cw
ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const
const face - face circulator cw
Iterators::GenericIteratorT< This, This::VertexHandle, ArrayKernel, &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices > VertexIter
Linear iterator.
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > > ConstFaceRange
VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const
const face - face circulator ccw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceCCWIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_ccwbegin, &PolyConnectivity::cff_ccwend > > ConstFaceFaceCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_cwbegin, &PolyConnectivity::cvih_cwend > > ConstVertexIHalfedgeCWRange
ConstHalfedgeLoopCCWRange hl_ccw_range(HalfedgeHandle _heh) const
ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const
const face - halfedge circulator ccw
HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
halfedge circulator
Iterators::GenericCirculatorT_DEPRECATED< VertexOppositeHalfedgeTraits > VertexIHalfedgeIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > > ConstVertexRange
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
ConstFaceEdgeRange fe_range(FaceHandle _fh) const
VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Iterators::GenericCirculatorT_DEPRECATED< VertexVertexTraits > VertexVertexIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_cwbegin, &PolyConnectivity::cvoh_cwend > > ConstVertexOHalfedgeCWRange
ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const
const face - edge circulator cw
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
SmartHalfedgeHandle prev_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const
const vertex - face circulator cw
FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh)
face - vertex circulator ccw
ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
const face - vertex circulator
VertexOHalfedgeIter voh_begin(VertexHandle _vh)
vertex - outgoing halfedge circulator
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > FaceHalfedgeIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > > ConstFaceEdgeRange
Iterators::GenericCirculatorT_DEPRECATED< VertexHalfedgeTraits > VertexOHalfedgeIter
ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const
const face - edge circulator ccw
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
ConstFaceFaceCWRange ff_cw_range(FaceHandle _fh) const
HalfedgeLoopIter ConstHalfedgeLoopIter
ConstVertexIHalfedgeCWRange vih_cw_range(VertexHandle _vh) const
ConstFaceFaceIter cff_iter(FaceHandle _fh) const
const face - face circulator
ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const
const vertex - face circulator ccw
ConstEdgeHalfedgeIter ceh_end(EdgeHandle _eh) const
const edge - halfedge circulator
ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const
const face - vertex circulator ccw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_begin, &PolyConnectivity::chl_end > > ConstHalfedgeLoopRange
ConstVertexEdgeCCWRange ve_ccw_range(VertexHandle _vh) const
ConstEdgeHalfedgeIter ceh_begin(EdgeHandle _eh) const
const edge - halfedge circulator
ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeCWIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_cwbegin, &PolyConnectivity::cve_cwend > > ConstVertexEdgeCWRange
EdgeFaceIter ef_begin(EdgeHandle _eh)
edge - face circulator
ConstHalfedgeRange all_halfedges() const
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeCCWIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_ccwbegin, &PolyConnectivity::cve_ccwend > > ConstVertexEdgeCCWRange
VertexVertexCWIter vv_cwbegin(VertexHandle _vh)
vertex - vertex circulator cw
VertexIter ConstVertexIter
Linear iterator.
ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const
const vertex circulator ccw
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
Iterators::GenericCirculatorT_DEPRECATED< VertexEdgeTraits > VertexEdgeIter
VertexVertexIter vv_iter(VertexHandle _vh)
vertex - vertex circulator
ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
ConstEdgeRangeSkipping edges() const
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeCWIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_cwbegin, &PolyConnectivity::cfe_cwend > > ConstFaceEdgeCWRange
EdgeVertexIter ev_end(EdgeHandle _eh)
edge - vertex circulator
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
VertexFaceCWIter ConstVertexFaceCWIter
ConstVertexFaceCWRange vf_cw_range(VertexHandle _vh) const
VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator cw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > > ConstVertexEdgeRange
ConstEdgeFaceIter cef_end(EdgeHandle _eh) const
const edge - face circulator
VertexIHalfedgeIter vih_end(VertexHandle _vh)
vertex - incoming halfedge circulator
ConstVertexEdgeRange ve_range(VertexHandle _vh) const
ConstVertexOHalfedgeCWRange voh_cw_range(VertexHandle _vh) const
Iterators::GenericCirculatorT_DEPRECATED< EdgeHalfedgeTraits > EdgeHalfedgeIter
ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const
const face - edge circulator ccw
ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const
const vertex - face circulator ccw
ConstFaceEdgeCCWRange fe_ccw_range(FaceHandle _fh) const
VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh)
vertex - edge circulator ccw
VertexEdgeCCWIter ve_ccwend(VertexHandle _vh)
vertex - edge circulator ccw
static SmartHalfedgeHandle s_halfedge_handle(SmartEdgeHandle _eh, unsigned int _i=0)
returns the face handle of the opposite halfedge
VertexEdgeIter ve_end(VertexHandle _vh)
vertex - edge circulator
ConstFaceEdgeCWRange fe_cw_range(FaceHandle _fh) const
ConstHalfedgeLoopCWRange hl_cw_range(HalfedgeHandle _heh) const
FaceIter faces_sbegin()
Begin iterator for faces.
Iterators::GenericCirculatorT< VertexHalfedgeTraits, false > VertexOHalfedgeCCWIter
FaceVertexIter fv_end(FaceHandle _fh)
face - vertex circulator
VertexFaceCCWIter vf_ccwend(VertexHandle _vh)
vertex - face circulator ccw
Iterators::GenericCirculatorT_DEPRECATED< VertexFaceTraits > VertexFaceIter
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
ConstEdgeVertexRange ev_range(EdgeHandle _eh) const
ConstVertexIHalfedgeCCWRange vih_ccw_range(VertexHandle _vh) const
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
SmartHalfedgeHandle next_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
EdgeHalfedgeIter ConstEdgeHalfedgeIter
ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
const vertex - edge circulator
ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const
const face - face circulator cw
VertexFaceCWIter vf_cwend(VertexHandle _vh)
vertex - face circulator cw
ConstEdgeVertexIter cev_end(EdgeHandle _eh) const
const edge - vertex circulator
ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
const face - edge circulator
ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const
const face - vertex circulator ccw
FaceEdgeCWIter fe_cwbegin(FaceHandle _fh)
face - edge circulator cw
VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh)
vertex - incoming halfedge circulator cw
FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh)
face - halfedge circulator ccw
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > HalfedgeLoopCCWIter
FaceFaceCWIter ff_cwbegin(FaceHandle _fh)
face - face circulator cw
Iterators::GenericCirculatorT< FaceFaceTraits, true > FaceFaceCCWIter
SmartHalfedgeHandle ccw_rotated_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const
const face - face circulator
HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
face - face circulator
EdgeHalfedgeIter eh_begin(EdgeHandle _eh)
edge - halfedge circulator
ConstVertexFaceCCWRange vf_ccw_range(VertexHandle _vh) const
VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const
const vertex - edge circulator cw
VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh)
vertex - edge circulator ccw
VertexOHalfedgeIter voh_iter(VertexHandle _vh)
vertex - outgoing halfedge circulator
ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const
const face - vertex circulator cw
ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
ConstHalfedgeRangeSkipping halfedges() const
ConstVertexEdgeCWRange ve_cw_range(VertexHandle _vh) const
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > HalfedgeLoopIter
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > > ConstEdgeRange
FaceEdgeIter fe_begin(FaceHandle _fh)
face - edge circulator
VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
EdgeFaceIter ef_iter(EdgeHandle _eh)
edge - face circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeCCWIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_ccwbegin, &PolyConnectivity::cfe_ccwend > > ConstFaceEdgeCCWRange
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
FaceEdgeIter fe_end(FaceHandle _fh)
face - edge circulator
FaceFaceIter ff_end(FaceHandle _fh)
face - face circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRangeSkipping
SmartFaceHandle face_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
FaceHalfedgeIter ConstFaceHalfedgeIter
ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const
const vertex - face circulator ccw
Iterators::GenericCirculatorT_DEPRECATED< FaceVertexTraits > FaceVertexIter
ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const
const vertex circulator ccw
VertexOHalfedgeIter voh_end(VertexHandle _vh)
vertex - outgoing halfedge circulator
FaceEdgeIter fe_iter(FaceHandle _fh)
face - edge circulator
VertexIter vertices_begin()
Begin iterator for vertices.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceCWIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_cwbegin, &PolyConnectivity::cvf_cwend > > ConstVertexFaceCWRange
Iterators::GenericCirculatorT< VertexFaceTraits, true > VertexFaceCWIter
HalfedgeIter ConstHalfedgeIter
Linear iterator.
ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const
const vertex - edge circulator ccw
ConstEdgeFaceIter cef_iter(EdgeHandle _eh) const
const edge - face circulator
ConstFaceVertexRange fv_range(FaceHandle _fh) const
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
const vertex - face circulator
ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const
const face - face circulator cw
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, false > VertexIHalfedgeCCWIter
FaceVertexCCWIter ConstFaceVertexCCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > > ConstVertexOHalfedgeRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstEdgeHalfedgeIter, EdgeHandle, HalfedgeHandle, &PolyConnectivity::ceh_begin, &PolyConnectivity::ceh_end > > ConstEdgeHalfedgeRange
ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const
const face - halfedge circulator ccw
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > > ConstVertexRangeSkipping
Iterators::GenericCirculatorT< VertexEdgeTraits, true > VertexEdgeCWIter
EdgeHalfedgeIter eh_end(EdgeHandle _eh)
edge - halfedge circulator
ConstVertexVertexIter cvv_end(VertexHandle _vh) const
const vertex circulator
VertexVertexCCWIter vv_ccwend(VertexHandle _vh)
vertex - vertex circulator ccw
ConstFaceFaceCCWRange ff_ccw_range(FaceHandle _fh) const
ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const
SmartVertexHandle add_vertex()
Add a new vertex.
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
ConstEdgeVertexIter cev_iter(EdgeHandle _eh) const
const edge - vertex circulator
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > FaceHalfedgeCCWIter
ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const
const vertex - edge circulator ccw
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, true > VertexIHalfedgeCWIter
FaceIter faces_end()
End iterator for faces.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > > ConstVertexFaceRange
FaceVertexCWIter fv_cwbegin(FaceHandle _fh)
face - vertex circulator cw
ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const
const face - halfedge circulator cw
FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh)
face - edge circulator ccw
ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeCCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_ccwbegin, &PolyConnectivity::cvih_ccwend > > ConstVertexIHalfedgeCCWRange
Iterators::GenericCirculatorT< FaceVertexTraits, true > FaceVertexCCWIter
ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
const halfedge circulator
FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh)
face - halfedge circulator ccw
ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
VertexFaceCCWIter ConstVertexFaceCCWIter
ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const
const face - edge circulator cw
ConstVertexVertexCCWRange vv_ccw_range(VertexHandle _vh) const
ConstFaceRangeSkipping faces() const
FaceFaceIter ff_begin(FaceHandle _fh)
face - face circulator
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
VertexOHalfedgeIter ConstVertexOHalfedgeIter
VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh)
vertex - vertex circulator ccw
VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh)
vertex - face circulator ccw
FaceIter ConstFaceIter
Linear iterator.
ConstVertexRangeSkipping vertices() const
FaceVertexCCWIter fv_ccwend(FaceHandle _fh)
face - vertex circulator ccw
ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const
const vertex - face circulator cw
ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const
const vertex circulator cw
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
VertexEdgeCWIter ConstVertexEdgeCWIter
Iterators::GenericCirculatorT< VertexVertexTraits, true > VertexVertexCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstEdgeFaceIter, EdgeHandle, FaceHandle, &PolyConnectivity::cef_begin, &PolyConnectivity::cef_end > > ConstEdgeFaceRange
SmartEdgeHandle edge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
VertexFaceCCWIter vf_ccwiter(VertexHandle _vh)
vertex - face circulator ccw
VertexVertexCWIter vv_cwiter(VertexHandle _vh)
vertex - vertex circulator cw
ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
VertexEdgeIter ve_begin(VertexHandle _vh)
vertex - edge circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRange
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > FaceHalfedgeCWIter
ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const
const halfedge circulator cw
VertexVertexCWIter ConstVertexVertexCWIter
ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const
ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const
const vertex - edge circulator cw
ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const
const halfedge circulator ccw
VertexEdgeCCWIter ConstVertexEdgeCCWIter
ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const
const face - vertex circulator ccw
VertexVertexIter ConstVertexVertexIter
ConstVertexOHalfedgeCCWRange voh_ccw_range(VertexHandle _vh) const
SmartFaceHandle opposite_face_handle(HalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
FaceFaceCCWIter ff_ccwend(FaceHandle _fh)
face - face circulator ccw
ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Iterators::GenericCirculatorT_DEPRECATED< FaceFaceTraits > FaceFaceIter
SmartHalfedgeHandle cw_rotated_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > > ConstFaceHalfedgeRange
Iterators::GenericCirculatorT_DEPRECATED< EdgeFaceTraits > EdgeFaceIter
HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh)
face - face circulator cw
FaceEdgeCCWIter fe_ccwend(FaceHandle _fh)
face - edge circulator ccw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstEdgeVertexIter, EdgeHandle, VertexHandle, &PolyConnectivity::cev_begin, &PolyConnectivity::cev_end > > ConstEdgeVertexRange
ConstFaceHalfedgeCCWRange fh_ccw_range(FaceHandle _fh) const
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > HalfedgeLoopCWIter
ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const
const face - vertex circulator cw
Iterators::GenericCirculatorT< FaceFaceTraits, false > FaceFaceCWIter
VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh)
face - face circulator ccw
VertexIHalfedgeIter vih_iter(VertexHandle _vh)
vertex - incoming halfedge circulator
Iterators::GenericCirculatorT_DEPRECATED< FaceEdgeTraits > FaceEdgeIter
ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
const vertex circulator
VertexIter vertices_end()
End iterator for vertices.
Iterators::GenericCirculatorT< FaceEdgeTraits, false > FaceEdgeCWIter
ConstEdgeHalfedgeIter ceh_iter(EdgeHandle _eh) const
const edge - halfedge circulator
Iterators::GenericCirculatorT_DEPRECATED< EdgeVertexTraits > EdgeVertexIter
Iterators::GenericCirculatorT< VertexFaceTraits, false > VertexFaceCCWIter
FaceHalfedgeIter fh_iter(FaceHandle _fh)
face - halfedge circulator
FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh)
face - halfedge circulator cw
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
VertexEdgeIter ve_iter(VertexHandle _vh)
vertex - edge circulator
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > > ConstFaceFaceRange
FaceIter faces_begin()
Begin iterator for faces.
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopCWIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_cwbegin, &PolyConnectivity::chl_cwend > > ConstHalfedgeLoopCWRange
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
ConstEdgeHalfedgeRange eh_range(EdgeHandle _eh) const
FaceHalfedgeIter fh_begin(FaceHandle _fh)
face - halfedge circulator
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
Iterators::GenericCirculatorT< FaceEdgeTraits, true > FaceEdgeCCWIter
ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const
const face - edge circulator ccw
ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const
const face - halfedge circulator cw
ConstFaceVertexCWRange fv_cw_range(FaceHandle _fh) const
ConstVertexVertexRange vv_range(VertexHandle _vh) const
HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh)
face - face circulator ccw
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceCCWIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_ccwbegin, &PolyConnectivity::cvf_ccwend > > ConstVertexFaceCCWRange
ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const
const face - vertex circulator cw
FaceVertexIter fv_iter(FaceHandle _fh)
face - vertex circulator
VertexEdgeCWIter ve_cwiter(VertexHandle _vh)
vertex - edge circulator cw
ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const
const face - halfedge circulator ccw
VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const
const vertex - face circulator cw
FaceEdgeCWIter fe_cwend(FaceHandle _fh)
face - edge circulator cw
ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
const vertex - incoming halfedge circulator
EdgeHalfedgeIter eh_iter(EdgeHandle _eh)
edge - halfedge circulator
EdgeFaceIter ef_end(EdgeHandle _eh)
edge - face circulator
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > > ConstFaceRangeSkipping
VertexIHalfedgeIter vih_begin(VertexHandle _vh)
vertex - incoming halfedge circulator
VertexFaceIter vf_end(VertexHandle _vh)
vertex - face circulator
VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
SmartHalfedgeHandle halfedge_handle(SmartEdgeHandle _eh, unsigned int _i=0) const
returns the face handle of the opposite halfedge
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexCCWIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_ccwbegin, &PolyConnectivity::cfv_ccwend > > ConstFaceVertexCCWRange
VertexVertexCWIter vv_cwend(VertexHandle _vh)
vertex - vertex circulator cw
VertexFaceIter vf_iter(VertexHandle _vh)
vertex - face circulator
ConstFaceVertexCCWRange fv_ccw_range(FaceHandle _fh) const
ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const
const vertex - edge circulator cw
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
FaceVertexCWIter ConstFaceVertexCWIter
Iterators::GenericCirculatorT< VertexHalfedgeTraits, true > VertexOHalfedgeCWIter
ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
ConstVertexFaceRange vf_range(VertexHandle _vh) const
const PolyConnectivity * mesh() const
Get the underlying mesh of this handle.
SmartVertexHandle make_smart(VertexHandle _vh, const PolyConnectivity *_mesh)
Creats a SmartVertexHandle from a VertexHandle and a Mesh.
Handle for a edge entity.
Definition Handles.hh:135
Handle for a face entity.
Definition Handles.hh:142
Handle for a halfedge entity.
Definition Handles.hh:128
PolyConnectivity::ConstEdgeHalfedgeRange halfedges() const
Returns a range of halfedges of the edge (PolyConnectivity::eh_range())
PolyConnectivity::ConstEdgeFaceRange faces() const
Returns a range of faces incident to the edge (PolyConnectivity::ef_range())
PolyConnectivity::ConstEdgeVertexRange vertices() const
Returns a range of vertices incident to the edge (PolyConnectivity::ev_range())
PolyConnectivity::ConstFaceFaceCWRange faces_cw() const
Returns a range adjacent faces of the face (PolyConnectivity::ff_cw_range())
PolyConnectivity::ConstFaceEdgeRange edges() const
Returns a range of edges of the face (PolyConnectivity::fv_range())
PolyConnectivity::ConstFaceHalfedgeCWRange halfedges_cw() const
Returns a range of halfedges of the face (PolyConnectivity::fh_cw_range())
PolyConnectivity::ConstFaceFaceRange faces() const
Returns a range adjacent faces of the face (PolyConnectivity::ff_range())
PolyConnectivity::ConstFaceVertexRange vertices() const
Returns a range of vertices incident to the face (PolyConnectivity::fv_range())
PolyConnectivity::ConstFaceFaceCCWRange faces_ccw() const
Returns a range adjacent faces of the face (PolyConnectivity::ff_ccw_range())
PolyConnectivity::ConstFaceEdgeCCWRange edges_ccw() const
Returns a range of edges of the face (PolyConnectivity::fv_ccw_range())
PolyConnectivity::ConstFaceEdgeCWRange edges_cw() const
Returns a range of edges of the face (PolyConnectivity::fv_cw_range())
PolyConnectivity::ConstFaceHalfedgeCCWRange halfedges_ccw() const
Returns a range of halfedges of the face (PolyConnectivity::fh_ccw_range())
PolyConnectivity::ConstFaceHalfedgeRange halfedges() const
Returns a range of halfedges of the face (PolyConnectivity::fh_range())
PolyConnectivity::ConstFaceVertexCWRange vertices_cw() const
Returns a range of vertices incident to the face (PolyConnectivity::fv_cw_range())
PolyConnectivity::ConstFaceVertexCCWRange vertices_ccw() const
Returns a range of vertices incident to the face (PolyConnectivity::fv_ccw_range())
PolyConnectivity::ConstHalfedgeLoopRange loop() const
Returns a range of halfedges in the face of the halfedge (or along the boundary) (PolyConnectivity::h...
PolyConnectivity::ConstHalfedgeLoopCCWRange loop_ccw() const
Returns a range of halfedges in the face of the halfedge (or along the boundary) (PolyConnectivity::h...
PolyConnectivity::ConstHalfedgeLoopCWRange loop_cw() const
Returns a range of halfedges in the face of the halfedge (or along the boundary) (PolyConnectivity::h...
Base class for all smart range types.
Definition SmartRange.hh:74
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
PolyConnectivity::ConstVertexEdgeCWRange edges_cw() const
Returns a range of edges incident to the vertex (PolyConnectivity::ve_cw_range())
PolyConnectivity::ConstVertexFaceCWRange faces_cw() const
Returns a range of faces incident to the vertex (PolyConnectivity::vf_cw_range())
PolyConnectivity::ConstVertexIHalfedgeRange incoming_halfedges() const
Returns a range of outgoing halfedges incident to the vertex (PolyConnectivity::voh_range())
PolyConnectivity::ConstVertexIHalfedgeCWRange incoming_halfedges_cw() const
Returns a range of outgoing halfedges incident to the vertex (PolyConnectivity::voh_cw_range())
PolyConnectivity::ConstVertexVertexCCWRange vertices_ccw() const
Returns a range of vertices adjacent to the vertex (PolyConnectivity::vv_ccw_range())
PolyConnectivity::ConstVertexVertexCWRange vertices_cw() const
Returns a range of vertices adjacent to the vertex (PolyConnectivity::vv_cw_range())
PolyConnectivity::ConstVertexVertexRange vertices() const
Returns a range of vertices adjacent to the vertex (PolyConnectivity::vv_range())
PolyConnectivity::ConstVertexEdgeCCWRange edges_ccw() const
Returns a range of edges incident to the vertex (PolyConnectivity::ve_ccw_range())
PolyConnectivity::ConstVertexIHalfedgeCCWRange incoming_halfedges_ccw() const
Returns a range of outgoing halfedges incident to the vertex (PolyConnectivity::voh_ccw_range())
PolyConnectivity::ConstVertexFaceRange faces() const
Returns a range of faces incident to the vertex (PolyConnectivity::vf_range())
PolyConnectivity::ConstVertexOHalfedgeRange outgoing_halfedges() const
Returns a range of incoming halfedges incident to the vertex (PolyConnectivity::voh_range())
PolyConnectivity::ConstVertexOHalfedgeCWRange outgoing_halfedges_cw() const
Returns a range of incoming halfedges incident to the vertex (PolyConnectivity::voh_cw_range())
PolyConnectivity::ConstVertexFaceCCWRange faces_ccw() const
Returns a range of faces incident to the vertex (PolyConnectivity::vf_ccw_range())
PolyConnectivity::ConstVertexOHalfedgeCCWRange outgoing_halfedges_ccw() const
Returns a range of incoming halfedges incident to the vertex (PolyConnectivity::voh_ccw_range())
PolyConnectivity::ConstVertexEdgeRange edges() const
Returns a range of edges incident to the vertex (PolyConnectivity::ve_range())
Handle for a vertex entity.
Definition Handles.hh:121