OpenMesh: OpenMesh/Core/Mesh/PolyConnectivity.hh Source File

| OpenMesh

PolyConnectivity.hh
1 /* ========================================================================= *
2 * *
3 * OpenMesh *
4 * Copyright (c) 2001-2022, 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
43
44 #ifndef OPENMESH_POLYCONNECTIVITY_HH
45 #define OPENMESH_POLYCONNECTIVITY_HH
46
47 #include <OpenMesh/Core/Mesh/ArrayKernel.hh>
48 #include <OpenMesh/Core/Mesh/SmartRange.hh>
49
50 namespace OpenMesh
51 {
52
53 namespace Iterators
54 {
55 template <class Mesh, class ValueHandle, class MemberOwner, bool (MemberOwner::*PrimitiveStatusMember)() const, size_t (MemberOwner::*PrimitiveCountMember)() const>
56 class GenericIteratorT;
57
58 template<class Mesh>
59 class GenericCirculatorBaseT;
60
61 template<typename Traits>
62 class GenericCirculatorT_DEPRECATED;
63
64 template<typename Traits, bool CW>
65 class GenericCirculatorT;
66 }
67
68 template <typename RangeTraitT>
69 class EntityRange;
70
71 template<
72 typename CONTAINER_T,
73 typename ITER_T,
74 ITER_T (CONTAINER_T::*begin_fn)() const,
75 ITER_T (CONTAINER_T::*end_fn)() const>
76 struct RangeTraitT
77 {
78 using CONTAINER_TYPE = CONTAINER_T;
79 using ITER_TYPE = ITER_T;
80 static ITER_TYPE begin(const CONTAINER_TYPE& _container) { return (_container.*begin_fn)(); }
81 static ITER_TYPE end(const CONTAINER_TYPE& _container) { return (_container.*end_fn)(); }
82 };
83
84
85 template <typename CirculatorRangeTraitT>
86 class CirculatorRange;
87
88 template<
89 typename CONTAINER_T,
90 typename ITER_T,
91 typename CENTER_ENTITY_T,
92 typename TO_ENTITY_T,
93 ITER_T (CONTAINER_T::*begin_fn)(CENTER_ENTITY_T) const,
94 ITER_T (CONTAINER_T::*end_fn)(CENTER_ENTITY_T) const>
95 struct CirculatorRangeTraitT
96 {
97 using CONTAINER_TYPE = CONTAINER_T;
98 using ITER_TYPE = ITER_T;
99 using CENTER_ENTITY_TYPE = CENTER_ENTITY_T;
100 using TO_ENTITYE_TYPE = TO_ENTITY_T;
101 static ITER_TYPE begin(const CONTAINER_TYPE& _container, CENTER_ENTITY_TYPE _ce) { return (_container.*begin_fn)(_ce); }
102 static ITER_TYPE begin(const CONTAINER_TYPE& _container, HalfedgeHandle _heh, int) { return ITER_TYPE(_container, _heh); }
103 static ITER_TYPE end(const CONTAINER_TYPE& _container, CENTER_ENTITY_TYPE _ce) { return (_container.*end_fn)(_ce); }
104 static ITER_TYPE end(const CONTAINER_TYPE& _container, HalfedgeHandle _heh, int) { return ITER_TYPE(_container, _heh, true); }
105 };
106
107 struct SmartVertexHandle;
108 struct SmartHalfedgeHandle;
109 struct SmartEdgeHandle;
110 struct SmartFaceHandle;
111
114 class OPENMESHDLLEXPORT PolyConnectivity : public ArrayKernel
115 {
116 public:
118
119 static const VertexHandle InvalidVertexHandle;
122 static const HalfedgeHandle InvalidHalfedgeHandle;
124 static const EdgeHandle InvalidEdgeHandle;
126 static const FaceHandle InvalidFaceHandle;
128
129 typedef PolyConnectivity This;
130
131 //--- iterators ---
132
139 typedef Iterators::GenericIteratorT<This, This::VertexHandle, ArrayKernel , &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices> VertexIter;
140 typedef Iterators::GenericIteratorT<This, This::HalfedgeHandle, ArrayKernel , &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges> HalfedgeIter;
141 typedef Iterators::GenericIteratorT<This, This::EdgeHandle, ArrayKernel , &ArrayKernel::has_edge_status, &ArrayKernel::n_edges> EdgeIter;
142 typedef Iterators::GenericIteratorT<This, This::FaceHandle, ArrayKernel , &ArrayKernel::has_face_status, &ArrayKernel::n_faces> FaceIter;
143
144 typedef VertexIter ConstVertexIter;
145 typedef HalfedgeIter ConstHalfedgeIter;
146 typedef EdgeIter ConstEdgeIter;
147 typedef FaceIter ConstFaceIter;
149
150 //--- circulators ---
151
157
158 /*
159 * Vertex-centered circulators
160 */
161
162 struct VertexVertexTraits
163 {
164 using Mesh = This;
165 using CenterEntityHandle = This::VertexHandle;
166 using ValueHandle = This::VertexHandle;
167 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return _mesh->to_vertex_handle(_heh);}
168 };
169
170
174 typedef Iterators::GenericCirculatorT_DEPRECATED<VertexVertexTraits> VertexVertexIter;
175 typedef Iterators::GenericCirculatorT<VertexVertexTraits, true> VertexVertexCWIter;
176
180 typedef Iterators::GenericCirculatorT<VertexVertexTraits, false> VertexVertexCCWIter;
181
182
183 struct VertexHalfedgeTraits
184 {
185 using Mesh = This;
186 using CenterEntityHandle = This::VertexHandle;
187 using ValueHandle = This::HalfedgeHandle;
188 static ValueHandle toHandle(const Mesh* const /*_mesh*/, This::HalfedgeHandle _heh) { return _heh;}
189 };
190
194 typedef Iterators::GenericCirculatorT_DEPRECATED<VertexHalfedgeTraits> VertexOHalfedgeIter;
195 typedef Iterators::GenericCirculatorT<VertexHalfedgeTraits, true> VertexOHalfedgeCWIter;
196
200 typedef Iterators::GenericCirculatorT<VertexHalfedgeTraits, false> VertexOHalfedgeCCWIter;
201
202 struct VertexOppositeHalfedgeTraits
203 {
204 using Mesh = This;
205 using CenterEntityHandle = This::VertexHandle;
206 using ValueHandle = This::HalfedgeHandle;
207 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return _mesh->opposite_halfedge_handle(_heh); }
208 };
209
213 typedef Iterators::GenericCirculatorT_DEPRECATED<VertexOppositeHalfedgeTraits> VertexIHalfedgeIter;
214 typedef Iterators::GenericCirculatorT<VertexOppositeHalfedgeTraits, true> VertexIHalfedgeCWIter;
215
219 typedef Iterators::GenericCirculatorT<VertexOppositeHalfedgeTraits, false> VertexIHalfedgeCCWIter;
220
221
222 struct VertexFaceTraits
223 {
224 using Mesh = This;
225 using CenterEntityHandle = This::VertexHandle;
226 using ValueHandle = This::FaceHandle;
227 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return static_cast<const ArrayKernel*>(_mesh)->face_handle(_heh); }
228 };
229
233 typedef Iterators::GenericCirculatorT_DEPRECATED<VertexFaceTraits> VertexFaceIter;
234 typedef Iterators::GenericCirculatorT<VertexFaceTraits, true> VertexFaceCWIter;
235
239 typedef Iterators::GenericCirculatorT<VertexFaceTraits, false> VertexFaceCCWIter;
240
241
242 struct VertexEdgeTraits
243 {
244 using Mesh = This;
245 using CenterEntityHandle = This::VertexHandle;
246 using ValueHandle = This::EdgeHandle;
247 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return static_cast<const ArrayKernel*>(_mesh)->edge_handle(_heh); }
248 };
249
253 typedef Iterators::GenericCirculatorT_DEPRECATED<VertexEdgeTraits> VertexEdgeIter;
254 typedef Iterators::GenericCirculatorT<VertexEdgeTraits, true> VertexEdgeCWIter;
258 typedef Iterators::GenericCirculatorT<VertexEdgeTraits, false> VertexEdgeCCWIter;
259
260
261 struct FaceHalfedgeTraits
262 {
263 using Mesh = This;
264 using CenterEntityHandle = This::FaceHandle;
265 using ValueHandle = This::HalfedgeHandle;
266 static ValueHandle toHandle(const Mesh* const /*_mesh*/, This::HalfedgeHandle _heh) { return _heh; }
267 };
268
272 typedef Iterators::GenericCirculatorT_DEPRECATED<FaceHalfedgeTraits> HalfedgeLoopIter;
273 typedef Iterators::GenericCirculatorT<FaceHalfedgeTraits, false> HalfedgeLoopCWIter;
277 typedef Iterators::GenericCirculatorT<FaceHalfedgeTraits, true> HalfedgeLoopCCWIter;
278
279 typedef VertexVertexIter ConstVertexVertexIter;
280 typedef VertexVertexCWIter ConstVertexVertexCWIter;
281 typedef VertexVertexCCWIter ConstVertexVertexCCWIter;
282 typedef VertexOHalfedgeIter ConstVertexOHalfedgeIter;
283 typedef VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter;
284 typedef VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter;
285 typedef VertexIHalfedgeIter ConstVertexIHalfedgeIter;
286 typedef VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter;
287 typedef VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter;
288 typedef VertexFaceIter ConstVertexFaceIter;
289 typedef VertexFaceCWIter ConstVertexFaceCWIter;
290 typedef VertexFaceCCWIter ConstVertexFaceCCWIter;
291 typedef VertexEdgeIter ConstVertexEdgeIter;
292 typedef VertexEdgeCWIter ConstVertexEdgeCWIter;
293 typedef VertexEdgeCCWIter ConstVertexEdgeCCWIter;
294
295 /*
296 * Face-centered circulators
297 */
298
299 struct FaceVertexTraits
300 {
301 using Mesh = This;
302 using CenterEntityHandle = This::FaceHandle;
303 using ValueHandle = This::VertexHandle;
304 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return static_cast<const ArrayKernel*>(_mesh)->to_vertex_handle(_heh); }
305 };
306
310 typedef Iterators::GenericCirculatorT_DEPRECATED<FaceVertexTraits> FaceVertexIter;
311 typedef Iterators::GenericCirculatorT<FaceVertexTraits, true> FaceVertexCCWIter;
312
316 typedef Iterators::GenericCirculatorT<FaceVertexTraits, false> FaceVertexCWIter;
317
321 typedef Iterators::GenericCirculatorT_DEPRECATED<FaceHalfedgeTraits> FaceHalfedgeIter;
322 typedef Iterators::GenericCirculatorT<FaceHalfedgeTraits, true> FaceHalfedgeCCWIter;
323
327 typedef Iterators::GenericCirculatorT<FaceHalfedgeTraits, false> FaceHalfedgeCWIter;
328
329
330 struct FaceEdgeTraits
331 {
332 using Mesh = This;
333 using CenterEntityHandle = This::FaceHandle;
334 using ValueHandle = This::EdgeHandle;
335 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return static_cast<const ArrayKernel*>(_mesh)->edge_handle(_heh); }
336 };
337
341 typedef Iterators::GenericCirculatorT_DEPRECATED<FaceEdgeTraits> FaceEdgeIter;
342 typedef Iterators::GenericCirculatorT<FaceEdgeTraits, true> FaceEdgeCCWIter;
343
347 typedef Iterators::GenericCirculatorT<FaceEdgeTraits, false> FaceEdgeCWIter;
348
349
350 struct FaceFaceTraits
351 {
352 using Mesh = This;
353 using CenterEntityHandle = This::FaceHandle;
354 using ValueHandle = This::FaceHandle;
355 static ValueHandle toHandle(const Mesh* const _mesh, This::HalfedgeHandle _heh) { return static_cast<const ArrayKernel*>(_mesh)->face_handle(_mesh->opposite_halfedge_handle(_heh)); }
356 };
357
361 typedef Iterators::GenericCirculatorT_DEPRECATED<FaceFaceTraits> FaceFaceIter;
362 typedef Iterators::GenericCirculatorT<FaceFaceTraits, true> FaceFaceCCWIter;
363
367 typedef Iterators::GenericCirculatorT<FaceFaceTraits, false> FaceFaceCWIter;
368
369 typedef FaceVertexIter ConstFaceVertexIter;
370 typedef FaceVertexCWIter ConstFaceVertexCWIter;
371 typedef FaceVertexCCWIter ConstFaceVertexCCWIter;
372 typedef FaceHalfedgeIter ConstFaceHalfedgeIter;
373 typedef FaceHalfedgeCWIter ConstFaceHalfedgeCWIter;
374 typedef FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter;
375 typedef FaceEdgeIter ConstFaceEdgeIter;
376 typedef FaceEdgeCWIter ConstFaceEdgeCWIter;
377 typedef FaceEdgeCCWIter ConstFaceEdgeCCWIter;
378 typedef FaceFaceIter ConstFaceFaceIter;
379 typedef FaceFaceCWIter ConstFaceFaceCWIter;
380 typedef FaceFaceCCWIter ConstFaceFaceCCWIter;
381
382 /*
383 * Halfedge circulator
384 */
385 typedef HalfedgeLoopIter ConstHalfedgeLoopIter;
386 typedef HalfedgeLoopCWIter ConstHalfedgeLoopCWIter;
387 typedef HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter;
388
390
391 // --- shortcuts
392
398 typedef VertexHandle VHandle;
399 typedef HalfedgeHandle HHandle;
400 typedef EdgeHandle EHandle;
401 typedef FaceHandle FHandle;
402
403 typedef VertexIter VIter;
404 typedef HalfedgeIter HIter;
405 typedef EdgeIter EIter;
406 typedef FaceIter FIter;
407
408 typedef ConstVertexIter CVIter;
409 typedef ConstHalfedgeIter CHIter;
410 typedef ConstEdgeIter CEIter;
411 typedef ConstFaceIter CFIter;
412
413 typedef VertexVertexIter VVIter;
414 typedef VertexVertexCWIter VVCWIter;
415 typedef VertexVertexCCWIter VVCCWIter;
416 typedef VertexOHalfedgeIter VOHIter;
417 typedef VertexOHalfedgeCWIter VOHCWIter;
418 typedef VertexOHalfedgeCCWIter VOHCCWIter;
419 typedef VertexIHalfedgeIter VIHIter;
420 typedef VertexIHalfedgeCWIter VIHICWter;
421 typedef VertexIHalfedgeCCWIter VIHICCWter;
422 typedef VertexEdgeIter VEIter;
423 typedef VertexEdgeCWIter VECWIter;
424 typedef VertexEdgeCCWIter VECCWIter;
425 typedef VertexFaceIter VFIter;
426 typedef VertexFaceCWIter VFCWIter;
427 typedef VertexFaceCCWIter VFCCWIter;
428 typedef FaceVertexIter FVIter;
429 typedef FaceVertexCWIter FVCWIter;
430 typedef FaceVertexCCWIter FVCCWIter;
431 typedef FaceHalfedgeIter FHIter;
432 typedef FaceHalfedgeCWIter FHCWIter;
433 typedef FaceHalfedgeCCWIter FHCWWIter;
434 typedef FaceEdgeIter FEIter;
435 typedef FaceEdgeCWIter FECWIter;
436 typedef FaceEdgeCCWIter FECWWIter;
437 typedef FaceFaceIter FFIter;
438
439 typedef ConstVertexVertexIter CVVIter;
440 typedef ConstVertexVertexCWIter CVVCWIter;
441 typedef ConstVertexVertexCCWIter CVVCCWIter;
442 typedef ConstVertexOHalfedgeIter CVOHIter;
443 typedef ConstVertexOHalfedgeCWIter CVOHCWIter;
444 typedef ConstVertexOHalfedgeCCWIter CVOHCCWIter;
445 typedef ConstVertexIHalfedgeIter CVIHIter;
446 typedef ConstVertexIHalfedgeCWIter CVIHCWIter;
447 typedef ConstVertexIHalfedgeCCWIter CVIHCCWIter;
448 typedef ConstVertexEdgeIter CVEIter;
449 typedef ConstVertexEdgeCWIter CVECWIter;
450 typedef ConstVertexEdgeCCWIter CVECCWIter;
451 typedef ConstVertexFaceIter CVFIter;
452 typedef ConstVertexFaceCWIter CVFCWIter;
453 typedef ConstVertexFaceCCWIter CVFCCWIter;
454 typedef ConstFaceVertexIter CFVIter;
455 typedef ConstFaceVertexCWIter CFVCWIter;
456 typedef ConstFaceVertexCCWIter CFVCCWIter;
457 typedef ConstFaceHalfedgeIter CFHIter;
458 typedef ConstFaceHalfedgeCWIter CFHCWIter;
459 typedef ConstFaceHalfedgeCCWIter CFHCCWIter;
460 typedef ConstFaceEdgeIter CFEIter;
461 typedef ConstFaceEdgeCWIter CFECWIter;
462 typedef ConstFaceEdgeCCWIter CFECCWIter;
463 typedef ConstFaceFaceIter CFFIter;
464 typedef ConstFaceFaceCWIter CFFCWIter;
465 typedef ConstFaceFaceCCWIter CFFCCWIter;
467
468 public:
469
470 PolyConnectivity() {}
471 virtual ~PolyConnectivity() {}
472
473 inline static bool is_triangles()
474 { return false; }
475
478 inline void assign_connectivity(const PolyConnectivity& _other)
479 { ArrayKernel::assign_connectivity(_other); }
480
484
486 inline SmartVertexHandle add_vertex();
487
495 SmartFaceHandle add_face(const std::vector<VertexHandle>& _vhandles);
496
504 SmartFaceHandle add_face(const std::vector<SmartVertexHandle>& _vhandles);
505
506
516 SmartFaceHandle add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2);
517
528 SmartFaceHandle add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3);
529
538 SmartFaceHandle add_face(const VertexHandle* _vhandles, size_t _vhs_size);
539
541
543
544
549 bool is_collapse_ok(HalfedgeHandle _he);
550
551
557 void delete_vertex(VertexHandle _vh, bool _delete_isolated_vertices = true);
558
567 void delete_edge(EdgeHandle _eh, bool _delete_isolated_vertices=true);
568
579 void delete_face(FaceHandle _fh, bool _delete_isolated_vertices=true);
580
581
583
587
588 using ArrayKernel::next_halfedge_handle;
589 using ArrayKernel::prev_halfedge_handle;
590 using ArrayKernel::opposite_halfedge_handle;
591 using ArrayKernel::ccw_rotated_halfedge_handle;
592 using ArrayKernel::cw_rotated_halfedge_handle;
593
594 inline SmartHalfedgeHandle next_halfedge_handle (SmartHalfedgeHandle _heh) const;
595 inline SmartHalfedgeHandle prev_halfedge_handle (SmartHalfedgeHandle _heh) const;
596 inline SmartHalfedgeHandle opposite_halfedge_handle (SmartHalfedgeHandle _heh) const;
597 inline SmartHalfedgeHandle ccw_rotated_halfedge_handle(SmartHalfedgeHandle _heh) const;
598 inline SmartHalfedgeHandle cw_rotated_halfedge_handle (SmartHalfedgeHandle _heh) const;
599
600 using ArrayKernel::s_halfedge_handle;
601 using ArrayKernel::s_edge_handle;
602
603 static SmartHalfedgeHandle s_halfedge_handle(SmartEdgeHandle _eh, unsigned int _i);
604 static SmartEdgeHandle s_edge_handle(SmartHalfedgeHandle _heh);
605
606 using ArrayKernel::halfedge_handle;
607 using ArrayKernel::edge_handle;
608 using ArrayKernel::face_handle;
609
610 inline SmartHalfedgeHandle halfedge_handle(SmartEdgeHandle _eh, unsigned int _i) const;
611 inline SmartHalfedgeHandle halfedge_handle(SmartFaceHandle _fh) const;
612 inline SmartHalfedgeHandle halfedge_handle(SmartVertexHandle _vh) const;
613 inline SmartEdgeHandle edge_handle(SmartHalfedgeHandle _heh) const;
614 inline SmartFaceHandle face_handle(SmartHalfedgeHandle _heh) const;
615
617 inline SmartFaceHandle opposite_face_handle(HalfedgeHandle _heh) const;
618
620
624
626 VertexIter vertices_begin();
628 ConstVertexIter vertices_begin() const;
630 VertexIter vertices_end();
632 ConstVertexIter vertices_end() const;
633
635 HalfedgeIter halfedges_begin();
637 ConstHalfedgeIter halfedges_begin() const;
639 HalfedgeIter halfedges_end();
641 ConstHalfedgeIter halfedges_end() const;
642
644 EdgeIter edges_begin();
646 ConstEdgeIter edges_begin() const;
648 EdgeIter edges_end();
650 ConstEdgeIter edges_end() const;
651
653 FaceIter faces_begin();
655 ConstFaceIter faces_begin() const;
657 FaceIter faces_end();
659 ConstFaceIter faces_end() const;
661
662
666
668 VertexIter vertices_sbegin();
670 ConstVertexIter vertices_sbegin() const;
671
673 HalfedgeIter halfedges_sbegin();
675 ConstHalfedgeIter halfedges_sbegin() const;
676
678 EdgeIter edges_sbegin();
680 ConstEdgeIter edges_sbegin() const;
681
683 FaceIter faces_sbegin();
685 ConstFaceIter faces_sbegin() const;
686
688
689 //--- circulators ---
690
694
696 VertexVertexIter vv_iter(VertexHandle _vh);
698 VertexVertexCWIter vv_cwiter(VertexHandle _vh);
700 VertexVertexCCWIter vv_ccwiter(VertexHandle _vh);
702 VertexIHalfedgeIter vih_iter(VertexHandle _vh);
704 VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh);
706 VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh);
708 VertexOHalfedgeIter voh_iter(VertexHandle _vh);
710 VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh);
712 VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh);
714 VertexEdgeIter ve_iter(VertexHandle _vh);
716 VertexEdgeCWIter ve_cwiter(VertexHandle _vh);
718 VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh);
720 VertexFaceIter vf_iter(VertexHandle _vh);
722 VertexFaceCWIter vf_cwiter(VertexHandle _vh);
724 VertexFaceCCWIter vf_ccwiter(VertexHandle _vh);
725
727 ConstVertexVertexIter cvv_iter(VertexHandle _vh) const;
729 ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const;
731 ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const;
733 ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const;
735 ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const;
737 ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const;
739 ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const;
741 ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const;
743 ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const;
745 ConstVertexEdgeIter cve_iter(VertexHandle _vh) const;
747 ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const;
749 ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const;
751 ConstVertexFaceIter cvf_iter(VertexHandle _vh) const;
753 ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const;
755 ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const;
756
758 FaceVertexIter fv_iter(FaceHandle _fh);
760 FaceVertexCWIter fv_cwiter(FaceHandle _fh);
762 FaceVertexCCWIter fv_ccwiter(FaceHandle _fh);
764 FaceHalfedgeIter fh_iter(FaceHandle _fh);
766 FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh);
768 FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh);
770 FaceEdgeIter fe_iter(FaceHandle _fh);
772 FaceEdgeCWIter fe_cwiter(FaceHandle _fh);
774 FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh);
776 FaceFaceIter ff_iter(FaceHandle _fh);
778 FaceFaceCWIter ff_cwiter(FaceHandle _fh);
780 FaceFaceCCWIter ff_ccwiter(FaceHandle _fh);
781
783 ConstFaceVertexIter cfv_iter(FaceHandle _fh) const;
785 ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const;
787 ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const;
789 ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const;
791 ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const;
793 ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const;
795 ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const;
797 ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const;
799 ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const;
801 ConstFaceFaceIter cff_iter(FaceHandle _fh) const;
803 ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const;
805 ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const;
806
807 // 'begin' circulators
808
810 VertexVertexIter vv_begin(VertexHandle _vh);
812 VertexVertexCWIter vv_cwbegin(VertexHandle _vh);
814 VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh);
816 VertexIHalfedgeIter vih_begin(VertexHandle _vh);
818 VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh);
820 VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh);
822 VertexOHalfedgeIter voh_begin(VertexHandle _vh);
824 VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh);
826 VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh);
828 VertexEdgeIter ve_begin(VertexHandle _vh);
830 VertexEdgeCWIter ve_cwbegin(VertexHandle _vh);
832 VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh);
834 VertexFaceIter vf_begin(VertexHandle _vh);
836 VertexFaceCWIter vf_cwbegin(VertexHandle _vh);
838 VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh);
839
840
842 ConstVertexVertexIter cvv_begin(VertexHandle _vh) const;
844 ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const;
846 ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const;
848 ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const;
850 ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const;
852 ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const;
854 ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const;
856 ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const;
858 ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const;
860 ConstVertexEdgeIter cve_begin(VertexHandle _vh) const;
862 ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const;
864 ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const;
866 ConstVertexFaceIter cvf_begin(VertexHandle _vh) const;
868 ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const;
870 ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const;
871
873 FaceVertexIter fv_begin(FaceHandle _fh);
875 FaceVertexCWIter fv_cwbegin(FaceHandle _fh);
877 FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh);
879 FaceHalfedgeIter fh_begin(FaceHandle _fh);
881 FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh);
883 FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh);
885 FaceEdgeIter fe_begin(FaceHandle _fh);
887 FaceEdgeCWIter fe_cwbegin(FaceHandle _fh);
889 FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh);
891 FaceFaceIter ff_begin(FaceHandle _fh);
893 FaceFaceCWIter ff_cwbegin(FaceHandle _fh);
895 FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh);
897 HalfedgeLoopIter hl_begin(HalfedgeHandle _heh);
899 HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh);
901 HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh);
902
904 ConstFaceVertexIter cfv_begin(FaceHandle _fh) const;
906 ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const;
908 ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const;
910 ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const;
912 ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const;
914 ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const;
916 ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const;
918 ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const;
920 ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const;
922 ConstFaceFaceIter cff_begin(FaceHandle _fh) const;
924 ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const;
926 ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const;
928 ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const;
930 ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const;
932 ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const;
933
934 // 'end' circulators
935
937 VertexVertexIter vv_end(VertexHandle _vh);
939 VertexVertexCWIter vv_cwend(VertexHandle _vh);
941 VertexVertexCCWIter vv_ccwend(VertexHandle _vh);
943 VertexIHalfedgeIter vih_end(VertexHandle _vh);
945 VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh);
947 VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh);
949 VertexOHalfedgeIter voh_end(VertexHandle _vh);
951 VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh);
953 VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh);
955 VertexEdgeIter ve_end(VertexHandle _vh);
957 VertexEdgeCWIter ve_cwend(VertexHandle _vh);
959 VertexEdgeCCWIter ve_ccwend(VertexHandle _vh);
961 VertexFaceIter vf_end(VertexHandle _vh);
963 VertexFaceCWIter vf_cwend(VertexHandle _vh);
965 VertexFaceCCWIter vf_ccwend(VertexHandle _vh);
966
968 ConstVertexVertexIter cvv_end(VertexHandle _vh) const;
970 ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const;
972 ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const;
974 ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const;
976 ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const;
978 ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const;
980 ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const;
982 ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const;
984 ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const;
986 ConstVertexEdgeIter cve_end(VertexHandle _vh) const;
988 ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const;
990 ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const;
992 ConstVertexFaceIter cvf_end(VertexHandle _vh) const;
994 ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const;
996 ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const;
997
999 FaceVertexIter fv_end(FaceHandle _fh);
1001 FaceVertexCWIter fv_cwend(FaceHandle _fh);
1003 FaceVertexCCWIter fv_ccwend(FaceHandle _fh);
1005 FaceHalfedgeIter fh_end(FaceHandle _fh);
1007 FaceHalfedgeCWIter fh_cwend(FaceHandle _fh);
1009 FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh);
1011 FaceEdgeIter fe_end(FaceHandle _fh);
1013 FaceEdgeCWIter fe_cwend(FaceHandle _fh);
1015 FaceEdgeCCWIter fe_ccwend(FaceHandle _fh);
1017 FaceFaceIter ff_end(FaceHandle _fh);
1019 FaceFaceCWIter ff_cwend(FaceHandle _fh);
1021 FaceFaceCCWIter ff_ccwend(FaceHandle _fh);
1023 HalfedgeLoopIter hl_end(HalfedgeHandle _heh);
1025 HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh);
1027 HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh);
1028
1030 ConstFaceVertexIter cfv_end(FaceHandle _fh) const;
1032 ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const;
1034 ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const;
1036 ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const;
1038 ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const;
1040 ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const;
1042 ConstFaceEdgeIter cfe_end(FaceHandle _fh) const;
1044 ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const;
1046 ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const;
1048 ConstFaceFaceIter cff_end(FaceHandle _fh) const;
1050 ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const;
1052 ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const;
1054 ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const;
1056 ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const;
1058 ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const;
1060
1063
1064 typedef EntityRange<RangeTraitT<
1065 const PolyConnectivity,
1066 PolyConnectivity::ConstVertexIter,
1067 &PolyConnectivity::vertices_begin,
1068 &PolyConnectivity::vertices_end>> ConstVertexRange;
1069 typedef EntityRange<RangeTraitT<
1070 const PolyConnectivity,
1071 PolyConnectivity::ConstVertexIter,
1072 &PolyConnectivity::vertices_sbegin,
1073 &PolyConnectivity::vertices_end>> ConstVertexRangeSkipping;
1074 typedef EntityRange<RangeTraitT<
1075 const PolyConnectivity,
1076 PolyConnectivity::ConstHalfedgeIter,
1077 &PolyConnectivity::halfedges_begin,
1078 &PolyConnectivity::halfedges_end>> ConstHalfedgeRange;
1079 typedef EntityRange<RangeTraitT<
1080 const PolyConnectivity,
1081 PolyConnectivity::ConstHalfedgeIter,
1082 &PolyConnectivity::halfedges_sbegin,
1083 &PolyConnectivity::halfedges_end>> ConstHalfedgeRangeSkipping;
1084 typedef EntityRange<RangeTraitT<
1085 const PolyConnectivity,
1086 PolyConnectivity::ConstEdgeIter,
1087 &PolyConnectivity::edges_begin,
1088 &PolyConnectivity::edges_end>> ConstEdgeRange;
1089 typedef EntityRange<RangeTraitT<
1090 const PolyConnectivity,
1091 PolyConnectivity::ConstEdgeIter,
1092 &PolyConnectivity::edges_sbegin,
1093 &PolyConnectivity::edges_end>> ConstEdgeRangeSkipping;
1094 typedef EntityRange<RangeTraitT<
1095 const PolyConnectivity,
1096 PolyConnectivity::ConstFaceIter,
1097 &PolyConnectivity::faces_begin,
1098 &PolyConnectivity::faces_end>> ConstFaceRange;
1099 typedef EntityRange<RangeTraitT<
1100 const PolyConnectivity,
1101 PolyConnectivity::ConstFaceIter,
1102 &PolyConnectivity::faces_sbegin,
1103 &PolyConnectivity::faces_end>> ConstFaceRangeSkipping;
1104
1105
1106 template <typename HandleType>
1107 struct ElementRange;
1108
1113 ConstVertexRangeSkipping vertices() const;
1114
1119 ConstVertexRange all_vertices() const;
1120
1125 ConstHalfedgeRangeSkipping halfedges() const;
1126
1131 ConstHalfedgeRange all_halfedges() const;
1132
1137 ConstEdgeRangeSkipping edges() const;
1138
1143 ConstEdgeRange all_edges() const;
1144
1149 ConstFaceRangeSkipping faces() const;
1150
1155 ConstFaceRange all_faces() const;
1156
1161 template <typename HandleType>
1162 typename ElementRange<HandleType>::RangeSkipping elements() const;
1163
1168 template <typename HandleType>
1169 typename ElementRange<HandleType>::Range all_elements() const;
1170
1171
1172 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexVertexIter , VertexHandle , VertexHandle , &PolyConnectivity::cvv_begin , &PolyConnectivity::cvv_end >> ConstVertexVertexRange;
1173 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexIHalfedgeIter , VertexHandle , HalfedgeHandle, &PolyConnectivity::cvih_begin , &PolyConnectivity::cvih_end >> ConstVertexIHalfedgeRange;
1174 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexOHalfedgeIter , VertexHandle , HalfedgeHandle, &PolyConnectivity::cvoh_begin , &PolyConnectivity::cvoh_end >> ConstVertexOHalfedgeRange;
1175 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexEdgeIter , VertexHandle , EdgeHandle , &PolyConnectivity::cve_begin , &PolyConnectivity::cve_end >> ConstVertexEdgeRange;
1176 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexFaceIter , VertexHandle , FaceHandle , &PolyConnectivity::cvf_begin , &PolyConnectivity::cvf_end >> ConstVertexFaceRange;
1177 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceVertexIter , FaceHandle , VertexHandle , &PolyConnectivity::cfv_begin , &PolyConnectivity::cfv_end >> ConstFaceVertexRange;
1178 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceHalfedgeIter , FaceHandle , HalfedgeHandle, &PolyConnectivity::cfh_begin , &PolyConnectivity::cfh_end >> ConstFaceHalfedgeRange;
1179 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceEdgeIter , FaceHandle , EdgeHandle , &PolyConnectivity::cfe_begin , &PolyConnectivity::cfe_end >> ConstFaceEdgeRange;
1180 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceFaceIter , FaceHandle , FaceHandle , &PolyConnectivity::cff_begin , &PolyConnectivity::cff_end >> ConstFaceFaceRange;
1181 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstHalfedgeLoopIter , HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_begin , &PolyConnectivity::chl_end >> ConstHalfedgeLoopRange;
1182
1183 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexVertexCWIter , VertexHandle , VertexHandle , &PolyConnectivity::cvv_cwbegin , &PolyConnectivity::cvv_cwend >> ConstVertexVertexCWRange;
1184 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexIHalfedgeCWIter , VertexHandle , HalfedgeHandle, &PolyConnectivity::cvih_cwbegin , &PolyConnectivity::cvih_cwend >> ConstVertexIHalfedgeCWRange;
1185 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexOHalfedgeCWIter , VertexHandle , HalfedgeHandle, &PolyConnectivity::cvoh_cwbegin , &PolyConnectivity::cvoh_cwend >> ConstVertexOHalfedgeCWRange;
1186 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexEdgeCWIter , VertexHandle , EdgeHandle , &PolyConnectivity::cve_cwbegin , &PolyConnectivity::cve_cwend >> ConstVertexEdgeCWRange;
1187 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexFaceCWIter , VertexHandle , FaceHandle , &PolyConnectivity::cvf_cwbegin , &PolyConnectivity::cvf_cwend >> ConstVertexFaceCWRange;
1188 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceVertexCWIter , FaceHandle , VertexHandle , &PolyConnectivity::cfv_cwbegin , &PolyConnectivity::cfv_cwend >> ConstFaceVertexCWRange;
1189 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceHalfedgeCWIter , FaceHandle , HalfedgeHandle, &PolyConnectivity::cfh_cwbegin , &PolyConnectivity::cfh_cwend >> ConstFaceHalfedgeCWRange;
1190 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceEdgeCWIter , FaceHandle , EdgeHandle , &PolyConnectivity::cfe_cwbegin , &PolyConnectivity::cfe_cwend >> ConstFaceEdgeCWRange;
1191 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceFaceCWIter , FaceHandle , FaceHandle , &PolyConnectivity::cff_cwbegin , &PolyConnectivity::cff_cwend >> ConstFaceFaceCWRange;
1192 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstHalfedgeLoopCWIter , HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_cwbegin , &PolyConnectivity::chl_cwend >> ConstHalfedgeLoopCWRange;
1193
1194 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexVertexCCWIter , VertexHandle , VertexHandle , &PolyConnectivity::cvv_ccwbegin , &PolyConnectivity::cvv_ccwend >> ConstVertexVertexCCWRange;
1195 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexIHalfedgeCCWIter, VertexHandle , HalfedgeHandle, &PolyConnectivity::cvih_ccwbegin , &PolyConnectivity::cvih_ccwend >> ConstVertexIHalfedgeCCWRange;
1196 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexOHalfedgeCCWIter, VertexHandle , HalfedgeHandle, &PolyConnectivity::cvoh_ccwbegin , &PolyConnectivity::cvoh_ccwend >> ConstVertexOHalfedgeCCWRange;
1197 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexEdgeCCWIter , VertexHandle , EdgeHandle , &PolyConnectivity::cve_ccwbegin , &PolyConnectivity::cve_ccwend >> ConstVertexEdgeCCWRange;
1198 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstVertexFaceCCWIter , VertexHandle , FaceHandle , &PolyConnectivity::cvf_ccwbegin , &PolyConnectivity::cvf_ccwend >> ConstVertexFaceCCWRange;
1199 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceVertexCCWIter , FaceHandle , VertexHandle , &PolyConnectivity::cfv_ccwbegin , &PolyConnectivity::cfv_ccwend >> ConstFaceVertexCCWRange;
1200 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceHalfedgeCCWIter , FaceHandle , HalfedgeHandle, &PolyConnectivity::cfh_ccwbegin , &PolyConnectivity::cfh_ccwend >> ConstFaceHalfedgeCCWRange;
1201 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceEdgeCCWIter , FaceHandle , EdgeHandle , &PolyConnectivity::cfe_ccwbegin , &PolyConnectivity::cfe_ccwend >> ConstFaceEdgeCCWRange;
1202 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstFaceFaceCCWIter , FaceHandle , FaceHandle , &PolyConnectivity::cff_ccwbegin , &PolyConnectivity::cff_ccwend >> ConstFaceFaceCCWRange;
1203 typedef CirculatorRange<CirculatorRangeTraitT<PolyConnectivity, ConstHalfedgeLoopCCWIter , HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_ccwbegin , &PolyConnectivity::chl_ccwend >> ConstHalfedgeLoopCCWRange;
1204
1209 ConstVertexVertexRange vv_range(VertexHandle _vh) const;
1210
1215 ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const;
1216
1222 ConstVertexIHalfedgeRange vih_range(HalfedgeHandle _heh) const;
1223
1228 ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const;
1229
1235 ConstVertexOHalfedgeRange voh_range(HalfedgeHandle _heh) const;
1236
1241 ConstVertexEdgeRange ve_range(VertexHandle _vh) const ;
1242
1247 ConstVertexFaceRange vf_range(VertexHandle _vh) const;
1248
1253 ConstFaceVertexRange fv_range(FaceHandle _fh) const;
1254
1259 ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const;
1260
1265 ConstFaceEdgeRange fe_range(FaceHandle _fh) const;
1266
1271 ConstFaceFaceRange ff_range(FaceHandle _fh) const;
1272
1277 ConstHalfedgeLoopRange hl_range(HalfedgeHandle _heh) const;
1278
1279
1284 ConstVertexVertexCWRange vv_cw_range(VertexHandle _vh) const;
1285
1290 ConstVertexIHalfedgeCWRange vih_cw_range(VertexHandle _vh) const;
1291
1297 ConstVertexIHalfedgeCWRange vih_cw_range(HalfedgeHandle _heh) const;
1298
1303 ConstVertexOHalfedgeCWRange voh_cw_range(VertexHandle _vh) const;
1304
1310 ConstVertexOHalfedgeCWRange voh_cw_range(HalfedgeHandle _heh) const;
1311
1316 ConstVertexEdgeCWRange ve_cw_range(VertexHandle _vh) const ;
1317
1322 ConstVertexFaceCWRange vf_cw_range(VertexHandle _vh) const;
1323
1328 ConstFaceVertexCWRange fv_cw_range(FaceHandle _fh) const;
1329
1334 ConstFaceHalfedgeCWRange fh_cw_range(FaceHandle _fh) const;
1335
1340 ConstFaceEdgeCWRange fe_cw_range(FaceHandle _fh) const;
1341
1346 ConstFaceFaceCWRange ff_cw_range(FaceHandle _fh) const;
1347
1352 ConstHalfedgeLoopCWRange hl_cw_range(HalfedgeHandle _heh) const;
1353
1354
1359 ConstVertexVertexCCWRange vv_ccw_range(VertexHandle _vh) const;
1360
1365 ConstVertexIHalfedgeCCWRange vih_ccw_range(VertexHandle _vh) const;
1366
1372 ConstVertexIHalfedgeCCWRange vih_ccw_range(HalfedgeHandle _heh) const;
1373
1378 ConstVertexOHalfedgeCCWRange voh_ccw_range(VertexHandle _vh) const;
1379
1385 ConstVertexOHalfedgeCCWRange voh_ccw_range(HalfedgeHandle _heh) const;
1386
1391 ConstVertexEdgeCCWRange ve_ccw_range(VertexHandle _vh) const ;
1392
1397 ConstVertexFaceCCWRange vf_ccw_range(VertexHandle _vh) const;
1398
1403 ConstFaceVertexCCWRange fv_ccw_range(FaceHandle _fh) const;
1404
1409 ConstFaceHalfedgeCCWRange fh_ccw_range(FaceHandle _fh) const;
1410
1415 ConstFaceEdgeCCWRange fe_ccw_range(FaceHandle _fh) const;
1416
1421 ConstFaceFaceCCWRange ff_ccw_range(FaceHandle _fh) const;
1422
1427 ConstHalfedgeLoopCCWRange hl_ccw_range(HalfedgeHandle _heh) const;
1428
1430
1431 //===========================================================================
1434 //===========================================================================
1435
1443 bool is_boundary(HalfedgeHandle _heh) const
1444 { return ArrayKernel::is_boundary(_heh); }
1445
1454 bool is_boundary(EdgeHandle _eh) const
1455 {
1456 return (is_boundary(halfedge_handle(_eh, 0)) ||
1457 is_boundary(halfedge_handle(_eh, 1)));
1458 }
1459
1471 bool is_boundary(VertexHandle _vh) const
1472 {
1473 HalfedgeHandle heh(halfedge_handle(_vh));
1474 return (!(heh.is_valid() && face_handle(heh).is_valid()));
1475 }
1476
1486 bool is_boundary(FaceHandle _fh, bool _check_vertex=false) const;
1487
1498 bool is_manifold(VertexHandle _vh) const;
1499
1502 // --- misc ---
1503
1507 void adjust_outgoing_halfedge(VertexHandle _vh);
1508
1510 SmartHalfedgeHandle find_halfedge(VertexHandle _start_vh, VertexHandle _end_vh) const;
1512 uint valence(VertexHandle _vh) const;
1514 uint valence(FaceHandle _fh) const;
1515
1516 // --- connectivity operattions
1517
1532 void collapse(HalfedgeHandle _heh);
1537 bool is_simple_link(EdgeHandle _eh) const;
1542 bool is_simply_connected(FaceHandle _fh) const;
1555 FaceHandle remove_edge(EdgeHandle _eh);
1559 void reinsert_edge(EdgeHandle _eh);
1569 HalfedgeHandle insert_edge(HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh);
1570
1583 void split(FaceHandle _fh, VertexHandle _vh);
1584
1598 void split_copy(FaceHandle _fh, VertexHandle _vh);
1599
1613 void triangulate(FaceHandle _fh);
1614
1617 void triangulate();
1618
1629 void split_edge(EdgeHandle _eh, VertexHandle _vh);
1630
1642 void split_edge_copy(EdgeHandle _eh, VertexHandle _vh);
1643
1644
1651 const Vertex& deref(VertexHandle _h) const { return vertex(_h); }
1652 Vertex& deref(VertexHandle _h) { return vertex(_h); }
1653 const Halfedge& deref(HalfedgeHandle _h) const { return halfedge(_h); }
1654 Halfedge& deref(HalfedgeHandle _h) { return halfedge(_h); }
1655 const Edge& deref(EdgeHandle _h) const { return edge(_h); }
1656 Edge& deref(EdgeHandle _h) { return edge(_h); }
1657 const Face& deref(FaceHandle _h) const { return face(_h); }
1658 Face& deref(FaceHandle _h) { return face(_h); }
1660
1661 protected:
1663 void collapse_edge(HalfedgeHandle _hh);
1665 void collapse_loop(HalfedgeHandle _hh);
1666
1667
1668
1669 private: // Working storage for add_face()
1670 struct AddFaceEdgeInfo
1671 {
1672 HalfedgeHandle halfedge_handle;
1673 bool is_new;
1674 bool needs_adjust;
1675 };
1676 std::vector<AddFaceEdgeInfo> edgeData_; //
1677 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_; // cache for set_next_halfedge and vertex' set_halfedge
1678
1679 };
1680
1681 template <>
1682 struct PolyConnectivity::ElementRange<VertexHandle>
1683 {
1684 using Range = ConstVertexRange;
1685 using RangeSkipping = ConstVertexRangeSkipping;
1686 };
1687
1688 template <>
1689 struct PolyConnectivity::ElementRange<HalfedgeHandle>
1690 {
1691 using Range = ConstHalfedgeRange;
1692 using RangeSkipping = ConstHalfedgeRangeSkipping;
1693 };
1694
1695 template <>
1696 struct PolyConnectivity::ElementRange<EdgeHandle>
1697 {
1698 using Range = ConstEdgeRange;
1699 using RangeSkipping = ConstEdgeRangeSkipping;
1700 };
1701
1702 template <>
1703 struct PolyConnectivity::ElementRange<FaceHandle>
1704 {
1705 using Range = ConstFaceRange;
1706 using RangeSkipping = ConstFaceRangeSkipping;
1707 };
1708
1709 }//namespace OpenMesh
1710
1711 #define OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
1712 #include <OpenMesh/Core/Mesh/SmartHandles.hh>
1713 #include <OpenMesh/Core/Mesh/PolyConnectivity_inline_impl.hh>
1714 #undef OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
1715
1716 #endif//OPENMESH_POLYCONNECTIVITY_HH
OpenMesh
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
OpenMesh::ArrayKernel
Mesh kernel using arrays for mesh item storage.
Definition: ArrayKernel.hh:88
OpenMesh::ArrayKernel::is_boundary
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
Definition: ArrayKernel.hh:398
OpenMesh::ArrayKernel::assign_connectivity
void assign_connectivity(const ArrayKernel &_other)
ArrayKernel uses the default copy constructor and assignment operator, which means that the connectiv...
Definition: ArrayKernel.cc:71
OpenMesh::CirculatorRange
Generic class for iterator ranges.
Definition: PolyConnectivity_inline_impl.hh:92
OpenMesh::Iterators::GenericCirculatorT
Definition: CirculatorsT.hh:284
OpenMesh::Iterators::GenericCirculatorT_DEPRECATED
Definition: CirculatorsT.hh:462
OpenMesh::VertexHandle
Handle for a vertex entity.
Definition: Handles.hh:121
OpenMesh::HalfedgeHandle
Handle for a halfedge entity.
Definition: Handles.hh:128
OpenMesh::EdgeHandle
Handle for a edge entity.
Definition: Handles.hh:135
OpenMesh::FaceHandle
Handle for a face entity.
Definition: Handles.hh:142
OpenMesh::Iterators::GenericIteratorT
Definition: IteratorsT.hh:82
OpenMesh::EntityRange
Generic class for vertex/halfedge/edge/face ranges.
Definition: PolyConnectivity_inline_impl.hh:76
OpenMesh::RangeTraitT
Definition: PolyConnectivity.hh:77
OpenMesh::CirculatorRangeTraitT
Definition: PolyConnectivity.hh:96
OpenMesh::PolyConnectivity
Connectivity Class for polygonal meshes.
Definition: PolyConnectivity.hh:115
OpenMesh::PolyConnectivity::VVCWIter
VertexVertexCWIter VVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:414
OpenMesh::PolyConnectivity::CVVIter
ConstVertexVertexIter CVVIter
Alias typedef.
Definition: PolyConnectivity.hh:439
OpenMesh::PolyConnectivity::ConstVertexVertexRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_begin, &PolyConnectivity::cvv_end > > ConstVertexVertexRange
Definition: PolyConnectivity.hh:1172
OpenMesh::PolyConnectivity::edges_end
EdgeIter edges_end()
End iterator for edges.
Definition: PolyConnectivity_inline_impl.hh:321
OpenMesh::PolyConnectivity::ConstFaceVertexRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > > ConstFaceVertexRange
Definition: PolyConnectivity.hh:1177
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeCWIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_cwbegin, &PolyConnectivity::cfh_cwend > > ConstFaceHalfedgeCWRange
Definition: PolyConnectivity.hh:1189
OpenMesh::PolyConnectivity::ConstEdgeIter
EdgeIter ConstEdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:146
OpenMesh::PolyConnectivity::EIter
EdgeIter EIter
Alias typedef.
Definition: PolyConnectivity.hh:405
OpenMesh::PolyConnectivity::VVIter
VertexVertexIter VVIter
Alias typedef.
Definition: PolyConnectivity.hh:413
OpenMesh::PolyConnectivity::VertexEdgeCCWIter
Iterators::GenericCirculatorT< VertexEdgeTraits, false > VertexEdgeCCWIter
Enumerates incident edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:258
OpenMesh::PolyConnectivity::VVCCWIter
VertexVertexCCWIter VVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:415
OpenMesh::PolyConnectivity::CVIHCCWIter
ConstVertexIHalfedgeCCWIter CVIHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:447
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCWIter
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:386
OpenMesh::PolyConnectivity::ConstFaceFaceCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceCWIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_cwbegin, &PolyConnectivity::cff_cwend > > ConstFaceFaceCWRange
Definition: PolyConnectivity.hh:1191
OpenMesh::PolyConnectivity::halfedges_end
HalfedgeIter halfedges_end()
End iterator for halfedges.
Definition: PolyConnectivity_inline_impl.hh:309
OpenMesh::PolyConnectivity::CFHCCWIter
ConstFaceHalfedgeCCWIter CFHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:459
OpenMesh::PolyConnectivity::VHandle
VertexHandle VHandle
Alias typedef.
Definition: PolyConnectivity.hh:398
OpenMesh::PolyConnectivity::CFVCCWIter
ConstFaceVertexCCWIter CFVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:456
OpenMesh::PolyConnectivity::This
PolyConnectivity This
Invalid handle.
Definition: PolyConnectivity.hh:129
OpenMesh::PolyConnectivity::HalfedgeIter
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:140
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeCCWIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_ccwbegin, &PolyConnectivity::cfh_ccwend > > ConstFaceHalfedgeCCWRange
Definition: PolyConnectivity.hh:1200
OpenMesh::PolyConnectivity::CVFCCWIter
ConstVertexFaceCCWIter CVFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:453
OpenMesh::PolyConnectivity::ConstVertexVertexCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_ccwbegin, &PolyConnectivity::cvv_ccwend > > ConstVertexVertexCCWRange
Definition: PolyConnectivity.hh:1194
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeIter
VertexIHalfedgeIter ConstVertexIHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:285
OpenMesh::PolyConnectivity::VFCCWIter
VertexFaceCCWIter VFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:427
OpenMesh::PolyConnectivity::ConstFaceFaceIter
FaceFaceIter ConstFaceFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:378
OpenMesh::PolyConnectivity::FECWIter
FaceEdgeCWIter FECWIter
Alias typedef.
Definition: PolyConnectivity.hh:435
OpenMesh::PolyConnectivity::VertexVertexCCWIter
Iterators::GenericCirculatorT< VertexVertexTraits, false > VertexVertexCCWIter
Enumerates 1-ring vertices in a counter clockwise fashion.
Definition: PolyConnectivity.hh:180
OpenMesh::PolyConnectivity::vertices_sbegin
VertexIter vertices_sbegin()
Begin iterator for vertices.
Definition: PolyConnectivity_inline_impl.hh:340
OpenMesh::PolyConnectivity::deref
const Vertex & deref(VertexHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1651
OpenMesh::PolyConnectivity::halfedges_sbegin
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
Definition: PolyConnectivity_inline_impl.hh:346
OpenMesh::PolyConnectivity::elements
ElementRange< HandleType >::RangeSkipping elements() const
OpenMesh::PolyConnectivity::FVCCWIter
FaceVertexCCWIter FVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:430
OpenMesh::PolyConnectivity::CVIter
ConstVertexIter CVIter
Alias typedef.
Definition: PolyConnectivity.hh:408
OpenMesh::PolyConnectivity::CHIter
ConstHalfedgeIter CHIter
Alias typedef.
Definition: PolyConnectivity.hh:409
OpenMesh::PolyConnectivity::FaceVertexCWIter
Iterators::GenericCirculatorT< FaceVertexTraits, false > FaceVertexCWIter
Enumerate incident vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:316
OpenMesh::PolyConnectivity::halfedges_begin
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
Definition: PolyConnectivity_inline_impl.hh:303
OpenMesh::PolyConnectivity::InvalidHalfedgeHandle
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:122
OpenMesh::PolyConnectivity::opposite_halfedge_handle
SmartHalfedgeHandle opposite_halfedge_handle(SmartHalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
Definition: PolyConnectivity_inline_impl.hh:57
OpenMesh::PolyConnectivity::ConstFaceFaceCWIter
FaceFaceCWIter ConstFaceFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:379
OpenMesh::PolyConnectivity::all_elements
ElementRange< HandleType >::Range all_elements() const
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCCWIter
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:374
OpenMesh::PolyConnectivity::edges_sbegin
EdgeIter edges_sbegin()
Begin iterator for edges.
Definition: PolyConnectivity_inline_impl.hh:352
OpenMesh::PolyConnectivity::ConstVertexVertexCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > > ConstVertexVertexCWRange
Definition: PolyConnectivity.hh:1183
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeCCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_ccwbegin, &PolyConnectivity::cvoh_ccwend > > ConstVertexOHalfedgeCCWRange
Definition: PolyConnectivity.hh:1196
OpenMesh::PolyConnectivity::ConstEdgeRangeSkipping
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > > ConstEdgeRangeSkipping
Definition: PolyConnectivity.hh:1093
OpenMesh::PolyConnectivity::edges_begin
EdgeIter edges_begin()
Begin iterator for edges.
Definition: PolyConnectivity_inline_impl.hh:315
OpenMesh::PolyConnectivity::CFECCWIter
ConstFaceEdgeCCWIter CFECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:462
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopCCWIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_ccwbegin, &PolyConnectivity::chl_ccwend > > ConstHalfedgeLoopCCWRange
Definition: PolyConnectivity.hh:1203
OpenMesh::PolyConnectivity::CEIter
ConstEdgeIter CEIter
Alias typedef.
Definition: PolyConnectivity.hh:410
OpenMesh::PolyConnectivity::ConstFaceVertexCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexCWIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_cwbegin, &PolyConnectivity::cfv_cwend > > ConstFaceVertexCWRange
Definition: PolyConnectivity.hh:1188
OpenMesh::PolyConnectivity::CFVIter
ConstFaceVertexIter CFVIter
Alias typedef.
Definition: PolyConnectivity.hh:454
OpenMesh::PolyConnectivity::ConstVertexVertexCCWIter
VertexVertexCCWIter ConstVertexVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:281
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > > ConstVertexIHalfedgeRange
Definition: PolyConnectivity.hh:1173
OpenMesh::PolyConnectivity::CVOHIter
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
Definition: PolyConnectivity.hh:442
OpenMesh::PolyConnectivity::VertexIter
Iterators::GenericIteratorT< This, This::VertexHandle, ArrayKernel, &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices > VertexIter
Linear iterator.
Definition: PolyConnectivity.hh:139
OpenMesh::PolyConnectivity::ConstFaceRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > > ConstFaceRange
Definition: PolyConnectivity.hh:1098
OpenMesh::PolyConnectivity::ConstFaceFaceCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceCCWIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_ccwbegin, &PolyConnectivity::cff_ccwend > > ConstFaceFaceCCWRange
Definition: PolyConnectivity.hh:1202
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_cwbegin, &PolyConnectivity::cvih_cwend > > ConstVertexIHalfedgeCWRange
Definition: PolyConnectivity.hh:1184
OpenMesh::PolyConnectivity::VertexIHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< VertexOppositeHalfedgeTraits > VertexIHalfedgeIter
Enumerates incoming half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:213
OpenMesh::PolyConnectivity::ConstVertexRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > > ConstVertexRange
Definition: PolyConnectivity.hh:1068
OpenMesh::PolyConnectivity::ConstFaceFaceCCWIter
FaceFaceCCWIter ConstFaceFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:380
OpenMesh::PolyConnectivity::CFEIter
ConstFaceEdgeIter CFEIter
Alias typedef.
Definition: PolyConnectivity.hh:460
OpenMesh::PolyConnectivity::PolyConnectivity
PolyConnectivity()
Alias typedef.
Definition: PolyConnectivity.hh:470
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCWIter
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:283
OpenMesh::PolyConnectivity::ConstFaceEdgeCWIter
FaceEdgeCWIter ConstFaceEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:376
OpenMesh::PolyConnectivity::CVIHCWIter
ConstVertexIHalfedgeCWIter CVIHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:446
OpenMesh::PolyConnectivity::CFHIter
ConstFaceHalfedgeIter CFHIter
Alias typedef.
Definition: PolyConnectivity.hh:457
OpenMesh::PolyConnectivity::CFVCWIter
ConstFaceVertexCWIter CFVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:455
OpenMesh::PolyConnectivity::VFIter
VertexFaceIter VFIter
Alias typedef.
Definition: PolyConnectivity.hh:425
OpenMesh::PolyConnectivity::VertexVertexIter
Iterators::GenericCirculatorT_DEPRECATED< VertexVertexTraits > VertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:174
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_cwbegin, &PolyConnectivity::cvoh_cwend > > ConstVertexOHalfedgeCWRange
Definition: PolyConnectivity.hh:1185
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCCWIter
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:387
OpenMesh::PolyConnectivity::CVOHCCWIter
ConstVertexOHalfedgeCCWIter CVOHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:444
OpenMesh::PolyConnectivity::HIter
HalfedgeIter HIter
Alias typedef.
Definition: PolyConnectivity.hh:404
OpenMesh::PolyConnectivity::ConstVertexEdgeIter
VertexEdgeIter ConstVertexEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:291
OpenMesh::PolyConnectivity::FaceHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > FaceHalfedgeIter
Enumerate incident half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:321
OpenMesh::PolyConnectivity::ConstFaceEdgeRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > > ConstFaceEdgeRange
Definition: PolyConnectivity.hh:1179
OpenMesh::PolyConnectivity::VertexOHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< VertexHalfedgeTraits > VertexOHalfedgeIter
Enumerates outgoing half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:194
OpenMesh::PolyConnectivity::ConstHalfedgeLoopIter
HalfedgeLoopIter ConstHalfedgeLoopIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:385
OpenMesh::PolyConnectivity::HHandle
HalfedgeHandle HHandle
Alias typedef.
Definition: PolyConnectivity.hh:399
OpenMesh::PolyConnectivity::is_triangles
static bool is_triangles()
Alias typedef.
Definition: PolyConnectivity.hh:473
OpenMesh::PolyConnectivity::CFFCWIter
ConstFaceFaceCWIter CFFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:464
OpenMesh::PolyConnectivity::ConstHalfedgeLoopRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_begin, &PolyConnectivity::chl_end > > ConstHalfedgeLoopRange
Definition: PolyConnectivity.hh:1181
OpenMesh::PolyConnectivity::VIHIter
VertexIHalfedgeIter VIHIter
Alias typedef.
Definition: PolyConnectivity.hh:419
OpenMesh::PolyConnectivity::ConstVertexFaceIter
VertexFaceIter ConstVertexFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:288
OpenMesh::PolyConnectivity::VIter
VertexIter VIter
Alias typedef.
Definition: PolyConnectivity.hh:403
OpenMesh::PolyConnectivity::ConstVertexEdgeCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeCWIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_cwbegin, &PolyConnectivity::cve_cwend > > ConstVertexEdgeCWRange
Definition: PolyConnectivity.hh:1186
OpenMesh::PolyConnectivity::ConstVertexEdgeCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeCCWIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_ccwbegin, &PolyConnectivity::cve_ccwend > > ConstVertexEdgeCCWRange
Definition: PolyConnectivity.hh:1197
OpenMesh::PolyConnectivity::ConstVertexIter
VertexIter ConstVertexIter
Linear iterator.
Definition: PolyConnectivity.hh:144
OpenMesh::PolyConnectivity::FaceIter
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
Definition: PolyConnectivity.hh:142
OpenMesh::PolyConnectivity::VertexEdgeIter
Iterators::GenericCirculatorT_DEPRECATED< VertexEdgeTraits > VertexEdgeIter
Enumerates incident edges in a clockwise fashion.
Definition: PolyConnectivity.hh:253
OpenMesh::PolyConnectivity::ConstFaceVertexIter
FaceVertexIter ConstFaceVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:369
OpenMesh::PolyConnectivity::ConstFaceEdgeCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeCWIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_cwbegin, &PolyConnectivity::cfe_cwend > > ConstFaceEdgeCWRange
Definition: PolyConnectivity.hh:1190
OpenMesh::PolyConnectivity::deref
Edge & deref(EdgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1656
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCCWIter
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:287
OpenMesh::PolyConnectivity::CVECWIter
ConstVertexEdgeCWIter CVECWIter
Alias typedef.
Definition: PolyConnectivity.hh:449
OpenMesh::PolyConnectivity::ConstVertexFaceCWIter
VertexFaceCWIter ConstVertexFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:289
OpenMesh::PolyConnectivity::ConstVertexEdgeRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, EdgeHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > > ConstVertexEdgeRange
Definition: PolyConnectivity.hh:1175
OpenMesh::PolyConnectivity::deref
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1654
OpenMesh::PolyConnectivity::FECWWIter
FaceEdgeCCWIter FECWWIter
Alias typedef.
Definition: PolyConnectivity.hh:436
OpenMesh::PolyConnectivity::FHIter
FaceHalfedgeIter FHIter
Alias typedef.
Definition: PolyConnectivity.hh:431
OpenMesh::PolyConnectivity::deref
const Edge & deref(EdgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1655
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
Definition: PolyConnectivity.hh:1454
OpenMesh::PolyConnectivity::faces_sbegin
FaceIter faces_sbegin()
Begin iterator for faces.
Definition: PolyConnectivity_inline_impl.hh:358
OpenMesh::PolyConnectivity::~PolyConnectivity
virtual ~PolyConnectivity()
Alias typedef.
Definition: PolyConnectivity.hh:471
OpenMesh::PolyConnectivity::VertexOHalfedgeCCWIter
Iterators::GenericCirculatorT< VertexHalfedgeTraits, false > VertexOHalfedgeCCWIter
Enumerates outgoing half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:200
OpenMesh::PolyConnectivity::VertexFaceIter
Iterators::GenericCirculatorT_DEPRECATED< VertexFaceTraits > VertexFaceIter
Enumerates incident faces in a clockwise fashion.
Definition: PolyConnectivity.hh:233
OpenMesh::PolyConnectivity::VECWIter
VertexEdgeCWIter VECWIter
Alias typedef.
Definition: PolyConnectivity.hh:423
OpenMesh::PolyConnectivity::InvalidFaceHandle
static const FaceHandle InvalidFaceHandle
Invalid handle.
Definition: PolyConnectivity.hh:126
OpenMesh::PolyConnectivity::EdgeIter
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:141
OpenMesh::PolyConnectivity::CVECCWIter
ConstVertexEdgeCCWIter CVECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:450
OpenMesh::PolyConnectivity::CVVCCWIter
ConstVertexVertexCCWIter CVVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:441
OpenMesh::PolyConnectivity::FHCWWIter
FaceHalfedgeCCWIter FHCWWIter
Alias typedef.
Definition: PolyConnectivity.hh:433
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
Definition: PolyConnectivity.hh:1471
OpenMesh::PolyConnectivity::HalfedgeLoopCCWIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > HalfedgeLoopCCWIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:277
OpenMesh::PolyConnectivity::FaceFaceCCWIter
Iterators::GenericCirculatorT< FaceFaceTraits, true > FaceFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:362
OpenMesh::PolyConnectivity::ConstFaceEdgeCCWIter
FaceEdgeCCWIter ConstFaceEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:377
OpenMesh::PolyConnectivity::deref
const Face & deref(FaceHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1657
OpenMesh::PolyConnectivity::CVVCWIter
ConstVertexVertexCWIter CVVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:440
OpenMesh::PolyConnectivity::HalfedgeLoopIter
Iterators::GenericCirculatorT_DEPRECATED< FaceHalfedgeTraits > HalfedgeLoopIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:272
OpenMesh::PolyConnectivity::ConstEdgeRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > > ConstEdgeRange
Definition: PolyConnectivity.hh:1088
OpenMesh::PolyConnectivity::ConstFaceEdgeCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceEdgeCCWIter, FaceHandle, EdgeHandle, &PolyConnectivity::cfe_ccwbegin, &PolyConnectivity::cfe_ccwend > > ConstFaceEdgeCCWRange
Definition: PolyConnectivity.hh:1201
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCCWIter
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:284
OpenMesh::PolyConnectivity::ConstHalfedgeRangeSkipping
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRangeSkipping
Definition: PolyConnectivity.hh:1083
OpenMesh::PolyConnectivity::CVOHCWIter
ConstVertexOHalfedgeCWIter CVOHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:443
OpenMesh::PolyConnectivity::ConstFaceHalfedgeIter
FaceHalfedgeIter ConstFaceHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:372
OpenMesh::PolyConnectivity::VOHCWIter
VertexOHalfedgeCWIter VOHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:417
OpenMesh::PolyConnectivity::FaceVertexIter
Iterators::GenericCirculatorT_DEPRECATED< FaceVertexTraits > FaceVertexIter
Enumerate incident vertices in a counter clockwise fashion.
Definition: PolyConnectivity.hh:310
OpenMesh::PolyConnectivity::FVCWIter
FaceVertexCWIter FVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:429
OpenMesh::PolyConnectivity::vertices_begin
VertexIter vertices_begin()
Begin iterator for vertices.
Definition: PolyConnectivity_inline_impl.hh:291
OpenMesh::PolyConnectivity::CFIter
ConstFaceIter CFIter
Alias typedef.
Definition: PolyConnectivity.hh:411
OpenMesh::PolyConnectivity::ConstVertexFaceCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceCWIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_cwbegin, &PolyConnectivity::cvf_cwend > > ConstVertexFaceCWRange
Definition: PolyConnectivity.hh:1187
OpenMesh::PolyConnectivity::VertexFaceCWIter
Iterators::GenericCirculatorT< VertexFaceTraits, true > VertexFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:234
OpenMesh::PolyConnectivity::ConstHalfedgeIter
HalfedgeIter ConstHalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:145
OpenMesh::PolyConnectivity::VertexIHalfedgeCCWIter
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, false > VertexIHalfedgeCCWIter
Enumerates incoming half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:219
OpenMesh::PolyConnectivity::ConstFaceVertexCCWIter
FaceVertexCCWIter ConstFaceVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:371
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > > ConstVertexOHalfedgeRange
Definition: PolyConnectivity.hh:1174
OpenMesh::PolyConnectivity::InvalidEdgeHandle
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:124
OpenMesh::PolyConnectivity::ConstVertexRangeSkipping
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > > ConstVertexRangeSkipping
Definition: PolyConnectivity.hh:1073
OpenMesh::PolyConnectivity::VertexEdgeCWIter
Iterators::GenericCirculatorT< VertexEdgeTraits, true > VertexEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:254
OpenMesh::PolyConnectivity::FEIter
FaceEdgeIter FEIter
Alias typedef.
Definition: PolyConnectivity.hh:434
OpenMesh::PolyConnectivity::ConstFaceEdgeIter
FaceEdgeIter ConstFaceEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:375
OpenMesh::PolyConnectivity::CVEIter
ConstVertexEdgeIter CVEIter
Alias typedef.
Definition: PolyConnectivity.hh:448
OpenMesh::PolyConnectivity::deref
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1653
OpenMesh::PolyConnectivity::FaceHalfedgeCCWIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, true > FaceHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:322
OpenMesh::PolyConnectivity::VertexIHalfedgeCWIter
Iterators::GenericCirculatorT< VertexOppositeHalfedgeTraits, true > VertexIHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:214
OpenMesh::PolyConnectivity::faces_end
FaceIter faces_end()
End iterator for faces.
Definition: PolyConnectivity_inline_impl.hh:333
OpenMesh::PolyConnectivity::assign_connectivity
void assign_connectivity(const PolyConnectivity &_other)
assign_connectivity() method.
Definition: PolyConnectivity.hh:478
OpenMesh::PolyConnectivity::VOHCCWIter
VertexOHalfedgeCCWIter VOHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:418
OpenMesh::PolyConnectivity::ConstVertexFaceRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > > ConstVertexFaceRange
Definition: PolyConnectivity.hh:1176
OpenMesh::PolyConnectivity::EHandle
EdgeHandle EHandle
Alias typedef.
Definition: PolyConnectivity.hh:400
OpenMesh::PolyConnectivity::FHandle
FaceHandle FHandle
Alias typedef.
Definition: PolyConnectivity.hh:401
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexIHalfedgeCCWIter, VertexHandle, HalfedgeHandle, &PolyConnectivity::cvih_ccwbegin, &PolyConnectivity::cvih_ccwend > > ConstVertexIHalfedgeCCWRange
Definition: PolyConnectivity.hh:1195
OpenMesh::PolyConnectivity::FaceVertexCCWIter
Iterators::GenericCirculatorT< FaceVertexTraits, true > FaceVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:311
OpenMesh::PolyConnectivity::CFECWIter
ConstFaceEdgeCWIter CFECWIter
Alias typedef.
Definition: PolyConnectivity.hh:461
OpenMesh::PolyConnectivity::CFFIter
ConstFaceFaceIter CFFIter
Alias typedef.
Definition: PolyConnectivity.hh:463
OpenMesh::PolyConnectivity::ConstVertexFaceCCWIter
VertexFaceCCWIter ConstVertexFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:290
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeIter
VertexOHalfedgeIter ConstVertexOHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:282
OpenMesh::PolyConnectivity::VIHICWter
VertexIHalfedgeCWIter VIHICWter
Alias typedef.
Definition: PolyConnectivity.hh:420
OpenMesh::PolyConnectivity::VEIter
VertexEdgeIter VEIter
Alias typedef.
Definition: PolyConnectivity.hh:422
OpenMesh::PolyConnectivity::ConstFaceIter
FaceIter ConstFaceIter
Linear iterator.
Definition: PolyConnectivity.hh:147
OpenMesh::PolyConnectivity::deref
Face & deref(FaceHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1658
OpenMesh::PolyConnectivity::VOHIter
VertexOHalfedgeIter VOHIter
Alias typedef.
Definition: PolyConnectivity.hh:416
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCWIter
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:286
OpenMesh::PolyConnectivity::ConstVertexEdgeCWIter
VertexEdgeCWIter ConstVertexEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:292
OpenMesh::PolyConnectivity::VertexVertexCWIter
Iterators::GenericCirculatorT< VertexVertexTraits, true > VertexVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:175
OpenMesh::PolyConnectivity::CVFCWIter
ConstVertexFaceCWIter CVFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:452
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
Definition: PolyConnectivity.hh:1443
OpenMesh::PolyConnectivity::ConstHalfedgeRange
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > > ConstHalfedgeRange
Definition: PolyConnectivity.hh:1078
OpenMesh::PolyConnectivity::FaceHalfedgeCWIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > FaceHalfedgeCWIter
Enumerate incident half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:327
OpenMesh::PolyConnectivity::ConstVertexVertexCWIter
VertexVertexCWIter ConstVertexVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:280
OpenMesh::PolyConnectivity::deref
Vertex & deref(VertexHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1652
OpenMesh::PolyConnectivity::ConstVertexEdgeCCWIter
VertexEdgeCCWIter ConstVertexEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:293
OpenMesh::PolyConnectivity::ConstVertexVertexIter
VertexVertexIter ConstVertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:279
OpenMesh::PolyConnectivity::VFCWIter
VertexFaceCWIter VFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:426
OpenMesh::PolyConnectivity::FaceFaceIter
Iterators::GenericCirculatorT_DEPRECATED< FaceFaceTraits > FaceFaceIter
Enumerate adjacent faces in a counter clockwise fashion.
Definition: PolyConnectivity.hh:361
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCWIter
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:373
OpenMesh::PolyConnectivity::ConstFaceHalfedgeRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, HalfedgeHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > > ConstFaceHalfedgeRange
Definition: PolyConnectivity.hh:1178
OpenMesh::PolyConnectivity::HalfedgeLoopCWIter
Iterators::GenericCirculatorT< FaceHalfedgeTraits, false > HalfedgeLoopCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:273
OpenMesh::PolyConnectivity::FaceFaceCWIter
Iterators::GenericCirculatorT< FaceFaceTraits, false > FaceFaceCWIter
Enumerate adjacent faces in a clockwise fashion.
Definition: PolyConnectivity.hh:367
OpenMesh::PolyConnectivity::FaceEdgeIter
Iterators::GenericCirculatorT_DEPRECATED< FaceEdgeTraits > FaceEdgeIter
Enumerate incident edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:341
OpenMesh::PolyConnectivity::vertices_end
VertexIter vertices_end()
End iterator for vertices.
Definition: PolyConnectivity_inline_impl.hh:297
OpenMesh::PolyConnectivity::FaceEdgeCWIter
Iterators::GenericCirculatorT< FaceEdgeTraits, false > FaceEdgeCWIter
Enumerate incident edges in a clockwise fashion.
Definition: PolyConnectivity.hh:347
OpenMesh::PolyConnectivity::VertexFaceCCWIter
Iterators::GenericCirculatorT< VertexFaceTraits, false > VertexFaceCCWIter
Enumerates incident faces in a counter clockwise fashion.
Definition: PolyConnectivity.hh:239
OpenMesh::PolyConnectivity::ConstFaceFaceRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceFaceIter, FaceHandle, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > > ConstFaceFaceRange
Definition: PolyConnectivity.hh:1180
OpenMesh::PolyConnectivity::CFHCWIter
ConstFaceHalfedgeCWIter CFHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:458
OpenMesh::PolyConnectivity::faces_begin
FaceIter faces_begin()
Begin iterator for faces.
Definition: PolyConnectivity_inline_impl.hh:327
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstHalfedgeLoopCWIter, HalfedgeHandle, HalfedgeHandle, &PolyConnectivity::chl_cwbegin, &PolyConnectivity::chl_cwend > > ConstHalfedgeLoopCWRange
Definition: PolyConnectivity.hh:1192
OpenMesh::PolyConnectivity::FVIter
FaceVertexIter FVIter
Alias typedef.
Definition: PolyConnectivity.hh:428
OpenMesh::PolyConnectivity::FFIter
FaceFaceIter FFIter
Alias typedef.
Definition: PolyConnectivity.hh:437
OpenMesh::PolyConnectivity::FHCWIter
FaceHalfedgeCWIter FHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:432
OpenMesh::PolyConnectivity::FaceEdgeCCWIter
Iterators::GenericCirculatorT< FaceEdgeTraits, true > FaceEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:342
OpenMesh::PolyConnectivity::CFFCCWIter
ConstFaceFaceCCWIter CFFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:465
OpenMesh::PolyConnectivity::ConstVertexFaceCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstVertexFaceCCWIter, VertexHandle, FaceHandle, &PolyConnectivity::cvf_ccwbegin, &PolyConnectivity::cvf_ccwend > > ConstVertexFaceCCWRange
Definition: PolyConnectivity.hh:1198
OpenMesh::PolyConnectivity::VIHICCWter
VertexIHalfedgeCCWIter VIHICCWter
Alias typedef.
Definition: PolyConnectivity.hh:421
OpenMesh::PolyConnectivity::ConstFaceRangeSkipping
EntityRange< RangeTraitT< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > > ConstFaceRangeSkipping
Definition: PolyConnectivity.hh:1103
OpenMesh::PolyConnectivity::CVIHIter
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
Definition: PolyConnectivity.hh:445
OpenMesh::PolyConnectivity::ConstFaceVertexCCWRange
CirculatorRange< CirculatorRangeTraitT< PolyConnectivity, ConstFaceVertexCCWIter, FaceHandle, VertexHandle, &PolyConnectivity::cfv_ccwbegin, &PolyConnectivity::cfv_ccwend > > ConstFaceVertexCCWRange
Definition: PolyConnectivity.hh:1199
OpenMesh::PolyConnectivity::VECCWIter
VertexEdgeCCWIter VECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:424
OpenMesh::PolyConnectivity::ConstFaceVertexCWIter
FaceVertexCWIter ConstFaceVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:370
OpenMesh::PolyConnectivity::FIter
FaceIter FIter
Alias typedef.
Definition: PolyConnectivity.hh:406
OpenMesh::PolyConnectivity::VertexOHalfedgeCWIter
Iterators::GenericCirculatorT< VertexHalfedgeTraits, true > VertexOHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:195
OpenMesh::PolyConnectivity::CVFIter
ConstVertexFaceIter CVFIter
Alias typedef.
Definition: PolyConnectivity.hh:451
OpenMesh::PolyConnectivity::VertexVertexTraits
Definition: PolyConnectivity.hh:163
OpenMesh::PolyConnectivity::VertexHalfedgeTraits
Definition: PolyConnectivity.hh:184
OpenMesh::PolyConnectivity::VertexOppositeHalfedgeTraits
Definition: PolyConnectivity.hh:203
OpenMesh::PolyConnectivity::VertexFaceTraits
Definition: PolyConnectivity.hh:223
OpenMesh::PolyConnectivity::VertexEdgeTraits
Definition: PolyConnectivity.hh:243
OpenMesh::PolyConnectivity::FaceHalfedgeTraits
Definition: PolyConnectivity.hh:262
OpenMesh::PolyConnectivity::FaceVertexTraits
Definition: PolyConnectivity.hh:300
OpenMesh::PolyConnectivity::FaceEdgeTraits
Definition: PolyConnectivity.hh:331
OpenMesh::PolyConnectivity::FaceFaceTraits
Definition: PolyConnectivity.hh:351
OpenMesh::PolyConnectivity::ElementRange
Definition: PolyConnectivity.hh:1107
OpenMesh::SmartVertexHandle
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
Definition: SmartHandles.hh:110
OpenMesh::SmartHalfedgeHandle
Definition: SmartHandles.hh:170
OpenMesh::SmartEdgeHandle
Definition: SmartHandles.hh:197
OpenMesh::SmartFaceHandle
Definition: SmartHandles.hh:219