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

| OpenMesh

PolyConnectivity.hh
1 /* ========================================================================= *
2 * *
3 * OpenMesh *
4 * Copyright (c) 2001-2015, 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 * $Revision$ *
45 * $Date$ *
46 * *
47 \*===========================================================================*/
48
49 #ifndef OPENMESH_POLYCONNECTIVITY_HH
50 #define OPENMESH_POLYCONNECTIVITY_HH
51
52 #include <OpenMesh/Core/Mesh/ArrayKernel.hh>
53 #include <OpenMesh/Core/Mesh/IteratorsT.hh>
54 #include <OpenMesh/Core/Mesh/CirculatorsT.hh>
55
56 namespace OpenMesh
57 {
58
61 class OPENMESHDLLEXPORT PolyConnectivity : public ArrayKernel
62 {
63 public:
65
66 static const VertexHandle InvalidVertexHandle;
69 static const HalfedgeHandle InvalidHalfedgeHandle;
71 static const EdgeHandle InvalidEdgeHandle;
73 static const FaceHandle InvalidFaceHandle;
75
76 typedef PolyConnectivity This;
77
78 //--- iterators ---
79
85 typedef Iterators::GenericIteratorT<This, This::VertexHandle, ArrayKernel , &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices> VertexIter;
87 typedef Iterators::GenericIteratorT<This, This::HalfedgeHandle, ArrayKernel , &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges> HalfedgeIter;
88 typedef Iterators::GenericIteratorT<This, This::EdgeHandle, ArrayKernel , &ArrayKernel::has_edge_status, &ArrayKernel::n_edges> EdgeIter;
89 typedef Iterators::GenericIteratorT<This, This::FaceHandle, ArrayKernel , &ArrayKernel::has_face_status, &ArrayKernel::n_faces> FaceIter;
90
91 typedef VertexIter ConstVertexIter;
92 typedef HalfedgeIter ConstHalfedgeIter;
93 typedef EdgeIter ConstEdgeIter;
94 typedef FaceIter ConstFaceIter;
96
97 //--- circulators ---
98
104
105 /*
106 * Vertex-centered circulators
107 */
108
112 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::VertexHandle,
113 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle>
114 VertexVertexIter;
115 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::VertexHandle,
116 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle> VertexVertexCWIter;
117
121 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::VertexHandle,
122 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle, false>
123 VertexVertexCCWIter;
124
128 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::HalfedgeHandle,
129 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
130 VertexOHalfedgeIter;
131 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
132 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle> VertexOHalfedgeCWIter;
133
137 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
138 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle, false>
139 VertexOHalfedgeCCWIter;
140
144 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::HalfedgeHandle,
145 &Iterators::GenericCirculatorBaseT<This>::toOppositeHalfedgeHandle>
146 VertexIHalfedgeIter;
147 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
148 &Iterators::GenericCirculatorBaseT<This>::toOppositeHalfedgeHandle> VertexIHalfedgeCWIter;
149
153 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
154 &Iterators::GenericCirculatorBaseT<This>::toOppositeHalfedgeHandle, false>
155 VertexIHalfedgeCCWIter;
156
160 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::FaceHandle,
161 &Iterators::GenericCirculatorBaseT<This>::toFaceHandle>
162 VertexFaceIter;
163 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::FaceHandle,
164 &Iterators::GenericCirculatorBaseT<This>::toFaceHandle> VertexFaceCWIter;
165
169 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::FaceHandle,
170 &Iterators::GenericCirculatorBaseT<This>::toFaceHandle, false>
171 VertexFaceCCWIter;
172
176 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::EdgeHandle,
177 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle>
178 VertexEdgeIter;
179 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::EdgeHandle,
180 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle> VertexEdgeCWIter;
184 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::EdgeHandle,
185 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle, false>
186 VertexEdgeCCWIter;
187
191 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::HalfedgeHandle,
192 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
193 HalfedgeLoopIter;
194 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
195 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle, false> HalfedgeLoopCWIter;
199 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
200 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
201 HalfedgeLoopCCWIter;
202
203 typedef VertexVertexIter ConstVertexVertexIter;
204 typedef VertexVertexCWIter ConstVertexVertexCWIter;
205 typedef VertexVertexCCWIter ConstVertexVertexCCWIter;
206 typedef VertexOHalfedgeIter ConstVertexOHalfedgeIter;
207 typedef VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter;
208 typedef VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter;
209 typedef VertexIHalfedgeIter ConstVertexIHalfedgeIter;
210 typedef VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter;
211 typedef VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter;
212 typedef VertexFaceIter ConstVertexFaceIter;
213 typedef VertexFaceCWIter ConstVertexFaceCWIter;
214 typedef VertexFaceCCWIter ConstVertexFaceCCWIter;
215 typedef VertexEdgeIter ConstVertexEdgeIter;
216 typedef VertexEdgeCWIter ConstVertexEdgeCWIter;
217 typedef VertexEdgeCCWIter ConstVertexEdgeCCWIter;
218
219 /*
220 * Face-centered circulators
221 */
222
226 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::VertexHandle,
227 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle>
228 FaceVertexIter;
229 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::VertexHandle,
230 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle> FaceVertexCCWIter;
231
235 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::VertexHandle,
236 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle, false>
237 FaceVertexCWIter;
238
242 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::HalfedgeHandle,
243 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
244 FaceHalfedgeIter;
245 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
246 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle> FaceHalfedgeCCWIter;
247
251 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
252 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle, false>
253 FaceHalfedgeCWIter;
254
258 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::EdgeHandle,
259 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle>
260 FaceEdgeIter;
261 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::EdgeHandle,
262 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle> FaceEdgeCCWIter;
263
267 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::EdgeHandle,
268 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle, false>
269 FaceEdgeCWIter;
270
274 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::FaceHandle,
275 &Iterators::GenericCirculatorBaseT<This>::toOppositeFaceHandle>
276 FaceFaceIter;
277 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::FaceHandle,
278 &Iterators::GenericCirculatorBaseT<This>::toOppositeFaceHandle> FaceFaceCCWIter;
279
283 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::FaceHandle,
284 &Iterators::GenericCirculatorBaseT<This>::toOppositeFaceHandle, false>
285 FaceFaceCWIter;
286
287 typedef FaceVertexIter ConstFaceVertexIter;
288 typedef FaceVertexCWIter ConstFaceVertexCWIter;
289 typedef FaceVertexCCWIter ConstFaceVertexCCWIter;
290 typedef FaceHalfedgeIter ConstFaceHalfedgeIter;
291 typedef FaceHalfedgeCWIter ConstFaceHalfedgeCWIter;
292 typedef FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter;
293 typedef FaceEdgeIter ConstFaceEdgeIter;
294 typedef FaceEdgeCWIter ConstFaceEdgeCWIter;
295 typedef FaceEdgeCCWIter ConstFaceEdgeCCWIter;
296 typedef FaceFaceIter ConstFaceFaceIter;
297 typedef FaceFaceCWIter ConstFaceFaceCWIter;
298 typedef FaceFaceCCWIter ConstFaceFaceCCWIter;
299
300 /*
301 * Halfedge circulator
302 */
303 typedef HalfedgeLoopIter ConstHalfedgeLoopIter;
304 typedef HalfedgeLoopCWIter ConstHalfedgeLoopCWIter;
305 typedef HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter;
306
308
309 // --- shortcuts
310
315 typedef VertexHandle VHandle;
317 typedef HalfedgeHandle HHandle;
318 typedef EdgeHandle EHandle;
319 typedef FaceHandle FHandle;
320
321 typedef VertexIter VIter;
322 typedef HalfedgeIter HIter;
323 typedef EdgeIter EIter;
324 typedef FaceIter FIter;
325
326 typedef ConstVertexIter CVIter;
327 typedef ConstHalfedgeIter CHIter;
328 typedef ConstEdgeIter CEIter;
329 typedef ConstFaceIter CFIter;
330
331 typedef VertexVertexIter VVIter;
332 typedef VertexVertexCWIter VVCWIter;
333 typedef VertexVertexCCWIter VVCCWIter;
334 typedef VertexOHalfedgeIter VOHIter;
335 typedef VertexOHalfedgeCWIter VOHCWIter;
336 typedef VertexOHalfedgeCCWIter VOHCCWIter;
337 typedef VertexIHalfedgeIter VIHIter;
338 typedef VertexIHalfedgeCWIter VIHICWter;
339 typedef VertexIHalfedgeCCWIter VIHICCWter;
340 typedef VertexEdgeIter VEIter;
341 typedef VertexEdgeCWIter VECWIter;
342 typedef VertexEdgeCCWIter VECCWIter;
343 typedef VertexFaceIter VFIter;
344 typedef VertexFaceCWIter VFCWIter;
345 typedef VertexFaceCCWIter VFCCWIter;
346 typedef FaceVertexIter FVIter;
347 typedef FaceVertexCWIter FVCWIter;
348 typedef FaceVertexCCWIter FVCCWIter;
349 typedef FaceHalfedgeIter FHIter;
350 typedef FaceHalfedgeCWIter FHCWIter;
351 typedef FaceHalfedgeCCWIter FHCWWIter;
352 typedef FaceEdgeIter FEIter;
353 typedef FaceEdgeCWIter FECWIter;
354 typedef FaceEdgeCCWIter FECWWIter;
355 typedef FaceFaceIter FFIter;
356
357 typedef ConstVertexVertexIter CVVIter;
358 typedef ConstVertexVertexCWIter CVVCWIter;
359 typedef ConstVertexVertexCCWIter CVVCCWIter;
360 typedef ConstVertexOHalfedgeIter CVOHIter;
361 typedef ConstVertexOHalfedgeCWIter CVOHCWIter;
362 typedef ConstVertexOHalfedgeCCWIter CVOHCCWIter;
363 typedef ConstVertexIHalfedgeIter CVIHIter;
364 typedef ConstVertexIHalfedgeCWIter CVIHCWIter;
365 typedef ConstVertexIHalfedgeCCWIter CVIHCCWIter;
366 typedef ConstVertexEdgeIter CVEIter;
367 typedef ConstVertexEdgeCWIter CVECWIter;
368 typedef ConstVertexEdgeCCWIter CVECCWIter;
369 typedef ConstVertexFaceIter CVFIter;
370 typedef ConstVertexFaceCWIter CVFCWIter;
371 typedef ConstVertexFaceCCWIter CVFCCWIter;
372 typedef ConstFaceVertexIter CFVIter;
373 typedef ConstFaceVertexCWIter CFVCWIter;
374 typedef ConstFaceVertexCCWIter CFVCCWIter;
375 typedef ConstFaceHalfedgeIter CFHIter;
376 typedef ConstFaceHalfedgeCWIter CFHCWIter;
377 typedef ConstFaceHalfedgeCCWIter CFHCCWIter;
378 typedef ConstFaceEdgeIter CFEIter;
379 typedef ConstFaceEdgeCWIter CFECWIter;
380 typedef ConstFaceEdgeCCWIter CFECCWIter;
381 typedef ConstFaceFaceIter CFFIter;
382 typedef ConstFaceFaceCWIter CFFCWIter;
383 typedef ConstFaceFaceCCWIter CFFCCWIter;
385
386 public:
387
388 PolyConnectivity() {}
389 virtual ~PolyConnectivity() {}
390
391 inline static bool is_triangles()
392 { return false; }
393
396 inline void assign_connectivity(const PolyConnectivity& _other)
397 { ArrayKernel::assign_connectivity(_other); }
398
402
404 inline VertexHandle add_vertex()
405 { return new_vertex(); }
406
414 FaceHandle add_face(const std::vector<VertexHandle>& _vhandles);
415
416
426 FaceHandle add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2);
427
438 FaceHandle add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3);
439
448 FaceHandle add_face(const VertexHandle* _vhandles, size_t _vhs_size);
449
451
453
454
459 bool is_collapse_ok(HalfedgeHandle _he);
460
461
467 void delete_vertex(VertexHandle _vh, bool _delete_isolated_vertices = true);
468
477 void delete_edge(EdgeHandle _eh, bool _delete_isolated_vertices=true);
478
489 void delete_face(FaceHandle _fh, bool _delete_isolated_vertices=true);
490
492
496
498 VertexIter vertices_begin();
500 ConstVertexIter vertices_begin() const;
502 VertexIter vertices_end();
504 ConstVertexIter vertices_end() const;
505
507 HalfedgeIter halfedges_begin();
509 ConstHalfedgeIter halfedges_begin() const;
511 HalfedgeIter halfedges_end();
513 ConstHalfedgeIter halfedges_end() const;
514
516 EdgeIter edges_begin();
518 ConstEdgeIter edges_begin() const;
520 EdgeIter edges_end();
522 ConstEdgeIter edges_end() const;
523
525 FaceIter faces_begin();
527 ConstFaceIter faces_begin() const;
529 FaceIter faces_end();
531 ConstFaceIter faces_end() const;
533
534
538
540 VertexIter vertices_sbegin()
541 { return VertexIter(*this, VertexHandle(0), true); }
543 ConstVertexIter vertices_sbegin() const
544 { return ConstVertexIter(*this, VertexHandle(0), true); }
545
547 HalfedgeIter halfedges_sbegin()
548 { return HalfedgeIter(*this, HalfedgeHandle(0), true); }
550 ConstHalfedgeIter halfedges_sbegin() const
551 { return ConstHalfedgeIter(*this, HalfedgeHandle(0), true); }
552
554 EdgeIter edges_sbegin()
555 { return EdgeIter(*this, EdgeHandle(0), true); }
557 ConstEdgeIter edges_sbegin() const
558 { return ConstEdgeIter(*this, EdgeHandle(0), true); }
559
561 FaceIter faces_sbegin()
562 { return FaceIter(*this, FaceHandle(0), true); }
564 ConstFaceIter faces_sbegin() const
565 { return ConstFaceIter(*this, FaceHandle(0), true); }
566
568
569 //--- circulators ---
570
574
576 VertexVertexIter vv_iter(VertexHandle _vh)
577 { return VertexVertexIter(*this, _vh); }
579 VertexVertexCWIter vv_cwiter(VertexHandle _vh)
580 { return VertexVertexCWIter(*this, _vh); }
582 VertexVertexCCWIter vv_ccwiter(VertexHandle _vh)
583 { return VertexVertexCCWIter(*this, _vh); }
585 VertexIHalfedgeIter vih_iter(VertexHandle _vh)
586 { return VertexIHalfedgeIter(*this, _vh); }
588 VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh)
589 { return VertexIHalfedgeCWIter(*this, _vh); }
591 VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh)
592 { return VertexIHalfedgeCCWIter(*this, _vh); }
594 VertexOHalfedgeIter voh_iter(VertexHandle _vh)
595 { return VertexOHalfedgeIter(*this, _vh); }
597 VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh)
598 { return VertexOHalfedgeCWIter(*this, _vh); }
600 VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh)
601 { return VertexOHalfedgeCCWIter(*this, _vh); }
603 VertexEdgeIter ve_iter(VertexHandle _vh)
604 { return VertexEdgeIter(*this, _vh); }
606 VertexEdgeCWIter ve_cwiter(VertexHandle _vh)
607 { return VertexEdgeCWIter(*this, _vh); }
609 VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh)
610 { return VertexEdgeCCWIter(*this, _vh); }
612 VertexFaceIter vf_iter(VertexHandle _vh)
613 { return VertexFaceIter(*this, _vh); }
615 VertexFaceCWIter vf_cwiter(VertexHandle _vh)
616 { return VertexFaceCWIter(*this, _vh); }
618 VertexFaceCCWIter vf_ccwiter(VertexHandle _vh)
619 { return VertexFaceCCWIter(*this, _vh); }
620
622 ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
623 { return ConstVertexVertexIter(*this, _vh); }
625 ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const
626 { return ConstVertexVertexCWIter(*this, _vh); }
628 ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const
629 { return ConstVertexVertexCCWIter(*this, _vh); }
631 ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
632 { return ConstVertexIHalfedgeIter(*this, _vh); }
634 ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const
635 { return ConstVertexIHalfedgeCWIter(*this, _vh); }
637 ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const
638 { return ConstVertexIHalfedgeCCWIter(*this, _vh); }
640 ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
641 { return ConstVertexOHalfedgeIter(*this, _vh); }
643 ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const
644 { return ConstVertexOHalfedgeCWIter(*this, _vh); }
646 ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const
647 { return ConstVertexOHalfedgeCCWIter(*this, _vh); }
649 ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
650 { return ConstVertexEdgeIter(*this, _vh); }
652 ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const
653 { return ConstVertexEdgeCWIter(*this, _vh); }
655 ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const
656 { return ConstVertexEdgeCCWIter(*this, _vh); }
658 ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
659 { return ConstVertexFaceIter(*this, _vh); }
661 ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const
662 { return ConstVertexFaceCWIter(*this, _vh); }
664 ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const
665 { return ConstVertexFaceCCWIter(*this, _vh); }
666
668 FaceVertexIter fv_iter(FaceHandle _fh)
669 { return FaceVertexIter(*this, _fh); }
671 FaceVertexCWIter fv_cwiter(FaceHandle _fh)
672 { return FaceVertexCWIter(*this, _fh); }
674 FaceVertexCCWIter fv_ccwiter(FaceHandle _fh)
675 { return FaceVertexCCWIter(*this, _fh); }
677 FaceHalfedgeIter fh_iter(FaceHandle _fh)
678 { return FaceHalfedgeIter(*this, _fh); }
680 FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh)
681 { return FaceHalfedgeCWIter(*this, _fh); }
683 FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh)
684 { return FaceHalfedgeCCWIter(*this, _fh); }
686 FaceEdgeIter fe_iter(FaceHandle _fh)
687 { return FaceEdgeIter(*this, _fh); }
689 FaceEdgeCWIter fe_cwiter(FaceHandle _fh)
690 { return FaceEdgeCWIter(*this, _fh); }
692 FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh)
693 { return FaceEdgeCCWIter(*this, _fh); }
695 FaceFaceIter ff_iter(FaceHandle _fh)
696 { return FaceFaceIter(*this, _fh); }
698 FaceFaceCWIter ff_cwiter(FaceHandle _fh)
699 { return FaceFaceCWIter(*this, _fh); }
701 FaceFaceCCWIter ff_ccwiter(FaceHandle _fh)
702 { return FaceFaceCCWIter(*this, _fh); }
703
705 ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
706 { return ConstFaceVertexIter(*this, _fh); }
708 ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const
709 { return ConstFaceVertexCWIter(*this, _fh); }
711 ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const
712 { return ConstFaceVertexCCWIter(*this, _fh); }
714 ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
715 { return ConstFaceHalfedgeIter(*this, _fh); }
717 ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const
718 { return ConstFaceHalfedgeCWIter(*this, _fh); }
720 ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const
721 { return ConstFaceHalfedgeCCWIter(*this, _fh); }
723 ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
724 { return ConstFaceEdgeIter(*this, _fh); }
726 ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const
727 { return ConstFaceEdgeCWIter(*this, _fh); }
729 ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const
730 { return ConstFaceEdgeCCWIter(*this, _fh); }
732 ConstFaceFaceIter cff_iter(FaceHandle _fh) const
733 { return ConstFaceFaceIter(*this, _fh); }
735 ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const
736 { return ConstFaceFaceCWIter(*this, _fh); }
738 ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const
739 { return ConstFaceFaceCCWIter(*this, _fh); }
740
741 // 'begin' circulators
742
744 VertexVertexIter vv_begin(VertexHandle _vh)
745 { return VertexVertexIter(*this, _vh); }
747 VertexVertexCWIter vv_cwbegin(VertexHandle _vh)
748 { return VertexVertexCWIter(*this, _vh); }
750 VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh)
751 { return VertexVertexCCWIter(*this, _vh); }
753 VertexIHalfedgeIter vih_begin(VertexHandle _vh)
754 { return VertexIHalfedgeIter(*this, _vh); }
756 VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh)
757 { return VertexIHalfedgeCWIter(*this, _vh); }
759 VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh)
760 { return VertexIHalfedgeCCWIter(*this, _vh); }
762 VertexOHalfedgeIter voh_begin(VertexHandle _vh)
763 { return VertexOHalfedgeIter(*this, _vh); }
765 VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh)
766 { return VertexOHalfedgeCWIter(*this, _vh); }
768 VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh)
769 { return VertexOHalfedgeCCWIter(*this, _vh); }
771 VertexEdgeIter ve_begin(VertexHandle _vh)
772 { return VertexEdgeIter(*this, _vh); }
774 VertexEdgeCWIter ve_cwbegin(VertexHandle _vh)
775 { return VertexEdgeCWIter(*this, _vh); }
777 VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh)
778 { return VertexEdgeCCWIter(*this, _vh); }
780 VertexFaceIter vf_begin(VertexHandle _vh)
781 { return VertexFaceIter(*this, _vh); }
783 VertexFaceCWIter vf_cwbegin(VertexHandle _vh)
784 { return VertexFaceCWIter(*this, _vh); }
786 VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh)
787 { return VertexFaceCCWIter(*this, _vh); }
788
789
791 ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
792 { return ConstVertexVertexIter(*this, _vh); }
794 ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
795 { return ConstVertexVertexCWIter(*this, _vh); }
797 ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const
798 { return ConstVertexVertexCCWIter(*this, _vh); }
800 ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
801 { return ConstVertexIHalfedgeIter(*this, _vh); }
803 ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const
804 { return ConstVertexIHalfedgeCWIter(*this, _vh); }
806 ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const
807 { return ConstVertexIHalfedgeCCWIter(*this, _vh); }
809 ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
810 { return ConstVertexOHalfedgeIter(*this, _vh); }
812 ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const
813 { return ConstVertexOHalfedgeCWIter(*this, _vh); }
815 ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const
816 { return ConstVertexOHalfedgeCCWIter(*this, _vh); }
818 ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
819 { return ConstVertexEdgeIter(*this, _vh); }
821 ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const
822 { return ConstVertexEdgeCWIter(*this, _vh); }
824 ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const
825 { return ConstVertexEdgeCCWIter(*this, _vh); }
827 ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
828 { return ConstVertexFaceIter(*this, _vh); }
830 ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const
831 { return ConstVertexFaceCWIter(*this, _vh); }
833 ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const
834 { return ConstVertexFaceCCWIter(*this, _vh); }
835
837 FaceVertexIter fv_begin(FaceHandle _fh)
838 { return FaceVertexIter(*this, _fh); }
840 FaceVertexCWIter fv_cwbegin(FaceHandle _fh)
841 { return FaceVertexCWIter(*this, _fh); }
843 FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh)
844 { return FaceVertexCCWIter(*this, _fh); }
846 FaceHalfedgeIter fh_begin(FaceHandle _fh)
847 { return FaceHalfedgeIter(*this, _fh); }
849 FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh)
850 { return FaceHalfedgeCWIter(*this, _fh); }
852 FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh)
853 { return FaceHalfedgeCCWIter(*this, _fh); }
855 FaceEdgeIter fe_begin(FaceHandle _fh)
856 { return FaceEdgeIter(*this, _fh); }
858 FaceEdgeCWIter fe_cwbegin(FaceHandle _fh)
859 { return FaceEdgeCWIter(*this, _fh); }
861 FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh)
862 { return FaceEdgeCCWIter(*this, _fh); }
864 FaceFaceIter ff_begin(FaceHandle _fh)
865 { return FaceFaceIter(*this, _fh); }
867 FaceFaceCWIter ff_cwbegin(FaceHandle _fh)
868 { return FaceFaceCWIter(*this, _fh); }
870 FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh)
871 { return FaceFaceCCWIter(*this, _fh); }
873 HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
874 { return HalfedgeLoopIter(*this, _heh); }
876 HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh)
877 { return HalfedgeLoopCWIter(*this, _heh); }
879 HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh)
880 { return HalfedgeLoopCCWIter(*this, _heh); }
881
883 ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
884 { return ConstFaceVertexIter(*this, _fh); }
886 ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const
887 { return ConstFaceVertexCWIter(*this, _fh); }
889 ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const
890 { return ConstFaceVertexCCWIter(*this, _fh); }
892 ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
893 { return ConstFaceHalfedgeIter(*this, _fh); }
895 ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const
896 { return ConstFaceHalfedgeCWIter(*this, _fh); }
898 ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const
899 { return ConstFaceHalfedgeCCWIter(*this, _fh); }
901 ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
902 { return ConstFaceEdgeIter(*this, _fh); }
904 ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const
905 { return ConstFaceEdgeCWIter(*this, _fh); }
907 ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const
908 { return ConstFaceEdgeCCWIter(*this, _fh); }
910 ConstFaceFaceIter cff_begin(FaceHandle _fh) const
911 { return ConstFaceFaceIter(*this, _fh); }
913 ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const
914 { return ConstFaceFaceCWIter(*this, _fh); }
916 ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const
917 { return ConstFaceFaceCCWIter(*this, _fh); }
919 ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
920 { return ConstHalfedgeLoopIter(*this, _heh); }
922 ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const
923 { return ConstHalfedgeLoopCWIter(*this, _heh); }
925 ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const
926 { return ConstHalfedgeLoopCCWIter(*this, _heh); }
927
928 // 'end' circulators
929
931 VertexVertexIter vv_end(VertexHandle _vh)
932 { return VertexVertexIter(*this, _vh, true); }
934 VertexVertexCWIter vv_cwend(VertexHandle _vh)
935 { return VertexVertexCWIter(*this, _vh, true); }
937 VertexVertexCCWIter vv_ccwend(VertexHandle _vh)
938 { return VertexVertexCCWIter(*this, _vh, true); }
940 VertexIHalfedgeIter vih_end(VertexHandle _vh)
941 { return VertexIHalfedgeIter(*this, _vh, true); }
943 VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh)
944 { return VertexIHalfedgeCWIter(*this, _vh, true); }
946 VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh)
947 { return VertexIHalfedgeCCWIter(*this, _vh, true); }
949 VertexOHalfedgeIter voh_end(VertexHandle _vh)
950 { return VertexOHalfedgeIter(*this, _vh, true); }
952 VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh)
953 { return VertexOHalfedgeCWIter(*this, _vh, true); }
955 VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh)
956 { return VertexOHalfedgeCCWIter(*this, _vh, true); }
958 VertexEdgeIter ve_end(VertexHandle _vh)
959 { return VertexEdgeIter(*this, _vh, true); }
961 VertexEdgeCWIter ve_cwend(VertexHandle _vh)
962 { return VertexEdgeCWIter(*this, _vh, true); }
964 VertexEdgeCCWIter ve_ccwend(VertexHandle _vh)
965 { return VertexEdgeCCWIter(*this, _vh, true); }
967 VertexFaceIter vf_end(VertexHandle _vh)
968 { return VertexFaceIter(*this, _vh, true); }
970 VertexFaceCWIter vf_cwend(VertexHandle _vh)
971 { return VertexFaceCWIter(*this, _vh, true); }
973 VertexFaceCCWIter vf_ccwend(VertexHandle _vh)
974 { return VertexFaceCCWIter(*this, _vh, true); }
975
977 ConstVertexVertexIter cvv_end(VertexHandle _vh) const
978 { return ConstVertexVertexIter(*this, _vh, true); }
980 ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
981 { return ConstVertexVertexCWIter(*this, _vh, true); }
983 ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const
984 { return ConstVertexVertexCCWIter(*this, _vh, true); }
986 ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
987 { return ConstVertexIHalfedgeIter(*this, _vh, true); }
989 ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const
990 { return ConstVertexIHalfedgeCWIter(*this, _vh, true); }
992 ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const
993 { return ConstVertexIHalfedgeCCWIter(*this, _vh, true); }
995 ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
996 { return ConstVertexOHalfedgeIter(*this, _vh, true); }
998 ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const
999 { return ConstVertexOHalfedgeCWIter(*this, _vh, true); }
1001 ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const
1002 { return ConstVertexOHalfedgeCCWIter(*this, _vh, true); }
1004 ConstVertexEdgeIter cve_end(VertexHandle _vh) const
1005 { return ConstVertexEdgeIter(*this, _vh, true); }
1007 ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const
1008 { return ConstVertexEdgeCWIter(*this, _vh, true); }
1010 ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const
1011 { return ConstVertexEdgeCCWIter(*this, _vh, true); }
1013 ConstVertexFaceIter cvf_end(VertexHandle _vh) const
1014 { return ConstVertexFaceIter(*this, _vh, true); }
1016 ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const
1017 { return ConstVertexFaceCWIter(*this, _vh, true); }
1019 ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const
1020 { return ConstVertexFaceCCWIter(*this, _vh, true); }
1021
1023 FaceVertexIter fv_end(FaceHandle _fh)
1024 { return FaceVertexIter(*this, _fh, true); }
1026 FaceVertexCWIter fv_cwend(FaceHandle _fh)
1027 { return FaceVertexCWIter(*this, _fh, true); }
1029 FaceVertexCCWIter fv_ccwend(FaceHandle _fh)
1030 { return FaceVertexCCWIter(*this, _fh, true); }
1032 FaceHalfedgeIter fh_end(FaceHandle _fh)
1033 { return FaceHalfedgeIter(*this, _fh, true); }
1035 FaceHalfedgeCWIter fh_cwend(FaceHandle _fh)
1036 { return FaceHalfedgeCWIter(*this, _fh, true); }
1038 FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh)
1039 { return FaceHalfedgeCCWIter(*this, _fh, true); }
1041 FaceEdgeIter fe_end(FaceHandle _fh)
1042 { return FaceEdgeIter(*this, _fh, true); }
1044 FaceEdgeCWIter fe_cwend(FaceHandle _fh)
1045 { return FaceEdgeCWIter(*this, _fh, true); }
1047 FaceEdgeCCWIter fe_ccwend(FaceHandle _fh)
1048 { return FaceEdgeCCWIter(*this, _fh, true); }
1050 FaceFaceIter ff_end(FaceHandle _fh)
1051 { return FaceFaceIter(*this, _fh, true); }
1053 FaceFaceCWIter ff_cwend(FaceHandle _fh)
1054 { return FaceFaceCWIter(*this, _fh, true); }
1056 FaceFaceCCWIter ff_ccwend(FaceHandle _fh)
1057 { return FaceFaceCCWIter(*this, _fh, true); }
1059 HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
1060 { return HalfedgeLoopIter(*this, _heh, true); }
1062 HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh)
1063 { return HalfedgeLoopCWIter(*this, _heh, true); }
1065 HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh)
1066 { return HalfedgeLoopCCWIter(*this, _heh, true); }
1067
1069 ConstFaceVertexIter cfv_end(FaceHandle _fh) const
1070 { return ConstFaceVertexIter(*this, _fh, true); }
1072 ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const
1073 { return ConstFaceVertexCWIter(*this, _fh, true); }
1075 ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const
1076 { return ConstFaceVertexCCWIter(*this, _fh, true); }
1078 ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
1079 { return ConstFaceHalfedgeIter(*this, _fh, true); }
1081 ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const
1082 { return ConstFaceHalfedgeCWIter(*this, _fh, true); }
1084 ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const
1085 { return ConstFaceHalfedgeCCWIter(*this, _fh, true); }
1087 ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
1088 { return ConstFaceEdgeIter(*this, _fh, true); }
1090 ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const
1091 { return ConstFaceEdgeCWIter(*this, _fh, true); }
1093 ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const
1094 { return ConstFaceEdgeCCWIter(*this, _fh, true); }
1096 ConstFaceFaceIter cff_end(FaceHandle _fh) const
1097 { return ConstFaceFaceIter(*this, _fh, true); }
1099 ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const
1100 { return ConstFaceFaceCWIter(*this, _fh, true); }
1102 ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const
1103 { return ConstFaceFaceCCWIter(*this, _fh, true); }
1105 ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
1106 { return ConstHalfedgeLoopIter(*this, _heh, true); }
1108 ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const
1109 { return ConstHalfedgeLoopCWIter(*this, _heh, true); }
1111 ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const
1112 { return ConstHalfedgeLoopCCWIter(*this, _heh, true); }
1114
1117
1119 template<
1120 typename CONTAINER_TYPE,
1121 typename ITER_TYPE,
1122 ITER_TYPE (CONTAINER_TYPE::*begin_fn)() const,
1123 ITER_TYPE (CONTAINER_TYPE::*end_fn)() const>
1124 class EntityRange {
1125 public:
1126 typedef ITER_TYPE iterator;
1127 typedef ITER_TYPE const_iterator;
1128
1129 EntityRange(CONTAINER_TYPE &container) : container_(container) {}
1130 ITER_TYPE begin() const { return (container_.*begin_fn)(); }
1131 ITER_TYPE end() const { return (container_.*end_fn)(); }
1132
1133 private:
1134 CONTAINER_TYPE &container_;
1135 };
1136 typedef EntityRange<
1137 const PolyConnectivity,
1138 PolyConnectivity::ConstVertexIter,
1139 &PolyConnectivity::vertices_begin,
1140 &PolyConnectivity::vertices_end> ConstVertexRange;
1141 typedef EntityRange<
1142 const PolyConnectivity,
1143 PolyConnectivity::ConstVertexIter,
1144 &PolyConnectivity::vertices_sbegin,
1145 &PolyConnectivity::vertices_end> ConstVertexRangeSkipping;
1146 typedef EntityRange<
1147 const PolyConnectivity,
1148 PolyConnectivity::ConstHalfedgeIter,
1149 &PolyConnectivity::halfedges_begin,
1150 &PolyConnectivity::halfedges_end> ConstHalfedgeRange;
1151 typedef EntityRange<
1152 const PolyConnectivity,
1153 PolyConnectivity::ConstHalfedgeIter,
1154 &PolyConnectivity::halfedges_sbegin,
1155 &PolyConnectivity::halfedges_end> ConstHalfedgeRangeSkipping;
1156 typedef EntityRange<
1157 const PolyConnectivity,
1158 PolyConnectivity::ConstEdgeIter,
1159 &PolyConnectivity::edges_begin,
1160 &PolyConnectivity::edges_end> ConstEdgeRange;
1161 typedef EntityRange<
1162 const PolyConnectivity,
1163 PolyConnectivity::ConstEdgeIter,
1164 &PolyConnectivity::edges_sbegin,
1165 &PolyConnectivity::edges_end> ConstEdgeRangeSkipping;
1166 typedef EntityRange<
1167 const PolyConnectivity,
1168 PolyConnectivity::ConstFaceIter,
1169 &PolyConnectivity::faces_begin,
1170 &PolyConnectivity::faces_end> ConstFaceRange;
1171 typedef EntityRange<
1172 const PolyConnectivity,
1173 PolyConnectivity::ConstFaceIter,
1174 &PolyConnectivity::faces_sbegin,
1175 &PolyConnectivity::faces_end> ConstFaceRangeSkipping;
1176
1181 ConstVertexRangeSkipping vertices() const { return ConstVertexRangeSkipping(*this); }
1182
1187 ConstVertexRange all_vertices() const { return ConstVertexRange(*this); }
1188
1193 ConstHalfedgeRangeSkipping halfedges() const { return ConstHalfedgeRangeSkipping(*this); }
1194
1199 ConstHalfedgeRange all_halfedges() const { return ConstHalfedgeRange(*this); }
1200
1205 ConstEdgeRangeSkipping edges() const { return ConstEdgeRangeSkipping(*this); }
1206
1211 ConstEdgeRange all_edges() const { return ConstEdgeRange(*this); }
1212
1217 ConstFaceRangeSkipping faces() const { return ConstFaceRangeSkipping(*this); }
1218
1223 ConstFaceRange all_faces() const { return ConstFaceRange(*this); }
1224
1226 template<
1227 typename CONTAINER_TYPE,
1228 typename ITER_TYPE,
1229 typename CENTER_ENTITY_TYPE,
1230 ITER_TYPE (CONTAINER_TYPE::*begin_fn)(CENTER_ENTITY_TYPE) const,
1231 ITER_TYPE (CONTAINER_TYPE::*end_fn)(CENTER_ENTITY_TYPE) const>
1232 class CirculatorRange {
1233 public:
1234 typedef ITER_TYPE iterator;
1235 typedef ITER_TYPE const_iterator;
1236
1237 CirculatorRange(
1238 const CONTAINER_TYPE &container,
1239 CENTER_ENTITY_TYPE center) :
1240 container_(container), center_(center) {}
1241 ITER_TYPE begin() const { return (container_.*begin_fn)(center_); }
1242 ITER_TYPE end() const { return (container_.*end_fn)(center_); }
1243
1244 private:
1245 const CONTAINER_TYPE &container_;
1246 CENTER_ENTITY_TYPE center_;
1247 };
1248
1249 typedef CirculatorRange<
1250 PolyConnectivity,
1251 ConstVertexVertexCWIter,
1252 VertexHandle,
1253 &PolyConnectivity::cvv_cwbegin,
1254 &PolyConnectivity::cvv_cwend> ConstVertexVertexRange;
1255 typedef CirculatorRange<
1256 PolyConnectivity,
1257 ConstVertexIHalfedgeIter,
1258 VertexHandle,
1259 &PolyConnectivity::cvih_begin,
1260 &PolyConnectivity::cvih_end> ConstVertexIHalfedgeRange;
1261 typedef CirculatorRange<
1262 PolyConnectivity,
1263 ConstVertexOHalfedgeIter, VertexHandle,
1264 &PolyConnectivity::cvoh_begin,
1265 &PolyConnectivity::cvoh_end> ConstVertexOHalfedgeRange;
1266 typedef CirculatorRange<
1267 PolyConnectivity,
1268 ConstVertexEdgeIter,
1269 VertexHandle,
1270 &PolyConnectivity::cve_begin,
1271 &PolyConnectivity::cve_end> ConstVertexEdgeRange;
1272 typedef CirculatorRange<
1273 PolyConnectivity,
1274 ConstVertexFaceIter,
1275 VertexHandle,
1276 &PolyConnectivity::cvf_begin,
1277 &PolyConnectivity::cvf_end> ConstVertexFaceRange;
1278 typedef CirculatorRange<
1279 PolyConnectivity,
1280 ConstFaceVertexIter,
1281 FaceHandle,
1282 &PolyConnectivity::cfv_begin,
1283 &PolyConnectivity::cfv_end> ConstFaceVertexRange;
1284 typedef CirculatorRange<
1285 PolyConnectivity,
1286 ConstFaceHalfedgeIter,
1287 FaceHandle,
1288 &PolyConnectivity::cfh_begin,
1289 &PolyConnectivity::cfh_end> ConstFaceHalfedgeRange;
1290 typedef CirculatorRange<
1291 PolyConnectivity,
1292 ConstFaceEdgeIter,
1293 FaceHandle,
1294 &PolyConnectivity::cfe_begin,
1295 &PolyConnectivity::cfe_end> ConstFaceEdgeRange;
1296 typedef CirculatorRange<
1297 PolyConnectivity,
1298 ConstFaceFaceIter,
1299 FaceHandle,
1300 &PolyConnectivity::cff_begin,
1301 &PolyConnectivity::cff_end> ConstFaceFaceRange;
1302
1307 ConstVertexVertexRange vv_range(VertexHandle _vh) const {
1308 return ConstVertexVertexRange(*this, _vh);
1309 }
1310
1315 ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const {
1316 return ConstVertexIHalfedgeRange(*this, _vh);
1317 }
1318
1323 ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const {
1324 return ConstVertexOHalfedgeRange(*this, _vh);
1325 }
1326
1331 ConstVertexEdgeRange ve_range(VertexHandle _vh) const {
1332 return ConstVertexEdgeRange(*this, _vh);
1333 }
1334
1339 ConstVertexFaceRange vf_range(VertexHandle _vh) const {
1340 return ConstVertexFaceRange(*this, _vh);
1341 }
1342
1347 ConstFaceVertexRange fv_range(FaceHandle _fh) const {
1348 return ConstFaceVertexRange(*this, _fh);
1349 }
1350
1355 ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const {
1356 return ConstFaceHalfedgeRange(*this, _fh);
1357 }
1358
1363 ConstFaceEdgeRange fe_range(FaceHandle _fh) const {
1364 return ConstFaceEdgeRange(*this, _fh);
1365 }
1366
1371 ConstFaceFaceRange ff_range(FaceHandle _fh) const {
1372 return ConstFaceFaceRange(*this, _fh);
1373 }
1374
1376
1377 //===========================================================================
1380 //===========================================================================
1381
1389 bool is_boundary(HalfedgeHandle _heh) const
1390 { return ArrayKernel::is_boundary(_heh); }
1391
1400 bool is_boundary(EdgeHandle _eh) const
1401 {
1402 return (is_boundary(halfedge_handle(_eh, 0)) ||
1403 is_boundary(halfedge_handle(_eh, 1)));
1404 }
1405
1417 bool is_boundary(VertexHandle _vh) const
1418 {
1419 HalfedgeHandle heh(halfedge_handle(_vh));
1420 return (!(heh.is_valid() && face_handle(heh).is_valid()));
1421 }
1422
1432 bool is_boundary(FaceHandle _fh, bool _check_vertex=false) const;
1433
1444 bool is_manifold(VertexHandle _vh) const;
1445
1448 // --- shortcuts ---
1449
1451 inline FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
1452 { return face_handle(opposite_halfedge_handle(_heh)); }
1453
1454 // --- misc ---
1455
1459 void adjust_outgoing_halfedge(VertexHandle _vh);
1460
1462 HalfedgeHandle find_halfedge(VertexHandle _start_vh, VertexHandle _end_vh) const;
1464 uint valence(VertexHandle _vh) const;
1466 uint valence(FaceHandle _fh) const;
1467
1468 // --- connectivity operattions
1469
1484 void collapse(HalfedgeHandle _heh);
1489 bool is_simple_link(EdgeHandle _eh) const;
1494 bool is_simply_connected(FaceHandle _fh) const;
1507 FaceHandle remove_edge(EdgeHandle _eh);
1511 void reinsert_edge(EdgeHandle _eh);
1521 HalfedgeHandle insert_edge(HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh);
1522
1535 void split(FaceHandle _fh, VertexHandle _vh);
1536
1550 void split_copy(FaceHandle _fh, VertexHandle _vh);
1551
1565 void triangulate(FaceHandle _fh);
1566
1569 void triangulate();
1570
1581 void split_edge(EdgeHandle _eh, VertexHandle _vh);
1582
1594 void split_edge_copy(EdgeHandle _eh, VertexHandle _vh);
1595
1596
1602 const Vertex& deref(VertexHandle _h) const { return vertex(_h); }
1604 Vertex& deref(VertexHandle _h) { return vertex(_h); }
1605 const Halfedge& deref(HalfedgeHandle _h) const { return halfedge(_h); }
1606 Halfedge& deref(HalfedgeHandle _h) { return halfedge(_h); }
1607 const Edge& deref(EdgeHandle _h) const { return edge(_h); }
1608 Edge& deref(EdgeHandle _h) { return edge(_h); }
1609 const Face& deref(FaceHandle _h) const { return face(_h); }
1610 Face& deref(FaceHandle _h) { return face(_h); }
1612
1613 protected:
1615 void collapse_edge(HalfedgeHandle _hh);
1617 void collapse_loop(HalfedgeHandle _hh);
1618
1619
1620
1621 private: // Working storage for add_face()
1622 struct AddFaceEdgeInfo
1623 {
1624 HalfedgeHandle halfedge_handle;
1625 bool is_new;
1626 bool needs_adjust;
1627 };
1628 std::vector<AddFaceEdgeInfo> edgeData_; //
1629 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_; // cache for set_next_halfedge and vertex' set_halfedge
1630
1631 };
1632
1633 }//namespace OpenMesh
1634
1635 #endif//OPENMESH_POLYCONNECTIVITY_HH
OpenMesh::PolyConnectivity::ve_ccwiter
VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh)
vertex - edge circulator ccw
Definition: PolyConnectivity.hh:609
OpenMesh::PolyConnectivity::ConstFaceFaceRange
CirculatorRange< PolyConnectivity, ConstFaceFaceIter, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > ConstFaceFaceRange
Definition: PolyConnectivity.hh:1301
OpenMesh::PolyConnectivity::ConstFaceVertexRange
CirculatorRange< PolyConnectivity, ConstFaceVertexIter, FaceHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > ConstFaceVertexRange
Definition: PolyConnectivity.hh:1283
OpenMesh::HalfedgeHandle
Handle for a halfedge entity.
Definition: Handles.hh:132
OpenMesh::PolyConnectivity::CFECWIter
ConstFaceEdgeCWIter CFECWIter
Alias typedef.
Definition: PolyConnectivity.hh:379
OpenMesh::PolyConnectivity::cfh_cwend
ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const
const face - halfedge circulator cw
Definition: PolyConnectivity.hh:1081
OpenMesh::PolyConnectivity::vih_cwiter
VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh)
vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:588
OpenMesh::PolyConnectivity::ConstFaceRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > ConstFaceRange
Definition: PolyConnectivity.hh:1170
OpenMesh::PolyConnectivity::cve_cwiter
ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const
const vertex - edge circulator cw
Definition: PolyConnectivity.hh:652
OpenMesh::PolyConnectivity::cfe_begin
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:901
OpenMesh::PolyConnectivity::cvih_begin
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:800
OpenMesh::PolyConnectivity::FaceEdgeCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::EdgeHandle, &Iterators::GenericCirculatorBaseT< This >::toEdgeHandle, false > FaceEdgeCWIter
Enumerate incident edges in a clockwise fashion.
Definition: PolyConnectivity.hh:269
OpenMesh::PolyConnectivity::cve_ccwend
ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const
const vertex - edge circulator ccw
Definition: PolyConnectivity.hh:1010
OpenMesh::PolyConnectivity::cff_ccwiter
ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:738
OpenMesh::PolyConnectivity::fh_ccwiter
FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh)
face - halfedge circulator ccw
Definition: PolyConnectivity.hh:683
OpenMesh::PolyConnectivity::cvv_cwiter
ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const
const vertex circulator cw
Definition: PolyConnectivity.hh:625
OpenMesh::PolyConnectivity::cfe_ccwend
ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const
const face - edge circulator ccw
Definition: PolyConnectivity.hh:1093
OpenMesh::PolyConnectivity::deref
const Face & deref(FaceHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1609
OpenMesh::PolyConnectivity::FHCWIter
FaceHalfedgeCWIter FHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:350
OpenMesh::PolyConnectivity::InvalidHalfedgeHandle
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:69
OpenMesh::PolyConnectivity::CFVCCWIter
ConstFaceVertexCCWIter CFVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:374
OpenMesh::PolyConnectivity::FVCCWIter
FaceVertexCCWIter FVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:348
OpenMesh::PolyConnectivity::fh_cwend
FaceHalfedgeCWIter fh_cwend(FaceHandle _fh)
face - halfedge circulator cw
Definition: PolyConnectivity.hh:1035
OpenMesh::PolyConnectivity::cfv_cwbegin
ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const
const face - vertex circulator cw
Definition: PolyConnectivity.hh:886
OpenMesh::PolyConnectivity::CHIter
ConstHalfedgeIter CHIter
Alias typedef.
Definition: PolyConnectivity.hh:327
OpenMesh::PolyConnectivity::cfh_begin
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:892
OpenMesh::PolyConnectivity::cvv_ccwiter
ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const
const vertex circulator ccw
Definition: PolyConnectivity.hh:628
OpenMesh::PolyConnectivity::voh_iter
VertexOHalfedgeIter voh_iter(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:594
OpenMesh::PolyConnectivity::fe_begin
FaceEdgeIter fe_begin(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:855
OpenMesh::PolyConnectivity::voh_ccwend
VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:955
OpenMesh::PolyConnectivity::cve_ccwbegin
ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const
const vertex - edge circulator ccw
Definition: PolyConnectivity.hh:824
OpenMesh::PolyConnectivity::ConstVertexEdgeRange
CirculatorRange< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > ConstVertexEdgeRange
Definition: PolyConnectivity.hh:1271
OpenMesh::PolyConnectivity::fv_cwiter
FaceVertexCWIter fv_cwiter(FaceHandle _fh)
face - vertex circulator cw
Definition: PolyConnectivity.hh:671
OpenMesh::PolyConnectivity::HalfedgeLoopCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle, false > HalfedgeLoopCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:195
OpenMesh::PolyConnectivity::deref
Vertex & deref(VertexHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1604
OpenMesh::PolyConnectivity::ff_ccwbegin
FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh)
face - face circulator ccw
Definition: PolyConnectivity.hh:870
OpenMesh::PolyConnectivity::cfe_cwend
ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const
const face - edge circulator cw
Definition: PolyConnectivity.hh:1090
OpenMesh::PolyConnectivity::ConstVertexEdgeCWIter
VertexEdgeCWIter ConstVertexEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:216
OpenMesh::PolyConnectivity::cfh_iter
ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:714
OpenMesh::PolyConnectivity::halfedges_sbegin
ConstHalfedgeIter halfedges_sbegin() const
Const begin iterator for halfedges.
Definition: PolyConnectivity.hh:550
OpenMesh::PolyConnectivity::cff_cwiter
ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const
const face - face circulator cw
Definition: PolyConnectivity.hh:735
OpenMesh::PolyConnectivity::VertexFaceCCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::FaceHandle, &Iterators::GenericCirculatorBaseT< This >::toFaceHandle, false > VertexFaceCCWIter
Enumerates incident faces in a counter clockwise fashion.
Definition: PolyConnectivity.hh:171
OpenMesh::PolyConnectivity::CVFCWIter
ConstVertexFaceCWIter CVFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:370
OpenMesh::PolyConnectivity::CFHIter
ConstFaceHalfedgeIter CFHIter
Alias typedef.
Definition: PolyConnectivity.hh:375
OpenMesh::PolyConnectivity::cff_cwbegin
ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const
const face - face circulator cw
Definition: PolyConnectivity.hh:913
OpenMesh::PolyConnectivity::fe_cwend
FaceEdgeCWIter fe_cwend(FaceHandle _fh)
face - edge circulator cw
Definition: PolyConnectivity.hh:1044
OpenMesh::PolyConnectivity::fe_cwbegin
FaceEdgeCWIter fe_cwbegin(FaceHandle _fh)
face - edge circulator cw
Definition: PolyConnectivity.hh:858
OpenMesh::PolyConnectivity::HIter
HalfedgeIter HIter
Alias typedef.
Definition: PolyConnectivity.hh:322
OpenMesh::PolyConnectivity::cfv_begin
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:883
OpenMesh::PolyConnectivity::voh_cwbegin
VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:765
OpenMesh::FaceHandle
Handle for a face entity.
Definition: Handles.hh:146
OpenMesh::PolyConnectivity::cvoh_cwend
ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:998
OpenMesh::PolyConnectivity::deref
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1605
OpenMesh::PolyConnectivity::fh_range
ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1355
OpenMesh::PolyConnectivity::cvv_iter
ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:622
OpenMesh::PolyConnectivity::VertexEdgeCCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::EdgeHandle, &Iterators::GenericCirculatorBaseT< This >::toEdgeHandle, false > VertexEdgeCCWIter
Enumerates incident edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:186
OpenMesh::PolyConnectivity::VOHIter
VertexOHalfedgeIter VOHIter
Alias typedef.
Definition: PolyConnectivity.hh:334
OpenMesh::PolyConnectivity::VVCCWIter
VertexVertexCCWIter VVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:333
OpenMesh::PolyConnectivity::ff_cwiter
FaceFaceCWIter ff_cwiter(FaceHandle _fh)
face - face circulator cw
Definition: PolyConnectivity.hh:698
OpenMesh::PolyConnectivity::ff_end
FaceFaceIter ff_end(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:1050
OpenMesh::PolyConnectivity::fe_end
FaceEdgeIter fe_end(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:1041
OpenMesh::PolyConnectivity::vf_ccwend
VertexFaceCCWIter vf_ccwend(VertexHandle _vh)
vertex - face circulator ccw
Definition: PolyConnectivity.hh:973
OpenMesh::PolyConnectivity::fv_iter
FaceVertexIter fv_iter(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:668
OpenMesh::PolyConnectivity::deref
const Edge & deref(EdgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1607
OpenMesh::PolyConnectivity::VertexFaceIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::VertexHandle, This::FaceHandle, &Iterators::GenericCirculatorBaseT< This >::toFaceHandle > VertexFaceIter
Enumerates incident faces in a clockwise fashion.
Definition: PolyConnectivity.hh:162
OpenMesh::PolyConnectivity::ve_cwend
VertexEdgeCWIter ve_cwend(VertexHandle _vh)
vertex - edge circulator cw
Definition: PolyConnectivity.hh:961
OpenMesh::PolyConnectivity::cfh_ccwend
ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const
const face - halfedge circulator ccw
Definition: PolyConnectivity.hh:1084
OpenMesh::PolyConnectivity::CVFCCWIter
ConstVertexFaceCCWIter CVFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:371
OpenMesh::PolyConnectivity::cfh_cwiter
ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const
const face - halfedge circulator cw
Definition: PolyConnectivity.hh:717
OpenMesh::PolyConnectivity::VECCWIter
VertexEdgeCCWIter VECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:342
OpenMesh::PolyConnectivity::cfh_ccwiter
ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const
const face - halfedge circulator ccw
Definition: PolyConnectivity.hh:720
OpenMesh::PolyConnectivity::hl_ccwbegin
HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh)
halfedge circulator ccw
Definition: PolyConnectivity.hh:879
OpenMesh::PolyConnectivity::faces_sbegin
FaceIter faces_sbegin()
Begin iterator for faces.
Definition: PolyConnectivity.hh:561
OpenMesh::PolyConnectivity::opposite_face_handle
FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
Definition: PolyConnectivity.hh:1451
OpenMesh::PolyConnectivity::voh_ccwiter
VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:600
OpenMesh::PolyConnectivity::vf_ccwiter
VertexFaceCCWIter vf_ccwiter(VertexHandle _vh)
vertex - face circulator ccw
Definition: PolyConnectivity.hh:618
OpenMesh::PolyConnectivity::VertexFaceCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::FaceHandle, &Iterators::GenericCirculatorBaseT< This >::toFaceHandle > VertexFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:164
OpenMesh::PolyConnectivity::vih_ccwbegin
VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:759
OpenMesh::PolyConnectivity::voh_range
ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1323
OpenMesh::PolyConnectivity::VertexIHalfedgeCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toOppositeHalfedgeHandle > VertexIHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:148
OpenMesh::PolyConnectivity::ConstVertexFaceRange
CirculatorRange< PolyConnectivity, ConstVertexFaceIter, VertexHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > ConstVertexFaceRange
Definition: PolyConnectivity.hh:1277
OpenMesh::PolyConnectivity::FaceFaceIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::FaceHandle, This::FaceHandle, &Iterators::GenericCirculatorBaseT< This >::toOppositeFaceHandle > FaceFaceIter
Enumerate adjacent faces in a counter clockwise fashion.
Definition: PolyConnectivity.hh:276
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeIter
VertexOHalfedgeIter ConstVertexOHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:206
OpenMesh::PolyConnectivity::ConstFaceVertexCWIter
FaceVertexCWIter ConstFaceVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:288
OpenMesh::PolyConnectivity::CVOHCCWIter
ConstVertexOHalfedgeCCWIter CVOHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:362
OpenMesh::PolyConnectivity::CFIter
ConstFaceIter CFIter
Alias typedef.
Definition: PolyConnectivity.hh:329
OpenMesh::PolyConnectivity::fh_ccwend
FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh)
face - halfedge circulator ccw
Definition: PolyConnectivity.hh:1038
OpenMesh::PolyConnectivity::CVVCCWIter
ConstVertexVertexCCWIter CVVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:359
OpenMesh::PolyConnectivity::edges_sbegin
ConstEdgeIter edges_sbegin() const
Const begin iterator for edges.
Definition: PolyConnectivity.hh:557
OpenMesh::PolyConnectivity::FVIter
FaceVertexIter FVIter
Alias typedef.
Definition: PolyConnectivity.hh:346
OpenMesh::PolyConnectivity::VVCWIter
VertexVertexCWIter VVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:332
OpenMesh::PolyConnectivity::ConstVertexFaceIter
VertexFaceIter ConstVertexFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:212
OpenMesh::PolyConnectivity::CVEIter
ConstVertexEdgeIter CVEIter
Alias typedef.
Definition: PolyConnectivity.hh:366
OpenMesh::PolyConnectivity::halfedges_begin
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
Definition: PolyConnectivity.cc:649
OpenMesh::PolyConnectivity::assign_connectivity
void assign_connectivity(const PolyConnectivity &_other)
assign_connectivity() method.
Definition: PolyConnectivity.hh:396
OpenMesh::PolyConnectivity::cve_end
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:1004
OpenMesh::PolyConnectivity::ConstFaceEdgeCWIter
FaceEdgeCWIter ConstFaceEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:294
OpenMesh::PolyConnectivity::CVVCWIter
ConstVertexVertexCWIter CVVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:358
OpenMesh::PolyConnectivity::edges_sbegin
EdgeIter edges_sbegin()
Begin iterator for edges.
Definition: PolyConnectivity.hh:554
OpenMesh::PolyConnectivity::VOHCWIter
VertexOHalfedgeCWIter VOHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:335
OpenMesh::PolyConnectivity::cvv_begin
ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:791
OpenMesh::PolyConnectivity::ConstFaceEdgeRange
CirculatorRange< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > ConstFaceEdgeRange
Definition: PolyConnectivity.hh:1295
OpenMesh::PolyConnectivity::cfv_ccwiter
ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const
const face - vertex circulator ccw
Definition: PolyConnectivity.hh:711
OpenMesh::PolyConnectivity::FaceFaceCCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::FaceHandle, &Iterators::GenericCirculatorBaseT< This >::toOppositeFaceHandle > FaceFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:278
OpenMesh::PolyConnectivity::vv_ccwbegin
VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh)
vertex - vertex circulator ccw
Definition: PolyConnectivity.hh:750
OpenMesh::PolyConnectivity::cvv_ccwend
ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const
const vertex circulator ccw
Definition: PolyConnectivity.hh:983
OpenMesh::PolyConnectivity::halfedges_sbegin
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
Definition: PolyConnectivity.hh:547
OpenMesh::PolyConnectivity::FaceVertexIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::FaceHandle, This::VertexHandle, &Iterators::GenericCirculatorBaseT< This >::toVertexHandle > FaceVertexIter
Enumerate incident vertices in a counter clockwise fashion.
Definition: PolyConnectivity.hh:228
OpenMesh::PolyConnectivity::cve_iter
ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:649
OpenMesh::PolyConnectivity::cfv_end
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:1069
OpenMesh::PolyConnectivity::ff_ccwiter
FaceFaceCCWIter ff_ccwiter(FaceHandle _fh)
face - face circulator ccw
Definition: PolyConnectivity.hh:701
OpenMesh::PolyConnectivity::fe_ccwend
FaceEdgeCCWIter fe_ccwend(FaceHandle _fh)
face - edge circulator ccw
Definition: PolyConnectivity.hh:1047
OpenMesh::PolyConnectivity::ff_cwend
FaceFaceCWIter ff_cwend(FaceHandle _fh)
face - face circulator cw
Definition: PolyConnectivity.hh:1053
OpenMesh::PolyConnectivity::CFHCWIter
ConstFaceHalfedgeCWIter CFHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:376
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeIter
VertexIHalfedgeIter ConstVertexIHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:209
OpenMesh::PolyConnectivity::CFHCCWIter
ConstFaceHalfedgeCCWIter CFHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:377
OpenMesh::PolyConnectivity::CVOHIter
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
Definition: PolyConnectivity.hh:360
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
Definition: PolyConnectivity.hh:1417
OpenMesh::PolyConnectivity::vih_begin
VertexIHalfedgeIter vih_begin(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:753
OpenMesh::PolyConnectivity::CVIHCCWIter
ConstVertexIHalfedgeCCWIter CVIHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:365
OpenMesh::PolyConnectivity::fe_range
ConstFaceEdgeRange fe_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1363
OpenMesh::PolyConnectivity::FECWWIter
FaceEdgeCCWIter FECWWIter
Alias typedef.
Definition: PolyConnectivity.hh:354
OpenMesh::PolyConnectivity::vf_end
VertexFaceIter vf_end(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:967
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
Definition: PolyConnectivity.hh:1400
OpenMesh::PolyConnectivity::fh_begin
FaceHalfedgeIter fh_begin(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:846
OpenMesh::PolyConnectivity::vv_cwend
VertexVertexCWIter vv_cwend(VertexHandle _vh)
vertex - vertex circulator cw
Definition: PolyConnectivity.hh:934
OpenMesh::Iterators::GenericCirculatorBaseT
Definition: CirculatorsT.hh:196
OpenMesh::PolyConnectivity::cvih_cwend
ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:989
OpenMesh::PolyConnectivity::all_faces
ConstFaceRange all_faces() const
Definition: PolyConnectivity.hh:1223
OpenMesh::BaseHandle::is_valid
bool is_valid() const
The handle is valid iff the index is not negative.
Definition: Handles.hh:77
OpenMesh
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:64
OpenMesh::PolyConnectivity::cvf_ccwend
ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const
const vertex - face circulator ccw
Definition: PolyConnectivity.hh:1019
OpenMesh::PolyConnectivity::cvf_ccwbegin
ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const
const vertex - face circulator ccw
Definition: PolyConnectivity.hh:833
OpenMesh::ArrayKernel::is_boundary
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
Definition: ArrayKernel.hh:403
OpenMesh::PolyConnectivity::vih_cwbegin
VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:756
OpenMesh::PolyConnectivity::VertexVertexCCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::VertexHandle, &Iterators::GenericCirculatorBaseT< This >::toVertexHandle, false > VertexVertexCCWIter
Enumerates 1-ring vertices in a counter clockwise fashion.
Definition: PolyConnectivity.hh:123
OpenMesh::PolyConnectivity::cff_ccwend
ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:1102
OpenMesh::PolyConnectivity::CVECCWIter
ConstVertexEdgeCCWIter CVECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:368
OpenMesh::PolyConnectivity::vv_cwiter
VertexVertexCWIter vv_cwiter(VertexHandle _vh)
vertex - vertex circulator cw
Definition: PolyConnectivity.hh:579
OpenMesh::PolyConnectivity::edges_end
EdgeIter edges_end()
End iterator for edges.
Definition: PolyConnectivity.cc:685
OpenMesh::PolyConnectivity::cff_iter
ConstFaceFaceIter cff_iter(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:732
OpenMesh::PolyConnectivity::fv_range
ConstFaceVertexRange fv_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1347
OpenMesh::PolyConnectivity::fe_iter
FaceEdgeIter fe_iter(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:686
OpenMesh::PolyConnectivity::HalfedgeIter
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:87
OpenMesh::PolyConnectivity::InvalidFaceHandle
static const FaceHandle InvalidFaceHandle
Invalid handle.
Definition: PolyConnectivity.hh:73
OpenMesh::PolyConnectivity::VIter
VertexIter VIter
Alias typedef.
Definition: PolyConnectivity.hh:321
OpenMesh::PolyConnectivity::ConstFaceIter
FaceIter ConstFaceIter
Linear iterator.
Definition: PolyConnectivity.hh:94
OpenMesh::PolyConnectivity::ff_ccwend
FaceFaceCCWIter ff_ccwend(FaceHandle _fh)
face - face circulator ccw
Definition: PolyConnectivity.hh:1056
OpenMesh::PolyConnectivity::all_vertices
ConstVertexRange all_vertices() const
Definition: PolyConnectivity.hh:1187
OpenMesh::PolyConnectivity::CEIter
ConstEdgeIter CEIter
Alias typedef.
Definition: PolyConnectivity.hh:328
OpenMesh::PolyConnectivity::CVIHIter
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
Definition: PolyConnectivity.hh:363
OpenMesh::PolyConnectivity::cvv_cwend
ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
const vertex circulator cw
Definition: PolyConnectivity.hh:980
OpenMesh::PolyConnectivity::cvv_ccwbegin
ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const
const vertex circulator ccw
Definition: PolyConnectivity.hh:797
OpenMesh::PolyConnectivity::cve_ccwiter
ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const
const vertex - edge circulator ccw
Definition: PolyConnectivity.hh:655
OpenMesh::PolyConnectivity::CFVCWIter
ConstFaceVertexCWIter CFVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:373
OpenMesh::PolyConnectivity::cvoh_end
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:995
OpenMesh::PolyConnectivity::FaceVertexCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::VertexHandle, &Iterators::GenericCirculatorBaseT< This >::toVertexHandle, false > FaceVertexCWIter
Enumerate incident vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:237
OpenMesh::PolyConnectivity::all_halfedges
ConstHalfedgeRange all_halfedges() const
Definition: PolyConnectivity.hh:1199
OpenMesh::PolyConnectivity::ConstVertexFaceCWIter
VertexFaceCWIter ConstVertexFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:213
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCCWIter
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:292
OpenMesh::PolyConnectivity::VEIter
VertexEdgeIter VEIter
Alias typedef.
Definition: PolyConnectivity.hh:340
OpenMesh::PolyConnectivity::cvoh_cwiter
ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:643
OpenMesh::PolyConnectivity::fv_cwbegin
FaceVertexCWIter fv_cwbegin(FaceHandle _fh)
face - vertex circulator cw
Definition: PolyConnectivity.hh:840
OpenMesh::PolyConnectivity::cfv_cwiter
ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const
const face - vertex circulator cw
Definition: PolyConnectivity.hh:708
OpenMesh::PolyConnectivity::edges
ConstEdgeRangeSkipping edges() const
Definition: PolyConnectivity.hh:1205
OpenMesh::PolyConnectivity::VFCCWIter
VertexFaceCCWIter VFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:345
OpenMesh::PolyConnectivity::VFCWIter
VertexFaceCWIter VFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:344
OpenMesh::PolyConnectivity::FaceFaceCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::FaceHandle, &Iterators::GenericCirculatorBaseT< This >::toOppositeFaceHandle, false > FaceFaceCWIter
Enumerate adjacent faces in a clockwise fashion.
Definition: PolyConnectivity.hh:285
OpenMesh::PolyConnectivity::cvf_ccwiter
ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const
const vertex - face circulator ccw
Definition: PolyConnectivity.hh:664
OpenMesh::PolyConnectivity::chl_cwbegin
ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const
const halfedge circulator cw
Definition: PolyConnectivity.hh:922
OpenMesh::PolyConnectivity::FaceHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > FaceHalfedgeIter
Enumerate incident half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:244
OpenMesh::PolyConnectivity::fh_cwbegin
FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh)
face - halfedge circulator cw
Definition: PolyConnectivity.hh:849
OpenMesh::PolyConnectivity::cvih_ccwend
ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:992
OpenMesh::PolyConnectivity::CirculatorRange
Generic class for iterator ranges.
Definition: PolyConnectivity.hh:1232
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCCWIter
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:208
OpenMesh::PolyConnectivity::CFEIter
ConstFaceEdgeIter CFEIter
Alias typedef.
Definition: PolyConnectivity.hh:378
OpenMesh::PolyConnectivity::cff_end
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:1096
OpenMesh::PolyConnectivity::vf_cwiter
VertexFaceCWIter vf_cwiter(VertexHandle _vh)
vertex - face circulator cw
Definition: PolyConnectivity.hh:615
OpenMesh::PolyConnectivity::cvih_end
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:986
OpenMesh::PolyConnectivity::CVECWIter
ConstVertexEdgeCWIter CVECWIter
Alias typedef.
Definition: PolyConnectivity.hh:367
OpenMesh::PolyConnectivity::HalfedgeLoopIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > HalfedgeLoopIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:193
OpenMesh::PolyConnectivity::cfv_ccwend
ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const
const face - vertex circulator ccw
Definition: PolyConnectivity.hh:1075
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCWIter
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:291
OpenMesh::PolyConnectivity::ConstEdgeRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > ConstEdgeRangeSkipping
Definition: PolyConnectivity.hh:1165
OpenMesh::PolyConnectivity::EIter
EdgeIter EIter
Alias typedef.
Definition: PolyConnectivity.hh:323
OpenMesh::PolyConnectivity::ConstVertexFaceCCWIter
VertexFaceCCWIter ConstVertexFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:214
OpenMesh::PolyConnectivity::FaceIter
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
Definition: PolyConnectivity.hh:89
OpenMesh::PolyConnectivity::cvoh_ccwbegin
ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:815
OpenMesh::PolyConnectivity::ConstVertexVertexCCWIter
VertexVertexCCWIter ConstVertexVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:205
OpenMesh::PolyConnectivity::hl_end
HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
face - face circulator
Definition: PolyConnectivity.hh:1059
OpenMesh::PolyConnectivity::ve_range
ConstVertexEdgeRange ve_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1331
OpenMesh::PolyConnectivity::cfe_ccwbegin
ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const
const face - edge circulator ccw
Definition: PolyConnectivity.hh:907
OpenMesh::PolyConnectivity::EHandle
EdgeHandle EHandle
Alias typedef.
Definition: PolyConnectivity.hh:318
OpenMesh::PolyConnectivity::VertexEdgeIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::VertexHandle, This::EdgeHandle, &Iterators::GenericCirculatorBaseT< This >::toEdgeHandle > VertexEdgeIter
Enumerates incident edges in a clockwise fashion.
Definition: PolyConnectivity.hh:178
OpenMesh::PolyConnectivity::ConstHalfedgeLoopIter
HalfedgeLoopIter ConstHalfedgeLoopIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:303
OpenMesh::PolyConnectivity::ConstHalfedgeRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > ConstHalfedgeRangeSkipping
Definition: PolyConnectivity.hh:1155
OpenMesh::PolyConnectivity::ve_cwbegin
VertexEdgeCWIter ve_cwbegin(VertexHandle _vh)
vertex - edge circulator cw
Definition: PolyConnectivity.hh:774
OpenMesh::PolyConnectivity::fe_ccwiter
FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh)
face - edge circulator ccw
Definition: PolyConnectivity.hh:692
OpenMesh::PolyConnectivity::cvv_cwbegin
ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
const vertex circulator cw
Definition: PolyConnectivity.hh:794
OpenMesh::PolyConnectivity::cvoh_ccwend
ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:1001
OpenMesh::PolyConnectivity::faces_end
FaceIter faces_end()
End iterator for faces.
Definition: PolyConnectivity.cc:709
OpenMesh::PolyConnectivity::cfe_ccwiter
ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const
const face - edge circulator ccw
Definition: PolyConnectivity.hh:729
OpenMesh::PolyConnectivity::ConstFaceVertexCCWIter
FaceVertexCCWIter ConstFaceVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:289
OpenMesh::PolyConnectivity::vertices
ConstVertexRangeSkipping vertices() const
Definition: PolyConnectivity.hh:1181
OpenMesh::PolyConnectivity::vf_range
ConstVertexFaceRange vf_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1339
OpenMesh::PolyConnectivity::vf_ccwbegin
VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh)
vertex - face circulator ccw
Definition: PolyConnectivity.hh:786
OpenMesh::PolyConnectivity::ve_begin
VertexEdgeIter ve_begin(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:771
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
Definition: PolyConnectivity.hh:1389
OpenMesh::PolyConnectivity::vv_cwbegin
VertexVertexCWIter vv_cwbegin(VertexHandle _vh)
vertex - vertex circulator cw
Definition: PolyConnectivity.hh:747
OpenMesh::PolyConnectivity::VIHIter
VertexIHalfedgeIter VIHIter
Alias typedef.
Definition: PolyConnectivity.hh:337
OpenMesh::PolyConnectivity::vf_cwbegin
VertexFaceCWIter vf_cwbegin(VertexHandle _vh)
vertex - face circulator cw
Definition: PolyConnectivity.hh:783
OpenMesh::PolyConnectivity::VertexOHalfedgeCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > VertexOHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:132
OpenMesh::PolyConnectivity::CFECCWIter
ConstFaceEdgeCCWIter CFECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:380
OpenMesh::PolyConnectivity::cvf_cwend
ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const
const vertex - face circulator cw
Definition: PolyConnectivity.hh:1016
OpenMesh::PolyConnectivity::VertexIHalfedgeCCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toOppositeHalfedgeHandle, false > VertexIHalfedgeCCWIter
Enumerates incoming half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:155
OpenMesh::PolyConnectivity::deref
Face & deref(FaceHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1610
OpenMesh::PolyConnectivity::ConstFaceRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > ConstFaceRangeSkipping
Definition: PolyConnectivity.hh:1175
OpenMesh::PolyConnectivity::vv_iter
VertexVertexIter vv_iter(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:576
OpenMesh::PolyConnectivity::cfh_ccwbegin
ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const
const face - halfedge circulator ccw
Definition: PolyConnectivity.hh:898
OpenMesh::PolyConnectivity::ConstVertexIter
VertexIter ConstVertexIter
Linear iterator.
Definition: PolyConnectivity.hh:91
OpenMesh::PolyConnectivity::hl_begin
HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
halfedge circulator
Definition: PolyConnectivity.hh:873
OpenMesh::PolyConnectivity::cve_begin
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:818
OpenMesh::PolyConnectivity::halfedges
ConstHalfedgeRangeSkipping halfedges() const
Definition: PolyConnectivity.hh:1193
OpenMesh::PolyConnectivity::ConstVertexRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > ConstVertexRange
Definition: PolyConnectivity.hh:1140
OpenMesh::PolyConnectivity::ve_ccwend
VertexEdgeCCWIter ve_ccwend(VertexHandle _vh)
vertex - edge circulator ccw
Definition: PolyConnectivity.hh:964
OpenMesh::PolyConnectivity::CFFCWIter
ConstFaceFaceCWIter CFFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:382
OpenMesh::PolyConnectivity::hl_cwend
HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh)
face - face circulator cw
Definition: PolyConnectivity.hh:1062
OpenMesh::PolyConnectivity::fe_ccwbegin
FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh)
face - edge circulator ccw
Definition: PolyConnectivity.hh:861
OpenMesh::PolyConnectivity::vih_range
ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1315
OpenMesh::Iterators::GenericIteratorT
Definition: IteratorsT.hh:89
OpenMesh::PolyConnectivity::VECWIter
VertexEdgeCWIter VECWIter
Alias typedef.
Definition: PolyConnectivity.hh:341
OpenMesh::PolyConnectivity::ConstEdgeRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > ConstEdgeRange
Definition: PolyConnectivity.hh:1160
OpenMesh::PolyConnectivity::CFFCCWIter
ConstFaceFaceCCWIter CFFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:383
OpenMesh::PolyConnectivity::FHCWWIter
FaceHalfedgeCCWIter FHCWWIter
Alias typedef.
Definition: PolyConnectivity.hh:351
OpenMesh::PolyConnectivity::FaceEdgeIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::FaceHandle, This::EdgeHandle, &Iterators::GenericCirculatorBaseT< This >::toEdgeHandle > FaceEdgeIter
Enumerate incident edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:260
OpenMesh::PolyConnectivity::cfh_end
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:1078
OpenMesh::PolyConnectivity::VertexVertexIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::VertexHandle, This::VertexHandle, &Iterators::GenericCirculatorBaseT< This >::toVertexHandle > VertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:114
OpenMesh::VertexHandle
Handle for a vertex entity.
Definition: Handles.hh:125
OpenMesh::PolyConnectivity::faces_begin
FaceIter faces_begin()
Begin iterator for faces.
Definition: PolyConnectivity.cc:697
OpenMesh::PolyConnectivity::CFVIter
ConstFaceVertexIter CFVIter
Alias typedef.
Definition: PolyConnectivity.hh:372
OpenMesh::PolyConnectivity::vih_cwend
VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh)
vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:943
OpenMesh::PolyConnectivity::CFFIter
ConstFaceFaceIter CFFIter
Alias typedef.
Definition: PolyConnectivity.hh:381
OpenMesh::PolyConnectivity::CVFIter
ConstVertexFaceIter CVFIter
Alias typedef.
Definition: PolyConnectivity.hh:369
OpenMesh::PolyConnectivity::FaceVertexCCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::VertexHandle, &Iterators::GenericCirculatorBaseT< This >::toVertexHandle > FaceVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:230
OpenMesh::PolyConnectivity::cfe_cwiter
ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const
const face - edge circulator cw
Definition: PolyConnectivity.hh:726
OpenMesh::PolyConnectivity::deref
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1606
OpenMesh::PolyConnectivity::ConstVertexVertexIter
VertexVertexIter ConstVertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:203
OpenMesh::PolyConnectivity::CVIter
ConstVertexIter CVIter
Alias typedef.
Definition: PolyConnectivity.hh:326
OpenMesh::PolyConnectivity::cvoh_cwbegin
ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:812
OpenMesh::PolyConnectivity::cfe_iter
ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:723
OpenMesh::PolyConnectivity::cfe_cwbegin
ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const
const face - edge circulator cw
Definition: PolyConnectivity.hh:904
OpenMesh::PolyConnectivity::cvih_ccwbegin
ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:806
OpenMesh::PolyConnectivity::HalfedgeLoopCCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > HalfedgeLoopCCWIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:201
OpenMesh::PolyConnectivity::ConstFaceFaceIter
FaceFaceIter ConstFaceFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:296
OpenMesh::PolyConnectivity::VertexIHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::VertexHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toOppositeHalfedgeHandle > VertexIHalfedgeIter
Enumerates incoming half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:146
OpenMesh::PolyConnectivity::ff_range
ConstFaceFaceRange ff_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1371
OpenMesh::PolyConnectivity::voh_ccwbegin
VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:768
OpenMesh::PolyConnectivity::vertices_end
VertexIter vertices_end()
End iterator for vertices.
Definition: PolyConnectivity.cc:637
OpenMesh::PolyConnectivity::cvoh_begin
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:809
OpenMesh::PolyConnectivity::fv_cwend
FaceVertexCWIter fv_cwend(FaceHandle _fh)
face - vertex circulator cw
Definition: PolyConnectivity.hh:1026
OpenMesh::PolyConnectivity::ve_cwiter
VertexEdgeCWIter ve_cwiter(VertexHandle _vh)
vertex - edge circulator cw
Definition: PolyConnectivity.hh:606
OpenMesh::PolyConnectivity::ConstVertexVertexRange
CirculatorRange< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > ConstVertexVertexRange
Definition: PolyConnectivity.hh:1254
OpenMesh::PolyConnectivity::FFIter
FaceFaceIter FFIter
Alias typedef.
Definition: PolyConnectivity.hh:355
OpenMesh::PolyConnectivity::cvf_end
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:1013
OpenMesh::PolyConnectivity::chl_ccwbegin
ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const
const halfedge circulator ccw
Definition: PolyConnectivity.hh:925
OpenMesh::PolyConnectivity::vv_begin
VertexVertexIter vv_begin(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:744
OpenMesh::PolyConnectivity::fv_ccwiter
FaceVertexCCWIter fv_ccwiter(FaceHandle _fh)
face - vertex circulator ccw
Definition: PolyConnectivity.hh:674
OpenMesh::PolyConnectivity::ConstVertexRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > ConstVertexRangeSkipping
Definition: PolyConnectivity.hh:1145
OpenMesh::PolyConnectivity::fv_begin
FaceVertexIter fv_begin(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:837
OpenMesh::PolyConnectivity::vih_end
VertexIHalfedgeIter vih_end(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:940
OpenMesh::PolyConnectivity::cvoh_ccwiter
ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:646
OpenMesh::PolyConnectivity::fh_ccwbegin
FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh)
face - halfedge circulator ccw
Definition: PolyConnectivity.hh:852
OpenMesh::PolyConnectivity::VertexVertexCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::VertexHandle, &Iterators::GenericCirculatorBaseT< This >::toVertexHandle > VertexVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:116
OpenMesh::PolyConnectivity::EntityRange
Generic class for vertex/halfedge/edge/face ranges.
Definition: PolyConnectivity.hh:1124
OpenMesh::Iterators::GenericCirculatorT_DEPRECATED
Definition: CirculatorsT.hh:430
OpenMesh::PolyConnectivity::cvf_cwiter
ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const
const vertex - face circulator cw
Definition: PolyConnectivity.hh:661
OpenMesh::PolyConnectivity::vertices_sbegin
ConstVertexIter vertices_sbegin() const
Const begin iterator for vertices.
Definition: PolyConnectivity.hh:543
OpenMesh::PolyConnectivity::ConstHalfedgeRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > ConstHalfedgeRange
Definition: PolyConnectivity.hh:1150
OpenMesh::PolyConnectivity::ve_ccwbegin
VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh)
vertex - edge circulator ccw
Definition: PolyConnectivity.hh:777
OpenMesh::PolyConnectivity::vih_ccwiter
VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:591
OpenMesh::PolyConnectivity::all_edges
ConstEdgeRange all_edges() const
Definition: PolyConnectivity.hh:1211
OpenMesh::PolyConnectivity::VFIter
VertexFaceIter VFIter
Alias typedef.
Definition: PolyConnectivity.hh:343
OpenMesh::PolyConnectivity::faces
ConstFaceRangeSkipping faces() const
Definition: PolyConnectivity.hh:1217
OpenMesh::Iterators::GenericCirculatorT
Definition: CirculatorsT.hh:258
OpenMesh::PolyConnectivity::FIter
FaceIter FIter
Alias typedef.
Definition: PolyConnectivity.hh:324
OpenMesh::PolyConnectivity::hl_cwbegin
HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh)
halfedge circulator
Definition: PolyConnectivity.hh:876
OpenMesh::PolyConnectivity::cvf_iter
ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:658
OpenMesh::PolyConnectivity::FVCWIter
FaceVertexCWIter FVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:347
OpenMesh::PolyConnectivity::faces_sbegin
ConstFaceIter faces_sbegin() const
Const begin iterator for faces.
Definition: PolyConnectivity.hh:564
OpenMesh::PolyConnectivity::ConstFaceEdgeCCWIter
FaceEdgeCCWIter ConstFaceEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:295
OpenMesh::PolyConnectivity::cvoh_iter
ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:640
OpenMesh::PolyConnectivity::fe_cwiter
FaceEdgeCWIter fe_cwiter(FaceHandle _fh)
face - edge circulator cw
Definition: PolyConnectivity.hh:689
OpenMesh::PolyConnectivity::ff_begin
FaceFaceIter ff_begin(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:864
OpenMesh::PolyConnectivity::vv_range
ConstVertexVertexRange vv_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1307
OpenMesh::PolyConnectivity::chl_end
ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
const face - face circulator
Definition: PolyConnectivity.hh:1105
OpenMesh::PolyConnectivity::ConstHalfedgeIter
HalfedgeIter ConstHalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:92
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCCWIter
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:211
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCWIter
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:210
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCWIter
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:207
OpenMesh::PolyConnectivity::ConstFaceEdgeIter
FaceEdgeIter ConstFaceEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:293
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:76
OpenMesh::PolyConnectivity::FaceHalfedgeCCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > FaceHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:246
OpenMesh::PolyConnectivity::fv_ccwbegin
FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh)
face - vertex circulator ccw
Definition: PolyConnectivity.hh:843
OpenMesh::PolyConnectivity::vih_iter
VertexIHalfedgeIter vih_iter(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:585
OpenMesh::PolyConnectivity::EdgeIter
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:88
OpenMesh::PolyConnectivity::fv_end
FaceVertexIter fv_end(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:1023
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCWIter
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:304
OpenMesh::PolyConnectivity::cvih_cwbegin
ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:803
OpenMesh::PolyConnectivity::CVVIter
ConstVertexVertexIter CVVIter
Alias typedef.
Definition: PolyConnectivity.hh:357
OpenMesh::PolyConnectivity::VIHICCWter
VertexIHalfedgeCCWIter VIHICCWter
Alias typedef.
Definition: PolyConnectivity.hh:339
OpenMesh::PolyConnectivity::vertices_sbegin
VertexIter vertices_sbegin()
Begin iterator for vertices.
Definition: PolyConnectivity.hh:540
OpenMesh::PolyConnectivity::voh_begin
VertexOHalfedgeIter voh_begin(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:762
OpenMesh::PolyConnectivity::ConstFaceFaceCCWIter
FaceFaceCCWIter ConstFaceFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:298
OpenMesh::PolyConnectivity::vf_iter
VertexFaceIter vf_iter(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:612
OpenMesh::PolyConnectivity::deref
Edge & deref(EdgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1608
OpenMesh::PolyConnectivity::cff_cwend
ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:1099
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeRange
CirculatorRange< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > ConstVertexIHalfedgeRange
Definition: PolyConnectivity.hh:1260
OpenMesh::PolyConnectivity::cfh_cwbegin
ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const
const face - halfedge circulator cw
Definition: PolyConnectivity.hh:895
OpenMesh::PolyConnectivity::VertexEdgeCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::EdgeHandle, &Iterators::GenericCirculatorBaseT< This >::toEdgeHandle > VertexEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:180
OpenMesh::PolyConnectivity::hl_ccwend
HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh)
face - face circulator ccw
Definition: PolyConnectivity.hh:1065
OpenMesh::PolyConnectivity::ConstFaceHalfedgeIter
FaceHalfedgeIter ConstFaceHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:290
OpenMesh::PolyConnectivity::vertices_begin
VertexIter vertices_begin()
Begin iterator for vertices.
Definition: PolyConnectivity.cc:625
OpenMesh::PolyConnectivity::FHIter
FaceHalfedgeIter FHIter
Alias typedef.
Definition: PolyConnectivity.hh:349
OpenMesh::PolyConnectivity::vv_end
VertexVertexIter vv_end(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:931
OpenMesh::PolyConnectivity::VOHCCWIter
VertexOHalfedgeCCWIter VOHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:336
OpenMesh::PolyConnectivity::FaceHalfedgeCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle, false > FaceHalfedgeCWIter
Enumerate incident half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:253
OpenMesh::PolyConnectivity::fh_iter
FaceHalfedgeIter fh_iter(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:677
OpenMesh::PolyConnectivity::VIHICWter
VertexIHalfedgeCWIter VIHICWter
Alias typedef.
Definition: PolyConnectivity.hh:338
OpenMesh::PolyConnectivity::chl_cwend
ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const
const face - face circulator cw
Definition: PolyConnectivity.hh:1108
OpenMesh::PolyConnectivity::FHandle
FaceHandle FHandle
Alias typedef.
Definition: PolyConnectivity.hh:319
OpenMesh::PolyConnectivity::voh_cwend
VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:952
OpenMesh::PolyConnectivity::chl_ccwend
ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const
const face - face circulator ccw
Definition: PolyConnectivity.hh:1111
OpenMesh::PolyConnectivity
Connectivity Class for polygonal meshes.
Definition: PolyConnectivity.hh:61
OpenMesh::PolyConnectivity::ConstFaceHalfedgeRange
CirculatorRange< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > ConstFaceHalfedgeRange
Definition: PolyConnectivity.hh:1289
OpenMesh::PolyConnectivity::cvf_begin
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:827
OpenMesh::PolyConnectivity::VertexOHalfedgeIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::VertexHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > VertexOHalfedgeIter
Enumerates outgoing half edges in a clockwise fashion.
Definition: PolyConnectivity.hh:130
OpenMesh::PolyConnectivity::edges_begin
EdgeIter edges_begin()
Begin iterator for edges.
Definition: PolyConnectivity.cc:673
OpenMesh::PolyConnectivity::cvih_ccwiter
ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:637
OpenMesh::PolyConnectivity::ConstVertexVertexCWIter
VertexVertexCWIter ConstVertexVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:204
OpenMesh::PolyConnectivity::ff_iter
FaceFaceIter ff_iter(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:695
OpenMesh::PolyConnectivity::fh_end
FaceHalfedgeIter fh_end(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:1032
OpenMesh::PolyConnectivity::ve_iter
VertexEdgeIter ve_iter(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:603
OpenMesh::PolyConnectivity::cfv_iter
ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:705
OpenMesh::PolyConnectivity::cvih_iter
ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:631
OpenMesh::PolyConnectivity::voh_end
VertexOHalfedgeIter voh_end(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:949
OpenMesh::PolyConnectivity::cff_ccwbegin
ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const
const face - face circulator ccw
Definition: PolyConnectivity.hh:916
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeRange
CirculatorRange< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > ConstVertexOHalfedgeRange
Definition: PolyConnectivity.hh:1265
OpenMesh::PolyConnectivity::ConstVertexEdgeCCWIter
VertexEdgeCCWIter ConstVertexEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:217
OpenMesh::PolyConnectivity::add_vertex
VertexHandle add_vertex()
Add a new vertex.
Definition: PolyConnectivity.hh:404
OpenMesh::PolyConnectivity::ve_end
VertexEdgeIter ve_end(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:958
OpenMesh::EdgeHandle
Handle for a edge entity.
Definition: Handles.hh:139
OpenMesh::PolyConnectivity::cve_cwbegin
ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const
const vertex - edge circulator cw
Definition: PolyConnectivity.hh:821
OpenMesh::PolyConnectivity::halfedges_end
HalfedgeIter halfedges_end()
End iterator for halfedges.
Definition: PolyConnectivity.cc:661
OpenMesh::PolyConnectivity::cfv_cwend
ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const
const face - vertex circulator cw
Definition: PolyConnectivity.hh:1072
OpenMesh::PolyConnectivity::ConstEdgeIter
EdgeIter ConstEdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:93
OpenMesh::PolyConnectivity::cfv_ccwbegin
ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const
const face - vertex circulator ccw
Definition: PolyConnectivity.hh:889
OpenMesh::PolyConnectivity::ConstVertexEdgeIter
VertexEdgeIter ConstVertexEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:215
OpenMesh::PolyConnectivity::vv_ccwiter
VertexVertexCCWIter vv_ccwiter(VertexHandle _vh)
vertex - vertex circulator ccw
Definition: PolyConnectivity.hh:582
OpenMesh::PolyConnectivity::voh_cwiter
VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:597
OpenMesh::PolyConnectivity::vf_cwend
VertexFaceCWIter vf_cwend(VertexHandle _vh)
vertex - face circulator cw
Definition: PolyConnectivity.hh:970
OpenMesh::PolyConnectivity::vih_ccwend
VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:946
OpenMesh::PolyConnectivity::cvf_cwbegin
ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const
const vertex - face circulator cw
Definition: PolyConnectivity.hh:830
OpenMesh::PolyConnectivity::fv_ccwend
FaceVertexCCWIter fv_ccwend(FaceHandle _fh)
face - vertex circulator ccw
Definition: PolyConnectivity.hh:1029
OpenMesh::PolyConnectivity::InvalidEdgeHandle
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:71
OpenMesh::PolyConnectivity::CVIHCWIter
ConstVertexIHalfedgeCWIter CVIHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:364
OpenMesh::PolyConnectivity::fh_cwiter
FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh)
face - halfedge circulator cw
Definition: PolyConnectivity.hh:680
OpenMesh::PolyConnectivity::cvv_end
ConstVertexVertexIter cvv_end(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:977
OpenMesh::ArrayKernel
Mesh kernel using arrays for mesh item storage.
Definition: ArrayKernel.hh:92
OpenMesh::PolyConnectivity::cve_cwend
ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const
const vertex - edge circulator cw
Definition: PolyConnectivity.hh:1007
OpenMesh::PolyConnectivity::VVIter
VertexVertexIter VVIter
Alias typedef.
Definition: PolyConnectivity.hh:331
OpenMesh::PolyConnectivity::chl_begin
ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
const halfedge circulator
Definition: PolyConnectivity.hh:919
OpenMesh::PolyConnectivity::cff_begin
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:910
OpenMesh::PolyConnectivity::ff_cwbegin
FaceFaceCWIter ff_cwbegin(FaceHandle _fh)
face - face circulator cw
Definition: PolyConnectivity.hh:867
OpenMesh::PolyConnectivity::vv_ccwend
VertexVertexCCWIter vv_ccwend(VertexHandle _vh)
vertex - vertex circulator ccw
Definition: PolyConnectivity.hh:937
OpenMesh::PolyConnectivity::HHandle
HalfedgeHandle HHandle
Alias typedef.
Definition: PolyConnectivity.hh:317
OpenMesh::PolyConnectivity::ConstFaceFaceCWIter
FaceFaceCWIter ConstFaceFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:297
OpenMesh::PolyConnectivity::ConstFaceVertexIter
FaceVertexIter ConstFaceVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:287
OpenMesh::PolyConnectivity::cfe_end
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:1087
OpenMesh::PolyConnectivity::cvih_cwiter
ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:634
OpenMesh::PolyConnectivity::FECWIter
FaceEdgeCWIter FECWIter
Alias typedef.
Definition: PolyConnectivity.hh:353
OpenMesh::PolyConnectivity::VertexOHalfedgeCCWIter
Iterators::GenericCirculatorT< This, This::VertexHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle, false > VertexOHalfedgeCCWIter
Enumerates outgoing half edges in a counter clockwise fashion.
Definition: PolyConnectivity.hh:139
OpenMesh::PolyConnectivity::CVOHCWIter
ConstVertexOHalfedgeCWIter CVOHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:361
OpenMesh::PolyConnectivity::FaceEdgeCCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::EdgeHandle, &Iterators::GenericCirculatorBaseT< This >::toEdgeHandle > FaceEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:262
OpenMesh::PolyConnectivity::vf_begin
VertexFaceIter vf_begin(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:780
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCCWIter
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:305
OpenMesh::PolyConnectivity::FEIter
FaceEdgeIter FEIter
Alias typedef.
Definition: PolyConnectivity.hh:352