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;
99
101 const CONTAINER_TYPE &container,
102 CENTER_ENTITY_TYPE center) :
103 container_(container), heh_()
104 {
105 auto it = CirculatorRangeTraitT::begin(container_, center);
106 heh_ = it.heh_;
107 }
108
110 const CONTAINER_TYPE &container,
111 HalfedgeHandle heh, int) :
112 container_(container), heh_(heh) {}
113
114 ITER_TYPE begin() const { return CirculatorRangeTraitT::begin(container_, heh_, 1); }
115 ITER_TYPE end() const { return CirculatorRangeTraitT::end(container_, heh_, 1); }
116
117 private:
118 const CONTAINER_TYPE &container_;
119 HalfedgeHandle heh_;
120};
121
122
131
132template <> inline PolyConnectivity::ConstVertexRangeSkipping PolyConnectivity::elements<VertexHandle>() const { return vertices(); }
133template <> inline PolyConnectivity::ConstVertexRange PolyConnectivity::all_elements<VertexHandle>() const { return all_vertices(); }
134template <> inline PolyConnectivity::ConstHalfedgeRangeSkipping PolyConnectivity::elements<HalfedgeHandle>() const { return halfedges(); }
135template <> inline PolyConnectivity::ConstHalfedgeRange PolyConnectivity::all_elements<HalfedgeHandle>() const { return all_halfedges(); }
136template <> inline PolyConnectivity::ConstEdgeRangeSkipping PolyConnectivity::elements<EdgeHandle>() const { return edges(); }
137template <> inline PolyConnectivity::ConstEdgeRange PolyConnectivity::all_elements<EdgeHandle>() const { return all_edges(); }
138template <> inline PolyConnectivity::ConstFaceRangeSkipping PolyConnectivity::elements<FaceHandle>() const { return faces(); }
139template <> inline PolyConnectivity::ConstFaceRange PolyConnectivity::all_elements<FaceHandle>() const { return all_faces(); }
140
141
145
149
153
157
161
165
169
173
177
181
185
189
193
197
201
205
206
210
214
218
222
226
230
234
238
242
246
250
254
255
256
260
264
268
272
276
280
284
288
292
296
300
301
305
306
307
310
313
316
319
322
325
328
331
334
337
340
343
346
349
352
353
356
359
362
365
368
371
374
377
380
383
386
389
392
395
398
401
404
407
410
413
416
419
422
425
428
431
434
437
440
443
446
449
452
455
458
461
464
467
470
473
476
479
482
485
488
491
494
497
500
503
506
509
512
515
518
521
524
527
530
533
536
539
542
545
548
551
554
557
560
561
564
567
570
573
576
579
582
585
588
591
594
597
600
603
606
607
610
613
616
619
622
625
628
631
634
637
640
643
646
649
652
653
656
659
662
665
668
671
674
677
680
683
686
689
692
695
698
699
702
705
708
711
714
717
720
723
726
729
732
735
738
741
744
745
748
751
754
755
758
761
764
765
766// 'end' circulators
767
770
773
776
779
782
785
788
791
794
797
800
803
806
809
812
813
816
819
822
825
828
831
834
837
840
843
846
849
852
855
858
859
862
865
868
871
874
877
880
883
886
889
892
895
898
901
904
905
908
911
914
917
920
923
926
929
932
935
938
941
944
947
950
951
954
957
960
961
964
967
970
971
972inline PolyConnectivity::ConstVertexFaceRange SmartVertexHandle::faces() const { assert(mesh() != nullptr); return mesh()->vf_range (*this); }
973inline PolyConnectivity::ConstVertexFaceCWRange SmartVertexHandle::faces_cw() const { assert(mesh() != nullptr); return mesh()->vf_cw_range (*this); }
974inline PolyConnectivity::ConstVertexFaceCCWRange SmartVertexHandle::faces_ccw() const { assert(mesh() != nullptr); return mesh()->vf_ccw_range(*this); }
975
976inline PolyConnectivity::ConstVertexEdgeRange SmartVertexHandle::edges() const { assert(mesh() != nullptr); return mesh()->ve_range (*this); }
977inline PolyConnectivity::ConstVertexEdgeCWRange SmartVertexHandle::edges_cw() const { assert(mesh() != nullptr); return mesh()->ve_cw_range (*this); }
978inline PolyConnectivity::ConstVertexEdgeCCWRange SmartVertexHandle::edges_ccw() const { assert(mesh() != nullptr); return mesh()->ve_ccw_range(*this); }
979
980inline PolyConnectivity::ConstVertexVertexRange SmartVertexHandle::vertices() const { assert(mesh() != nullptr); return mesh()->vv_range (*this); }
981inline PolyConnectivity::ConstVertexVertexCWRange SmartVertexHandle::vertices_cw() const { assert(mesh() != nullptr); return mesh()->vv_cw_range (*this); }
983
987
991
995
999
1000
1001inline PolyConnectivity::ConstHalfedgeLoopRange SmartHalfedgeHandle::loop() const { assert(mesh() != nullptr); return mesh()->hl_range (*this); }
1002inline PolyConnectivity::ConstHalfedgeLoopCWRange SmartHalfedgeHandle::loop_cw() const { assert(mesh() != nullptr); return mesh()->hl_cw_range (*this); }
1004
1005
1006inline PolyConnectivity::ConstFaceVertexRange SmartFaceHandle::vertices() const { assert(mesh() != nullptr); return mesh()->fv_range (*this); }
1007inline PolyConnectivity::ConstFaceVertexCWRange SmartFaceHandle::vertices_cw() const { assert(mesh() != nullptr); return mesh()->fv_cw_range (*this); }
1009
1010inline PolyConnectivity::ConstFaceHalfedgeRange SmartFaceHandle::halfedges() const { assert(mesh() != nullptr); return mesh()->fh_range (*this); }
1011inline PolyConnectivity::ConstFaceHalfedgeCWRange SmartFaceHandle::halfedges_cw() const { assert(mesh() != nullptr); return mesh()->fh_cw_range (*this); }
1013
1014inline PolyConnectivity::ConstFaceEdgeRange SmartFaceHandle::edges() const { assert(mesh() != nullptr); return mesh()->fe_range (*this); }
1015inline PolyConnectivity::ConstFaceEdgeCWRange SmartFaceHandle::edges_cw() const { assert(mesh() != nullptr); return mesh()->fe_cw_range (*this); }
1016inline PolyConnectivity::ConstFaceEdgeCCWRange SmartFaceHandle::edges_ccw() const { assert(mesh() != nullptr); return mesh()->fe_ccw_range(*this); }
1017
1018inline PolyConnectivity::ConstFaceFaceRange SmartFaceHandle::faces() const { assert(mesh() != nullptr); return mesh()->ff_range (*this); }
1019inline PolyConnectivity::ConstFaceFaceCWRange SmartFaceHandle::faces_cw() const { assert(mesh() != nullptr); return mesh()->ff_cw_range (*this); }
1020inline PolyConnectivity::ConstFaceFaceCCWRange SmartFaceHandle::faces_ccw() const { assert(mesh() != nullptr); return mesh()->ff_ccw_range(*this); }
1021
1022
1023inline PolyConnectivity::ConstEdgeVertexRange SmartEdgeHandle::vertices() const { assert(mesh() != nullptr); return mesh()->ev_range (*this); }
1024
1025inline PolyConnectivity::ConstEdgeHalfedgeRange SmartEdgeHandle::halfedges() const { assert(mesh() != nullptr); return mesh()->eh_range (*this); }
1026
1027inline PolyConnectivity::ConstEdgeHalfedgeRange SmartEdgeHandle::halfedges(HalfedgeHandle _heh) const { assert(mesh() != nullptr); return mesh()->eh_range (_heh); }
1028
1029inline PolyConnectivity::ConstEdgeFaceRange SmartEdgeHandle::faces() const { assert(mesh() != nullptr); return mesh()->ef_range (*this); }
1030
1031}//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