| 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 #ifndef OPENMESH_POLYCONNECTIVITY_HH
45 #define OPENMESH_POLYCONNECTIVITY_HH
46
47 #include <OpenMesh/Core/Mesh/ArrayKernel.hh>
48 #include <OpenMesh/Core/Mesh/IteratorsT.hh>
49 #include <OpenMesh/Core/Mesh/CirculatorsT.hh>
50
51 namespace OpenMesh
52 {
53
56 class OPENMESHDLLEXPORT PolyConnectivity : public ArrayKernel
57 {
58 public:
60
61 static const VertexHandle InvalidVertexHandle;
64 static const HalfedgeHandle InvalidHalfedgeHandle;
66 static const EdgeHandle InvalidEdgeHandle;
68 static const FaceHandle InvalidFaceHandle;
70
71 typedef PolyConnectivity This;
72
73 //--- iterators ---
74
80 typedef Iterators::GenericIteratorT<This, This::VertexHandle, ArrayKernel , &ArrayKernel::has_vertex_status, &ArrayKernel::n_vertices> VertexIter;
82 typedef Iterators::GenericIteratorT<This, This::HalfedgeHandle, ArrayKernel , &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges> HalfedgeIter;
83 typedef Iterators::GenericIteratorT<This, This::EdgeHandle, ArrayKernel , &ArrayKernel::has_edge_status, &ArrayKernel::n_edges> EdgeIter;
84 typedef Iterators::GenericIteratorT<This, This::FaceHandle, ArrayKernel , &ArrayKernel::has_face_status, &ArrayKernel::n_faces> FaceIter;
85
86 typedef VertexIter ConstVertexIter;
87 typedef HalfedgeIter ConstHalfedgeIter;
88 typedef EdgeIter ConstEdgeIter;
89 typedef FaceIter ConstFaceIter;
91
92 //--- circulators ---
93
99
100 /*
101 * Vertex-centered circulators
102 */
103
107 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::VertexHandle,
108 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle>
109 VertexVertexIter;
110 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::VertexHandle,
111 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle> VertexVertexCWIter;
112
116 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::VertexHandle,
117 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle, false>
118 VertexVertexCCWIter;
119
123 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::HalfedgeHandle,
124 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
125 VertexOHalfedgeIter;
126 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
127 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle> VertexOHalfedgeCWIter;
128
132 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
133 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle, false>
134 VertexOHalfedgeCCWIter;
135
139 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::HalfedgeHandle,
140 &Iterators::GenericCirculatorBaseT<This>::toOppositeHalfedgeHandle>
141 VertexIHalfedgeIter;
142 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
143 &Iterators::GenericCirculatorBaseT<This>::toOppositeHalfedgeHandle> VertexIHalfedgeCWIter;
144
148 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::HalfedgeHandle,
149 &Iterators::GenericCirculatorBaseT<This>::toOppositeHalfedgeHandle, false>
150 VertexIHalfedgeCCWIter;
151
155 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::FaceHandle,
156 &Iterators::GenericCirculatorBaseT<This>::toFaceHandle>
157 VertexFaceIter;
158 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::FaceHandle,
159 &Iterators::GenericCirculatorBaseT<This>::toFaceHandle> VertexFaceCWIter;
160
164 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::FaceHandle,
165 &Iterators::GenericCirculatorBaseT<This>::toFaceHandle, false>
166 VertexFaceCCWIter;
167
171 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::VertexHandle, This::EdgeHandle,
172 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle>
173 VertexEdgeIter;
174 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::EdgeHandle,
175 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle> VertexEdgeCWIter;
179 typedef Iterators::GenericCirculatorT<This, This::VertexHandle, This::EdgeHandle,
180 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle, false>
181 VertexEdgeCCWIter;
182
186 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::HalfedgeHandle,
187 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
188 HalfedgeLoopIter;
189 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
190 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle, false> HalfedgeLoopCWIter;
194 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
195 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
196 HalfedgeLoopCCWIter;
197
198 typedef VertexVertexIter ConstVertexVertexIter;
199 typedef VertexVertexCWIter ConstVertexVertexCWIter;
200 typedef VertexVertexCCWIter ConstVertexVertexCCWIter;
201 typedef VertexOHalfedgeIter ConstVertexOHalfedgeIter;
202 typedef VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter;
203 typedef VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter;
204 typedef VertexIHalfedgeIter ConstVertexIHalfedgeIter;
205 typedef VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter;
206 typedef VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter;
207 typedef VertexFaceIter ConstVertexFaceIter;
208 typedef VertexFaceCWIter ConstVertexFaceCWIter;
209 typedef VertexFaceCCWIter ConstVertexFaceCCWIter;
210 typedef VertexEdgeIter ConstVertexEdgeIter;
211 typedef VertexEdgeCWIter ConstVertexEdgeCWIter;
212 typedef VertexEdgeCCWIter ConstVertexEdgeCCWIter;
213
214 /*
215 * Face-centered circulators
216 */
217
221 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::VertexHandle,
222 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle>
223 FaceVertexIter;
224 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::VertexHandle,
225 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle> FaceVertexCCWIter;
226
230 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::VertexHandle,
231 &Iterators::GenericCirculatorBaseT<This>::toVertexHandle, false>
232 FaceVertexCWIter;
233
237 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::HalfedgeHandle,
238 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle>
239 FaceHalfedgeIter;
240 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
241 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle> FaceHalfedgeCCWIter;
242
246 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::HalfedgeHandle,
247 &Iterators::GenericCirculatorBaseT<This>::toHalfedgeHandle, false>
248 FaceHalfedgeCWIter;
249
253 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::EdgeHandle,
254 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle>
255 FaceEdgeIter;
256 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::EdgeHandle,
257 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle> FaceEdgeCCWIter;
258
262 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::EdgeHandle,
263 &Iterators::GenericCirculatorBaseT<This>::toEdgeHandle, false>
264 FaceEdgeCWIter;
265
269 typedef Iterators::GenericCirculatorT_DEPRECATED<This, This::FaceHandle, This::FaceHandle,
270 &Iterators::GenericCirculatorBaseT<This>::toOppositeFaceHandle>
271 FaceFaceIter;
272 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::FaceHandle,
273 &Iterators::GenericCirculatorBaseT<This>::toOppositeFaceHandle> FaceFaceCCWIter;
274
278 typedef Iterators::GenericCirculatorT<This, This::FaceHandle, This::FaceHandle,
279 &Iterators::GenericCirculatorBaseT<This>::toOppositeFaceHandle, false>
280 FaceFaceCWIter;
281
282 typedef FaceVertexIter ConstFaceVertexIter;
283 typedef FaceVertexCWIter ConstFaceVertexCWIter;
284 typedef FaceVertexCCWIter ConstFaceVertexCCWIter;
285 typedef FaceHalfedgeIter ConstFaceHalfedgeIter;
286 typedef FaceHalfedgeCWIter ConstFaceHalfedgeCWIter;
287 typedef FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter;
288 typedef FaceEdgeIter ConstFaceEdgeIter;
289 typedef FaceEdgeCWIter ConstFaceEdgeCWIter;
290 typedef FaceEdgeCCWIter ConstFaceEdgeCCWIter;
291 typedef FaceFaceIter ConstFaceFaceIter;
292 typedef FaceFaceCWIter ConstFaceFaceCWIter;
293 typedef FaceFaceCCWIter ConstFaceFaceCCWIter;
294
295 /*
296 * Halfedge circulator
297 */
298 typedef HalfedgeLoopIter ConstHalfedgeLoopIter;
299 typedef HalfedgeLoopCWIter ConstHalfedgeLoopCWIter;
300 typedef HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter;
301
303
304 // --- shortcuts
305
310 typedef VertexHandle VHandle;
312 typedef HalfedgeHandle HHandle;
313 typedef EdgeHandle EHandle;
314 typedef FaceHandle FHandle;
315
316 typedef VertexIter VIter;
317 typedef HalfedgeIter HIter;
318 typedef EdgeIter EIter;
319 typedef FaceIter FIter;
320
321 typedef ConstVertexIter CVIter;
322 typedef ConstHalfedgeIter CHIter;
323 typedef ConstEdgeIter CEIter;
324 typedef ConstFaceIter CFIter;
325
326 typedef VertexVertexIter VVIter;
327 typedef VertexVertexCWIter VVCWIter;
328 typedef VertexVertexCCWIter VVCCWIter;
329 typedef VertexOHalfedgeIter VOHIter;
330 typedef VertexOHalfedgeCWIter VOHCWIter;
331 typedef VertexOHalfedgeCCWIter VOHCCWIter;
332 typedef VertexIHalfedgeIter VIHIter;
333 typedef VertexIHalfedgeCWIter VIHICWter;
334 typedef VertexIHalfedgeCCWIter VIHICCWter;
335 typedef VertexEdgeIter VEIter;
336 typedef VertexEdgeCWIter VECWIter;
337 typedef VertexEdgeCCWIter VECCWIter;
338 typedef VertexFaceIter VFIter;
339 typedef VertexFaceCWIter VFCWIter;
340 typedef VertexFaceCCWIter VFCCWIter;
341 typedef FaceVertexIter FVIter;
342 typedef FaceVertexCWIter FVCWIter;
343 typedef FaceVertexCCWIter FVCCWIter;
344 typedef FaceHalfedgeIter FHIter;
345 typedef FaceHalfedgeCWIter FHCWIter;
346 typedef FaceHalfedgeCCWIter FHCWWIter;
347 typedef FaceEdgeIter FEIter;
348 typedef FaceEdgeCWIter FECWIter;
349 typedef FaceEdgeCCWIter FECWWIter;
350 typedef FaceFaceIter FFIter;
351
352 typedef ConstVertexVertexIter CVVIter;
353 typedef ConstVertexVertexCWIter CVVCWIter;
354 typedef ConstVertexVertexCCWIter CVVCCWIter;
355 typedef ConstVertexOHalfedgeIter CVOHIter;
356 typedef ConstVertexOHalfedgeCWIter CVOHCWIter;
357 typedef ConstVertexOHalfedgeCCWIter CVOHCCWIter;
358 typedef ConstVertexIHalfedgeIter CVIHIter;
359 typedef ConstVertexIHalfedgeCWIter CVIHCWIter;
360 typedef ConstVertexIHalfedgeCCWIter CVIHCCWIter;
361 typedef ConstVertexEdgeIter CVEIter;
362 typedef ConstVertexEdgeCWIter CVECWIter;
363 typedef ConstVertexEdgeCCWIter CVECCWIter;
364 typedef ConstVertexFaceIter CVFIter;
365 typedef ConstVertexFaceCWIter CVFCWIter;
366 typedef ConstVertexFaceCCWIter CVFCCWIter;
367 typedef ConstFaceVertexIter CFVIter;
368 typedef ConstFaceVertexCWIter CFVCWIter;
369 typedef ConstFaceVertexCCWIter CFVCCWIter;
370 typedef ConstFaceHalfedgeIter CFHIter;
371 typedef ConstFaceHalfedgeCWIter CFHCWIter;
372 typedef ConstFaceHalfedgeCCWIter CFHCCWIter;
373 typedef ConstFaceEdgeIter CFEIter;
374 typedef ConstFaceEdgeCWIter CFECWIter;
375 typedef ConstFaceEdgeCCWIter CFECCWIter;
376 typedef ConstFaceFaceIter CFFIter;
377 typedef ConstFaceFaceCWIter CFFCWIter;
378 typedef ConstFaceFaceCCWIter CFFCCWIter;
380
381 public:
382
383 PolyConnectivity() {}
384 virtual ~PolyConnectivity() {}
385
386 inline static bool is_triangles()
387 { return false; }
388
391 inline void assign_connectivity(const PolyConnectivity& _other)
392 { ArrayKernel::assign_connectivity(_other); }
393
397
399 inline VertexHandle add_vertex()
400 { return new_vertex(); }
401
409 FaceHandle add_face(const std::vector<VertexHandle>& _vhandles);
410
411
421 FaceHandle add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2);
422
433 FaceHandle add_face(VertexHandle _vh0, VertexHandle _vh1, VertexHandle _vh2, VertexHandle _vh3);
434
443 FaceHandle add_face(const VertexHandle* _vhandles, size_t _vhs_size);
444
446
448
449
454 bool is_collapse_ok(HalfedgeHandle _he);
455
456
462 void delete_vertex(VertexHandle _vh, bool _delete_isolated_vertices = true);
463
472 void delete_edge(EdgeHandle _eh, bool _delete_isolated_vertices=true);
473
484 void delete_face(FaceHandle _fh, bool _delete_isolated_vertices=true);
485
487
491
493 VertexIter vertices_begin();
495 ConstVertexIter vertices_begin() const;
497 VertexIter vertices_end();
499 ConstVertexIter vertices_end() const;
500
502 HalfedgeIter halfedges_begin();
504 ConstHalfedgeIter halfedges_begin() const;
506 HalfedgeIter halfedges_end();
508 ConstHalfedgeIter halfedges_end() const;
509
511 EdgeIter edges_begin();
513 ConstEdgeIter edges_begin() const;
515 EdgeIter edges_end();
517 ConstEdgeIter edges_end() const;
518
520 FaceIter faces_begin();
522 ConstFaceIter faces_begin() const;
524 FaceIter faces_end();
526 ConstFaceIter faces_end() const;
528
529
533
535 VertexIter vertices_sbegin()
536 { return VertexIter(*this, VertexHandle(0), true); }
538 ConstVertexIter vertices_sbegin() const
539 { return ConstVertexIter(*this, VertexHandle(0), true); }
540
542 HalfedgeIter halfedges_sbegin()
543 { return HalfedgeIter(*this, HalfedgeHandle(0), true); }
545 ConstHalfedgeIter halfedges_sbegin() const
546 { return ConstHalfedgeIter(*this, HalfedgeHandle(0), true); }
547
549 EdgeIter edges_sbegin()
550 { return EdgeIter(*this, EdgeHandle(0), true); }
552 ConstEdgeIter edges_sbegin() const
553 { return ConstEdgeIter(*this, EdgeHandle(0), true); }
554
556 FaceIter faces_sbegin()
557 { return FaceIter(*this, FaceHandle(0), true); }
559 ConstFaceIter faces_sbegin() const
560 { return ConstFaceIter(*this, FaceHandle(0), true); }
561
563
564 //--- circulators ---
565
569
571 VertexVertexIter vv_iter(VertexHandle _vh)
572 { return VertexVertexIter(*this, _vh); }
574 VertexVertexCWIter vv_cwiter(VertexHandle _vh)
575 { return VertexVertexCWIter(*this, _vh); }
577 VertexVertexCCWIter vv_ccwiter(VertexHandle _vh)
578 { return VertexVertexCCWIter(*this, _vh); }
580 VertexIHalfedgeIter vih_iter(VertexHandle _vh)
581 { return VertexIHalfedgeIter(*this, _vh); }
583 VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh)
584 { return VertexIHalfedgeCWIter(*this, _vh); }
586 VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh)
587 { return VertexIHalfedgeCCWIter(*this, _vh); }
589 VertexOHalfedgeIter voh_iter(VertexHandle _vh)
590 { return VertexOHalfedgeIter(*this, _vh); }
592 VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh)
593 { return VertexOHalfedgeCWIter(*this, _vh); }
595 VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh)
596 { return VertexOHalfedgeCCWIter(*this, _vh); }
598 VertexEdgeIter ve_iter(VertexHandle _vh)
599 { return VertexEdgeIter(*this, _vh); }
601 VertexEdgeCWIter ve_cwiter(VertexHandle _vh)
602 { return VertexEdgeCWIter(*this, _vh); }
604 VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh)
605 { return VertexEdgeCCWIter(*this, _vh); }
607 VertexFaceIter vf_iter(VertexHandle _vh)
608 { return VertexFaceIter(*this, _vh); }
610 VertexFaceCWIter vf_cwiter(VertexHandle _vh)
611 { return VertexFaceCWIter(*this, _vh); }
613 VertexFaceCCWIter vf_ccwiter(VertexHandle _vh)
614 { return VertexFaceCCWIter(*this, _vh); }
615
617 ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
618 { return ConstVertexVertexIter(*this, _vh); }
620 ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const
621 { return ConstVertexVertexCWIter(*this, _vh); }
623 ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const
624 { return ConstVertexVertexCCWIter(*this, _vh); }
626 ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
627 { return ConstVertexIHalfedgeIter(*this, _vh); }
629 ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const
630 { return ConstVertexIHalfedgeCWIter(*this, _vh); }
632 ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const
633 { return ConstVertexIHalfedgeCCWIter(*this, _vh); }
635 ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
636 { return ConstVertexOHalfedgeIter(*this, _vh); }
638 ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const
639 { return ConstVertexOHalfedgeCWIter(*this, _vh); }
641 ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const
642 { return ConstVertexOHalfedgeCCWIter(*this, _vh); }
644 ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
645 { return ConstVertexEdgeIter(*this, _vh); }
647 ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const
648 { return ConstVertexEdgeCWIter(*this, _vh); }
650 ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const
651 { return ConstVertexEdgeCCWIter(*this, _vh); }
653 ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
654 { return ConstVertexFaceIter(*this, _vh); }
656 ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const
657 { return ConstVertexFaceCWIter(*this, _vh); }
659 ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const
660 { return ConstVertexFaceCCWIter(*this, _vh); }
661
663 FaceVertexIter fv_iter(FaceHandle _fh)
664 { return FaceVertexIter(*this, _fh); }
666 FaceVertexCWIter fv_cwiter(FaceHandle _fh)
667 { return FaceVertexCWIter(*this, _fh); }
669 FaceVertexCCWIter fv_ccwiter(FaceHandle _fh)
670 { return FaceVertexCCWIter(*this, _fh); }
672 FaceHalfedgeIter fh_iter(FaceHandle _fh)
673 { return FaceHalfedgeIter(*this, _fh); }
675 FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh)
676 { return FaceHalfedgeCWIter(*this, _fh); }
678 FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh)
679 { return FaceHalfedgeCCWIter(*this, _fh); }
681 FaceEdgeIter fe_iter(FaceHandle _fh)
682 { return FaceEdgeIter(*this, _fh); }
684 FaceEdgeCWIter fe_cwiter(FaceHandle _fh)
685 { return FaceEdgeCWIter(*this, _fh); }
687 FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh)
688 { return FaceEdgeCCWIter(*this, _fh); }
690 FaceFaceIter ff_iter(FaceHandle _fh)
691 { return FaceFaceIter(*this, _fh); }
693 FaceFaceCWIter ff_cwiter(FaceHandle _fh)
694 { return FaceFaceCWIter(*this, _fh); }
696 FaceFaceCCWIter ff_ccwiter(FaceHandle _fh)
697 { return FaceFaceCCWIter(*this, _fh); }
698
700 ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
701 { return ConstFaceVertexIter(*this, _fh); }
703 ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const
704 { return ConstFaceVertexCWIter(*this, _fh); }
706 ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const
707 { return ConstFaceVertexCCWIter(*this, _fh); }
709 ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
710 { return ConstFaceHalfedgeIter(*this, _fh); }
712 ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const
713 { return ConstFaceHalfedgeCWIter(*this, _fh); }
715 ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const
716 { return ConstFaceHalfedgeCCWIter(*this, _fh); }
718 ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
719 { return ConstFaceEdgeIter(*this, _fh); }
721 ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const
722 { return ConstFaceEdgeCWIter(*this, _fh); }
724 ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const
725 { return ConstFaceEdgeCCWIter(*this, _fh); }
727 ConstFaceFaceIter cff_iter(FaceHandle _fh) const
728 { return ConstFaceFaceIter(*this, _fh); }
730 ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const
731 { return ConstFaceFaceCWIter(*this, _fh); }
733 ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const
734 { return ConstFaceFaceCCWIter(*this, _fh); }
735
736 // 'begin' circulators
737
739 VertexVertexIter vv_begin(VertexHandle _vh)
740 { return VertexVertexIter(*this, _vh); }
742 VertexVertexCWIter vv_cwbegin(VertexHandle _vh)
743 { return VertexVertexCWIter(*this, _vh); }
745 VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh)
746 { return VertexVertexCCWIter(*this, _vh); }
748 VertexIHalfedgeIter vih_begin(VertexHandle _vh)
749 { return VertexIHalfedgeIter(*this, _vh); }
751 VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh)
752 { return VertexIHalfedgeCWIter(*this, _vh); }
754 VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh)
755 { return VertexIHalfedgeCCWIter(*this, _vh); }
757 VertexOHalfedgeIter voh_begin(VertexHandle _vh)
758 { return VertexOHalfedgeIter(*this, _vh); }
760 VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh)
761 { return VertexOHalfedgeCWIter(*this, _vh); }
763 VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh)
764 { return VertexOHalfedgeCCWIter(*this, _vh); }
766 VertexEdgeIter ve_begin(VertexHandle _vh)
767 { return VertexEdgeIter(*this, _vh); }
769 VertexEdgeCWIter ve_cwbegin(VertexHandle _vh)
770 { return VertexEdgeCWIter(*this, _vh); }
772 VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh)
773 { return VertexEdgeCCWIter(*this, _vh); }
775 VertexFaceIter vf_begin(VertexHandle _vh)
776 { return VertexFaceIter(*this, _vh); }
778 VertexFaceCWIter vf_cwbegin(VertexHandle _vh)
779 { return VertexFaceCWIter(*this, _vh); }
781 VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh)
782 { return VertexFaceCCWIter(*this, _vh); }
783
784
786 ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
787 { return ConstVertexVertexIter(*this, _vh); }
789 ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
790 { return ConstVertexVertexCWIter(*this, _vh); }
792 ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const
793 { return ConstVertexVertexCCWIter(*this, _vh); }
795 ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
796 { return ConstVertexIHalfedgeIter(*this, _vh); }
798 ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const
799 { return ConstVertexIHalfedgeCWIter(*this, _vh); }
801 ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const
802 { return ConstVertexIHalfedgeCCWIter(*this, _vh); }
804 ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
805 { return ConstVertexOHalfedgeIter(*this, _vh); }
807 ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const
808 { return ConstVertexOHalfedgeCWIter(*this, _vh); }
810 ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const
811 { return ConstVertexOHalfedgeCCWIter(*this, _vh); }
813 ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
814 { return ConstVertexEdgeIter(*this, _vh); }
816 ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const
817 { return ConstVertexEdgeCWIter(*this, _vh); }
819 ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const
820 { return ConstVertexEdgeCCWIter(*this, _vh); }
822 ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
823 { return ConstVertexFaceIter(*this, _vh); }
825 ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const
826 { return ConstVertexFaceCWIter(*this, _vh); }
828 ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const
829 { return ConstVertexFaceCCWIter(*this, _vh); }
830
832 FaceVertexIter fv_begin(FaceHandle _fh)
833 { return FaceVertexIter(*this, _fh); }
835 FaceVertexCWIter fv_cwbegin(FaceHandle _fh)
836 { return FaceVertexCWIter(*this, _fh); }
838 FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh)
839 { return FaceVertexCCWIter(*this, _fh); }
841 FaceHalfedgeIter fh_begin(FaceHandle _fh)
842 { return FaceHalfedgeIter(*this, _fh); }
844 FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh)
845 { return FaceHalfedgeCWIter(*this, _fh); }
847 FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh)
848 { return FaceHalfedgeCCWIter(*this, _fh); }
850 FaceEdgeIter fe_begin(FaceHandle _fh)
851 { return FaceEdgeIter(*this, _fh); }
853 FaceEdgeCWIter fe_cwbegin(FaceHandle _fh)
854 { return FaceEdgeCWIter(*this, _fh); }
856 FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh)
857 { return FaceEdgeCCWIter(*this, _fh); }
859 FaceFaceIter ff_begin(FaceHandle _fh)
860 { return FaceFaceIter(*this, _fh); }
862 FaceFaceCWIter ff_cwbegin(FaceHandle _fh)
863 { return FaceFaceCWIter(*this, _fh); }
865 FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh)
866 { return FaceFaceCCWIter(*this, _fh); }
868 HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
869 { return HalfedgeLoopIter(*this, _heh); }
871 HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh)
872 { return HalfedgeLoopCWIter(*this, _heh); }
874 HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh)
875 { return HalfedgeLoopCCWIter(*this, _heh); }
876
878 ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
879 { return ConstFaceVertexIter(*this, _fh); }
881 ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const
882 { return ConstFaceVertexCWIter(*this, _fh); }
884 ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const
885 { return ConstFaceVertexCCWIter(*this, _fh); }
887 ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
888 { return ConstFaceHalfedgeIter(*this, _fh); }
890 ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const
891 { return ConstFaceHalfedgeCWIter(*this, _fh); }
893 ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const
894 { return ConstFaceHalfedgeCCWIter(*this, _fh); }
896 ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
897 { return ConstFaceEdgeIter(*this, _fh); }
899 ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const
900 { return ConstFaceEdgeCWIter(*this, _fh); }
902 ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const
903 { return ConstFaceEdgeCCWIter(*this, _fh); }
905 ConstFaceFaceIter cff_begin(FaceHandle _fh) const
906 { return ConstFaceFaceIter(*this, _fh); }
908 ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const
909 { return ConstFaceFaceCWIter(*this, _fh); }
911 ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const
912 { return ConstFaceFaceCCWIter(*this, _fh); }
914 ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
915 { return ConstHalfedgeLoopIter(*this, _heh); }
917 ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const
918 { return ConstHalfedgeLoopCWIter(*this, _heh); }
920 ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const
921 { return ConstHalfedgeLoopCCWIter(*this, _heh); }
922
923 // 'end' circulators
924
926 VertexVertexIter vv_end(VertexHandle _vh)
927 { return VertexVertexIter(*this, _vh, true); }
929 VertexVertexCWIter vv_cwend(VertexHandle _vh)
930 { return VertexVertexCWIter(*this, _vh, true); }
932 VertexVertexCCWIter vv_ccwend(VertexHandle _vh)
933 { return VertexVertexCCWIter(*this, _vh, true); }
935 VertexIHalfedgeIter vih_end(VertexHandle _vh)
936 { return VertexIHalfedgeIter(*this, _vh, true); }
938 VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh)
939 { return VertexIHalfedgeCWIter(*this, _vh, true); }
941 VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh)
942 { return VertexIHalfedgeCCWIter(*this, _vh, true); }
944 VertexOHalfedgeIter voh_end(VertexHandle _vh)
945 { return VertexOHalfedgeIter(*this, _vh, true); }
947 VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh)
948 { return VertexOHalfedgeCWIter(*this, _vh, true); }
950 VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh)
951 { return VertexOHalfedgeCCWIter(*this, _vh, true); }
953 VertexEdgeIter ve_end(VertexHandle _vh)
954 { return VertexEdgeIter(*this, _vh, true); }
956 VertexEdgeCWIter ve_cwend(VertexHandle _vh)
957 { return VertexEdgeCWIter(*this, _vh, true); }
959 VertexEdgeCCWIter ve_ccwend(VertexHandle _vh)
960 { return VertexEdgeCCWIter(*this, _vh, true); }
962 VertexFaceIter vf_end(VertexHandle _vh)
963 { return VertexFaceIter(*this, _vh, true); }
965 VertexFaceCWIter vf_cwend(VertexHandle _vh)
966 { return VertexFaceCWIter(*this, _vh, true); }
968 VertexFaceCCWIter vf_ccwend(VertexHandle _vh)
969 { return VertexFaceCCWIter(*this, _vh, true); }
970
972 ConstVertexVertexIter cvv_end(VertexHandle _vh) const
973 { return ConstVertexVertexIter(*this, _vh, true); }
975 ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
976 { return ConstVertexVertexCWIter(*this, _vh, true); }
978 ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const
979 { return ConstVertexVertexCCWIter(*this, _vh, true); }
981 ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
982 { return ConstVertexIHalfedgeIter(*this, _vh, true); }
984 ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const
985 { return ConstVertexIHalfedgeCWIter(*this, _vh, true); }
987 ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const
988 { return ConstVertexIHalfedgeCCWIter(*this, _vh, true); }
990 ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
991 { return ConstVertexOHalfedgeIter(*this, _vh, true); }
993 ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const
994 { return ConstVertexOHalfedgeCWIter(*this, _vh, true); }
996 ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const
997 { return ConstVertexOHalfedgeCCWIter(*this, _vh, true); }
999 ConstVertexEdgeIter cve_end(VertexHandle _vh) const
1000 { return ConstVertexEdgeIter(*this, _vh, true); }
1002 ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const
1003 { return ConstVertexEdgeCWIter(*this, _vh, true); }
1005 ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const
1006 { return ConstVertexEdgeCCWIter(*this, _vh, true); }
1008 ConstVertexFaceIter cvf_end(VertexHandle _vh) const
1009 { return ConstVertexFaceIter(*this, _vh, true); }
1011 ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const
1012 { return ConstVertexFaceCWIter(*this, _vh, true); }
1014 ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const
1015 { return ConstVertexFaceCCWIter(*this, _vh, true); }
1016
1018 FaceVertexIter fv_end(FaceHandle _fh)
1019 { return FaceVertexIter(*this, _fh, true); }
1021 FaceVertexCWIter fv_cwend(FaceHandle _fh)
1022 { return FaceVertexCWIter(*this, _fh, true); }
1024 FaceVertexCCWIter fv_ccwend(FaceHandle _fh)
1025 { return FaceVertexCCWIter(*this, _fh, true); }
1027 FaceHalfedgeIter fh_end(FaceHandle _fh)
1028 { return FaceHalfedgeIter(*this, _fh, true); }
1030 FaceHalfedgeCWIter fh_cwend(FaceHandle _fh)
1031 { return FaceHalfedgeCWIter(*this, _fh, true); }
1033 FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh)
1034 { return FaceHalfedgeCCWIter(*this, _fh, true); }
1036 FaceEdgeIter fe_end(FaceHandle _fh)
1037 { return FaceEdgeIter(*this, _fh, true); }
1039 FaceEdgeCWIter fe_cwend(FaceHandle _fh)
1040 { return FaceEdgeCWIter(*this, _fh, true); }
1042 FaceEdgeCCWIter fe_ccwend(FaceHandle _fh)
1043 { return FaceEdgeCCWIter(*this, _fh, true); }
1045 FaceFaceIter ff_end(FaceHandle _fh)
1046 { return FaceFaceIter(*this, _fh, true); }
1048 FaceFaceCWIter ff_cwend(FaceHandle _fh)
1049 { return FaceFaceCWIter(*this, _fh, true); }
1051 FaceFaceCCWIter ff_ccwend(FaceHandle _fh)
1052 { return FaceFaceCCWIter(*this, _fh, true); }
1054 HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
1055 { return HalfedgeLoopIter(*this, _heh, true); }
1057 HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh)
1058 { return HalfedgeLoopCWIter(*this, _heh, true); }
1060 HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh)
1061 { return HalfedgeLoopCCWIter(*this, _heh, true); }
1062
1064 ConstFaceVertexIter cfv_end(FaceHandle _fh) const
1065 { return ConstFaceVertexIter(*this, _fh, true); }
1067 ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const
1068 { return ConstFaceVertexCWIter(*this, _fh, true); }
1070 ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const
1071 { return ConstFaceVertexCCWIter(*this, _fh, true); }
1073 ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
1074 { return ConstFaceHalfedgeIter(*this, _fh, true); }
1076 ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const
1077 { return ConstFaceHalfedgeCWIter(*this, _fh, true); }
1079 ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const
1080 { return ConstFaceHalfedgeCCWIter(*this, _fh, true); }
1082 ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
1083 { return ConstFaceEdgeIter(*this, _fh, true); }
1085 ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const
1086 { return ConstFaceEdgeCWIter(*this, _fh, true); }
1088 ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const
1089 { return ConstFaceEdgeCCWIter(*this, _fh, true); }
1091 ConstFaceFaceIter cff_end(FaceHandle _fh) const
1092 { return ConstFaceFaceIter(*this, _fh, true); }
1094 ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const
1095 { return ConstFaceFaceCWIter(*this, _fh, true); }
1097 ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const
1098 { return ConstFaceFaceCCWIter(*this, _fh, true); }
1100 ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
1101 { return ConstHalfedgeLoopIter(*this, _heh, true); }
1103 ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const
1104 { return ConstHalfedgeLoopCWIter(*this, _heh, true); }
1106 ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const
1107 { return ConstHalfedgeLoopCCWIter(*this, _heh, true); }
1109
1112
1114 template<
1115 typename CONTAINER_TYPE,
1116 typename ITER_TYPE,
1117 ITER_TYPE (CONTAINER_TYPE::*begin_fn)() const,
1118 ITER_TYPE (CONTAINER_TYPE::*end_fn)() const>
1119 class EntityRange {
1120 public:
1121 typedef ITER_TYPE iterator;
1122 typedef ITER_TYPE const_iterator;
1123
1124 EntityRange(CONTAINER_TYPE &container) : container_(container) {}
1125 ITER_TYPE begin() const { return (container_.*begin_fn)(); }
1126 ITER_TYPE end() const { return (container_.*end_fn)(); }
1127
1128 private:
1129 CONTAINER_TYPE &container_;
1130 };
1131 typedef EntityRange<
1132 const PolyConnectivity,
1133 PolyConnectivity::ConstVertexIter,
1134 &PolyConnectivity::vertices_begin,
1135 &PolyConnectivity::vertices_end> ConstVertexRange;
1136 typedef EntityRange<
1137 const PolyConnectivity,
1138 PolyConnectivity::ConstVertexIter,
1139 &PolyConnectivity::vertices_sbegin,
1140 &PolyConnectivity::vertices_end> ConstVertexRangeSkipping;
1141 typedef EntityRange<
1142 const PolyConnectivity,
1143 PolyConnectivity::ConstHalfedgeIter,
1144 &PolyConnectivity::halfedges_begin,
1145 &PolyConnectivity::halfedges_end> ConstHalfedgeRange;
1146 typedef EntityRange<
1147 const PolyConnectivity,
1148 PolyConnectivity::ConstHalfedgeIter,
1149 &PolyConnectivity::halfedges_sbegin,
1150 &PolyConnectivity::halfedges_end> ConstHalfedgeRangeSkipping;
1151 typedef EntityRange<
1152 const PolyConnectivity,
1153 PolyConnectivity::ConstEdgeIter,
1154 &PolyConnectivity::edges_begin,
1155 &PolyConnectivity::edges_end> ConstEdgeRange;
1156 typedef EntityRange<
1157 const PolyConnectivity,
1158 PolyConnectivity::ConstEdgeIter,
1159 &PolyConnectivity::edges_sbegin,
1160 &PolyConnectivity::edges_end> ConstEdgeRangeSkipping;
1161 typedef EntityRange<
1162 const PolyConnectivity,
1163 PolyConnectivity::ConstFaceIter,
1164 &PolyConnectivity::faces_begin,
1165 &PolyConnectivity::faces_end> ConstFaceRange;
1166 typedef EntityRange<
1167 const PolyConnectivity,
1168 PolyConnectivity::ConstFaceIter,
1169 &PolyConnectivity::faces_sbegin,
1170 &PolyConnectivity::faces_end> ConstFaceRangeSkipping;
1171
1176 ConstVertexRangeSkipping vertices() const { return ConstVertexRangeSkipping(*this); }
1177
1182 ConstVertexRange all_vertices() const { return ConstVertexRange(*this); }
1183
1188 ConstHalfedgeRangeSkipping halfedges() const { return ConstHalfedgeRangeSkipping(*this); }
1189
1194 ConstHalfedgeRange all_halfedges() const { return ConstHalfedgeRange(*this); }
1195
1200 ConstEdgeRangeSkipping edges() const { return ConstEdgeRangeSkipping(*this); }
1201
1206 ConstEdgeRange all_edges() const { return ConstEdgeRange(*this); }
1207
1212 ConstFaceRangeSkipping faces() const { return ConstFaceRangeSkipping(*this); }
1213
1218 ConstFaceRange all_faces() const { return ConstFaceRange(*this); }
1219
1221 template<
1222 typename CONTAINER_TYPE,
1223 typename ITER_TYPE,
1224 typename CENTER_ENTITY_TYPE,
1225 ITER_TYPE (CONTAINER_TYPE::*begin_fn)(CENTER_ENTITY_TYPE) const,
1226 ITER_TYPE (CONTAINER_TYPE::*end_fn)(CENTER_ENTITY_TYPE) const>
1227 class CirculatorRange {
1228 public:
1229 typedef ITER_TYPE iterator;
1230 typedef ITER_TYPE const_iterator;
1231
1232 CirculatorRange(
1233 const CONTAINER_TYPE &container,
1234 CENTER_ENTITY_TYPE center) :
1235 container_(container), center_(center) {}
1236 ITER_TYPE begin() const { return (container_.*begin_fn)(center_); }
1237 ITER_TYPE end() const { return (container_.*end_fn)(center_); }
1238
1239 private:
1240 const CONTAINER_TYPE &container_;
1241 CENTER_ENTITY_TYPE center_;
1242 };
1243
1244 typedef CirculatorRange<
1245 PolyConnectivity,
1246 ConstVertexVertexCWIter,
1247 VertexHandle,
1248 &PolyConnectivity::cvv_cwbegin,
1249 &PolyConnectivity::cvv_cwend> ConstVertexVertexRange;
1250 typedef CirculatorRange<
1251 PolyConnectivity,
1252 ConstVertexIHalfedgeIter,
1253 VertexHandle,
1254 &PolyConnectivity::cvih_begin,
1255 &PolyConnectivity::cvih_end> ConstVertexIHalfedgeRange;
1256 typedef CirculatorRange<
1257 PolyConnectivity,
1258 ConstVertexOHalfedgeIter, VertexHandle,
1259 &PolyConnectivity::cvoh_begin,
1260 &PolyConnectivity::cvoh_end> ConstVertexOHalfedgeRange;
1261 typedef CirculatorRange<
1262 PolyConnectivity,
1263 ConstVertexEdgeIter,
1264 VertexHandle,
1265 &PolyConnectivity::cve_begin,
1266 &PolyConnectivity::cve_end> ConstVertexEdgeRange;
1267 typedef CirculatorRange<
1268 PolyConnectivity,
1269 ConstVertexFaceIter,
1270 VertexHandle,
1271 &PolyConnectivity::cvf_begin,
1272 &PolyConnectivity::cvf_end> ConstVertexFaceRange;
1273 typedef CirculatorRange<
1274 PolyConnectivity,
1275 ConstFaceVertexIter,
1276 FaceHandle,
1277 &PolyConnectivity::cfv_begin,
1278 &PolyConnectivity::cfv_end> ConstFaceVertexRange;
1279 typedef CirculatorRange<
1280 PolyConnectivity,
1281 ConstFaceHalfedgeIter,
1282 FaceHandle,
1283 &PolyConnectivity::cfh_begin,
1284 &PolyConnectivity::cfh_end> ConstFaceHalfedgeRange;
1285 typedef CirculatorRange<
1286 PolyConnectivity,
1287 ConstFaceEdgeIter,
1288 FaceHandle,
1289 &PolyConnectivity::cfe_begin,
1290 &PolyConnectivity::cfe_end> ConstFaceEdgeRange;
1291 typedef CirculatorRange<
1292 PolyConnectivity,
1293 ConstFaceFaceIter,
1294 FaceHandle,
1295 &PolyConnectivity::cff_begin,
1296 &PolyConnectivity::cff_end> ConstFaceFaceRange;
1297
1302 ConstVertexVertexRange vv_range(VertexHandle _vh) const {
1303 return ConstVertexVertexRange(*this, _vh);
1304 }
1305
1310 ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const {
1311 return ConstVertexIHalfedgeRange(*this, _vh);
1312 }
1313
1318 ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const {
1319 return ConstVertexOHalfedgeRange(*this, _vh);
1320 }
1321
1326 ConstVertexEdgeRange ve_range(VertexHandle _vh) const {
1327 return ConstVertexEdgeRange(*this, _vh);
1328 }
1329
1334 ConstVertexFaceRange vf_range(VertexHandle _vh) const {
1335 return ConstVertexFaceRange(*this, _vh);
1336 }
1337
1342 ConstFaceVertexRange fv_range(FaceHandle _fh) const {
1343 return ConstFaceVertexRange(*this, _fh);
1344 }
1345
1350 ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const {
1351 return ConstFaceHalfedgeRange(*this, _fh);
1352 }
1353
1358 ConstFaceEdgeRange fe_range(FaceHandle _fh) const {
1359 return ConstFaceEdgeRange(*this, _fh);
1360 }
1361
1366 ConstFaceFaceRange ff_range(FaceHandle _fh) const {
1367 return ConstFaceFaceRange(*this, _fh);
1368 }
1369
1371
1372 //===========================================================================
1375 //===========================================================================
1376
1384 bool is_boundary(HalfedgeHandle _heh) const
1385 { return ArrayKernel::is_boundary(_heh); }
1386
1395 bool is_boundary(EdgeHandle _eh) const
1396 {
1397 return (is_boundary(halfedge_handle(_eh, 0)) ||
1398 is_boundary(halfedge_handle(_eh, 1)));
1399 }
1400
1412 bool is_boundary(VertexHandle _vh) const
1413 {
1414 HalfedgeHandle heh(halfedge_handle(_vh));
1415 return (!(heh.is_valid() && face_handle(heh).is_valid()));
1416 }
1417
1427 bool is_boundary(FaceHandle _fh, bool _check_vertex=false) const;
1428
1439 bool is_manifold(VertexHandle _vh) const;
1440
1443 // --- shortcuts ---
1444
1446 inline FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
1447 { return face_handle(opposite_halfedge_handle(_heh)); }
1448
1449 // --- misc ---
1450
1454 void adjust_outgoing_halfedge(VertexHandle _vh);
1455
1457 HalfedgeHandle find_halfedge(VertexHandle _start_vh, VertexHandle _end_vh) const;
1459 uint valence(VertexHandle _vh) const;
1461 uint valence(FaceHandle _fh) const;
1462
1463 // --- connectivity operattions
1464
1479 void collapse(HalfedgeHandle _heh);
1484 bool is_simple_link(EdgeHandle _eh) const;
1489 bool is_simply_connected(FaceHandle _fh) const;
1502 FaceHandle remove_edge(EdgeHandle _eh);
1506 void reinsert_edge(EdgeHandle _eh);
1516 HalfedgeHandle insert_edge(HalfedgeHandle _prev_heh, HalfedgeHandle _next_heh);
1517
1530 void split(FaceHandle _fh, VertexHandle _vh);
1531
1545 void split_copy(FaceHandle _fh, VertexHandle _vh);
1546
1560 void triangulate(FaceHandle _fh);
1561
1564 void triangulate();
1565
1576 void split_edge(EdgeHandle _eh, VertexHandle _vh);
1577
1589 void split_edge_copy(EdgeHandle _eh, VertexHandle _vh);
1590
1591
1597 const Vertex& deref(VertexHandle _h) const { return vertex(_h); }
1599 Vertex& deref(VertexHandle _h) { return vertex(_h); }
1600 const Halfedge& deref(HalfedgeHandle _h) const { return halfedge(_h); }
1601 Halfedge& deref(HalfedgeHandle _h) { return halfedge(_h); }
1602 const Edge& deref(EdgeHandle _h) const { return edge(_h); }
1603 Edge& deref(EdgeHandle _h) { return edge(_h); }
1604 const Face& deref(FaceHandle _h) const { return face(_h); }
1605 Face& deref(FaceHandle _h) { return face(_h); }
1607
1608 protected:
1610 void collapse_edge(HalfedgeHandle _hh);
1612 void collapse_loop(HalfedgeHandle _hh);
1613
1614
1615
1616 private: // Working storage for add_face()
1617 struct AddFaceEdgeInfo
1618 {
1619 HalfedgeHandle halfedge_handle;
1620 bool is_new;
1621 bool needs_adjust;
1622 };
1623 std::vector<AddFaceEdgeInfo> edgeData_; //
1624 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_; // cache for set_next_halfedge and vertex' set_halfedge
1625
1626 };
1627
1628 }//namespace OpenMesh
1629
1630 #endif//OPENMESH_POLYCONNECTIVITY_HH
OpenMesh::PolyConnectivity::ff_ccwiter
FaceFaceCCWIter ff_ccwiter(FaceHandle _fh)
face - face circulator ccw
Definition: PolyConnectivity.hh:696
OpenMesh::PolyConnectivity::cvoh_iter
ConstVertexOHalfedgeIter cvoh_iter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:635
OpenMesh::PolyConnectivity::chl_end
ConstHalfedgeLoopIter chl_end(HalfedgeHandle _heh) const
const face - face circulator
Definition: PolyConnectivity.hh:1100
OpenMesh::PolyConnectivity::cve_ccwiter
ConstVertexEdgeCCWIter cve_ccwiter(VertexHandle _vh) const
const vertex - edge circulator ccw
Definition: PolyConnectivity.hh:650
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCWIter
VertexIHalfedgeCWIter ConstVertexIHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:205
OpenMesh::PolyConnectivity::ff_cwend
FaceFaceCWIter ff_cwend(FaceHandle _fh)
face - face circulator cw
Definition: PolyConnectivity.hh:1048
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeIter
VertexIHalfedgeIter ConstVertexIHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:204
OpenMesh::PolyConnectivity::all_halfedges
ConstHalfedgeRange all_halfedges() const
Definition: PolyConnectivity.hh:1194
OpenMesh::PolyConnectivity::ConstVertexFaceCWIter
VertexFaceCWIter ConstVertexFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:208
OpenMesh::ArrayKernel::assign_connectivity
void assign_connectivity(const ArrayKernel &_other)
ArrayKernel uses the default copy constructor and assignment operator, which means that the connectiv...
Definition: ArrayKernel.cc:71
OpenMesh::PolyConnectivity::VEIter
VertexEdgeIter VEIter
Alias typedef.
Definition: PolyConnectivity.hh:335
OpenMesh::PolyConnectivity::cvoh_begin
ConstVertexOHalfedgeIter cvoh_begin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:804
OpenMesh::PolyConnectivity::CVIHCCWIter
ConstVertexIHalfedgeCCWIter CVIHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:360
OpenMesh::PolyConnectivity::edges
ConstEdgeRangeSkipping edges() const
Definition: PolyConnectivity.hh:1200
OpenMesh::PolyConnectivity::fe_range
ConstFaceEdgeRange fe_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1358
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:280
OpenMesh::PolyConnectivity::cvf_ccwiter
ConstVertexFaceCCWIter cvf_ccwiter(VertexHandle _vh) const
const vertex - face circulator ccw
Definition: PolyConnectivity.hh:659
OpenMesh::PolyConnectivity::FECWWIter
FaceEdgeCCWIter FECWWIter
Alias typedef.
Definition: PolyConnectivity.hh:349
OpenMesh::PolyConnectivity::CirculatorRange
Generic class for iterator ranges.
Definition: PolyConnectivity.hh:1227
OpenMesh::PolyConnectivity::VIHICCWter
VertexIHalfedgeCCWIter VIHICCWter
Alias typedef.
Definition: PolyConnectivity.hh:334
OpenMesh::PolyConnectivity::vv_begin
VertexVertexIter vv_begin(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:739
OpenMesh::PolyConnectivity::fh_begin
FaceHalfedgeIter fh_begin(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:841
OpenMesh::PolyConnectivity::voh_begin
VertexOHalfedgeIter voh_begin(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:757
OpenMesh::PolyConnectivity::CFEIter
ConstFaceEdgeIter CFEIter
Alias typedef.
Definition: PolyConnectivity.hh:373
OpenMesh::PolyConnectivity::ConstFaceFaceCCWIter
FaceFaceCCWIter ConstFaceFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:293
OpenMesh::PolyConnectivity::ConstVertexRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_sbegin, &PolyConnectivity::vertices_end > ConstVertexRangeSkipping
Definition: PolyConnectivity.hh:1140
OpenMesh::PolyConnectivity::deref
Edge & deref(EdgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1603
OpenMesh::PolyConnectivity::cvf_ccwbegin
ConstVertexFaceCCWIter cvf_ccwbegin(VertexHandle _vh) const
const vertex - face circulator ccw
Definition: PolyConnectivity.hh:828
OpenMesh::PolyConnectivity::cvoh_ccwiter
ConstVertexOHalfedgeCCWIter cvoh_ccwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:641
OpenMesh::PolyConnectivity::cfv_ccwend
ConstFaceVertexCCWIter cfv_ccwend(FaceHandle _fh) const
const face - vertex circulator ccw
Definition: PolyConnectivity.hh:1070
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:111
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:175
OpenMesh::PolyConnectivity::ConstHalfedgeRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_begin, &PolyConnectivity::halfedges_end > ConstHalfedgeRange
Definition: PolyConnectivity.hh:1145
OpenMesh::PolyConnectivity::InvalidFaceHandle
static const FaceHandle InvalidFaceHandle
Invalid handle.
Definition: PolyConnectivity.hh:68
OpenMesh::PolyConnectivity::vertices_begin
VertexIter vertices_begin()
Begin iterator for vertices.
Definition: PolyConnectivity.cc:627
OpenMesh::PolyConnectivity::VIter
VertexIter VIter
Alias typedef.
Definition: PolyConnectivity.hh:316
OpenMesh::HalfedgeHandle
Handle for a halfedge entity.
Definition: Handles.hh:127
OpenMesh::PolyConnectivity::ff_ccwend
FaceFaceCCWIter ff_ccwend(FaceHandle _fh)
face - face circulator ccw
Definition: PolyConnectivity.hh:1051
OpenMesh::PolyConnectivity::hl_end
HalfedgeLoopIter hl_end(HalfedgeHandle _heh)
face - face circulator
Definition: PolyConnectivity.hh:1054
OpenMesh::PolyConnectivity::FIter
FaceIter FIter
Alias typedef.
Definition: PolyConnectivity.hh:319
OpenMesh::PolyConnectivity::FHandle
FaceHandle FHandle
Alias typedef.
Definition: PolyConnectivity.hh:314
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeCCWIter
VertexIHalfedgeCCWIter ConstVertexIHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:206
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:232
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:125
OpenMesh::PolyConnectivity::fv_ccwbegin
FaceVertexCCWIter fv_ccwbegin(FaceHandle _fh)
face - vertex circulator ccw
Definition: PolyConnectivity.hh:838
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCCWIter
FaceHalfedgeCCWIter ConstFaceHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:287
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCWIter
HalfedgeLoopCWIter ConstHalfedgeLoopCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:299
OpenMesh::PolyConnectivity::cvoh_cwiter
ConstVertexOHalfedgeCWIter cvoh_cwiter(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:638
OpenMesh::PolyConnectivity::cvoh_ccwend
ConstVertexOHalfedgeCCWIter cvoh_ccwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:996
OpenMesh::PolyConnectivity::VFCCWIter
VertexFaceCCWIter VFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:340
OpenMesh::PolyConnectivity::chl_cwbegin
ConstHalfedgeLoopCWIter chl_cwbegin(HalfedgeHandle _heh) const
const halfedge circulator cw
Definition: PolyConnectivity.hh:917
OpenMesh::PolyConnectivity::CVVIter
ConstVertexVertexIter CVVIter
Alias typedef.
Definition: PolyConnectivity.hh:352
OpenMesh::PolyConnectivity::cfe_ccwiter
ConstFaceEdgeCCWIter cfe_ccwiter(FaceHandle _fh) const
const face - edge circulator ccw
Definition: PolyConnectivity.hh:724
OpenMesh::PolyConnectivity::vertices
ConstVertexRangeSkipping vertices() const
Definition: PolyConnectivity.hh:1176
OpenMesh::PolyConnectivity::cff_ccwbegin
ConstFaceFaceCCWIter cff_ccwbegin(FaceHandle _fh) const
const face - face circulator ccw
Definition: PolyConnectivity.hh:911
OpenMesh::PolyConnectivity::vf_range
ConstVertexFaceRange vf_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1334
OpenMesh::PolyConnectivity::fh_cwbegin
FaceHalfedgeCWIter fh_cwbegin(FaceHandle _fh)
face - halfedge circulator cw
Definition: PolyConnectivity.hh:844
OpenMesh::PolyConnectivity::cvih_ccwend
ConstVertexIHalfedgeCCWIter cvih_ccwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:987
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCCWIter
VertexOHalfedgeCCWIter ConstVertexOHalfedgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:203
OpenMesh::PolyConnectivity::ve_end
VertexEdgeIter ve_end(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:953
OpenMesh::PolyConnectivity::cff_end
ConstFaceFaceIter cff_end(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:1091
OpenMesh::PolyConnectivity::cve_cwbegin
ConstVertexEdgeCWIter cve_cwbegin(VertexHandle _vh) const
const vertex - edge circulator cw
Definition: PolyConnectivity.hh:816
OpenMesh::PolyConnectivity::VIHIter
VertexIHalfedgeIter VIHIter
Alias typedef.
Definition: PolyConnectivity.hh:332
OpenMesh::PolyConnectivity::HalfedgeLoopIter
Iterators::GenericCirculatorT_DEPRECATED< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > HalfedgeLoopIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:188
OpenMesh::PolyConnectivity::ConstEdgeIter
EdgeIter ConstEdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:88
OpenMesh::PolyConnectivity::ConstFaceHalfedgeCWIter
FaceHalfedgeCWIter ConstFaceHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:286
OpenMesh::PolyConnectivity::ConstEdgeRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_sbegin, &PolyConnectivity::edges_end > ConstEdgeRangeSkipping
Definition: PolyConnectivity.hh:1160
OpenMesh::PolyConnectivity::hl_ccwend
HalfedgeLoopCCWIter hl_ccwend(HalfedgeHandle _heh)
face - face circulator ccw
Definition: PolyConnectivity.hh:1060
OpenMesh::PolyConnectivity::ConstVertexVertexCCWIter
VertexVertexCCWIter ConstVertexVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:200
OpenMesh::PolyConnectivity::FHIter
FaceHalfedgeIter FHIter
Alias typedef.
Definition: PolyConnectivity.hh:344
OpenMesh::PolyConnectivity::InvalidEdgeHandle
static const EdgeHandle InvalidEdgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:66
OpenMesh::PolyConnectivity::fh_cwiter
FaceHalfedgeCWIter fh_cwiter(FaceHandle _fh)
face - halfedge circulator cw
Definition: PolyConnectivity.hh:675
OpenMesh::PolyConnectivity::ve_range
ConstVertexEdgeRange ve_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1326
OpenMesh::PolyConnectivity::voh_cwend
VertexOHalfedgeCWIter voh_cwend(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:947
OpenMesh::PolyConnectivity::chl_begin
ConstHalfedgeLoopIter chl_begin(HalfedgeHandle _heh) const
const halfedge circulator
Definition: PolyConnectivity.hh:914
OpenMesh::PolyConnectivity::chl_ccwend
ConstHalfedgeLoopCCWIter chl_ccwend(HalfedgeHandle _heh) const
const face - face circulator ccw
Definition: PolyConnectivity.hh:1106
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:173
OpenMesh::PolyConnectivity::halfedges
ConstHalfedgeRangeSkipping halfedges() const
Definition: PolyConnectivity.hh:1188
OpenMesh::PolyConnectivity::ConstHalfedgeLoopIter
HalfedgeLoopIter ConstHalfedgeLoopIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:298
OpenMesh::PolyConnectivity::ConstFaceHalfedgeRange
CirculatorRange< PolyConnectivity, ConstFaceHalfedgeIter, FaceHandle, &PolyConnectivity::cfh_begin, &PolyConnectivity::cfh_end > ConstFaceHalfedgeRange
Definition: PolyConnectivity.hh:1284
OpenMesh::PolyConnectivity::ConstVertexRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstVertexIter, &PolyConnectivity::vertices_begin, &PolyConnectivity::vertices_end > ConstVertexRange
Definition: PolyConnectivity.hh:1135
OpenMesh::PolyConnectivity::ve_ccwend
VertexEdgeCCWIter ve_ccwend(VertexHandle _vh)
vertex - edge circulator ccw
Definition: PolyConnectivity.hh:959
OpenMesh::PolyConnectivity::ConstHalfedgeRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstHalfedgeIter, &PolyConnectivity::halfedges_sbegin, &PolyConnectivity::halfedges_end > ConstHalfedgeRangeSkipping
Definition: PolyConnectivity.hh:1150
OpenMesh::PolyConnectivity::edges_begin
EdgeIter edges_begin()
Begin iterator for edges.
Definition: PolyConnectivity.cc:675
OpenMesh::PolyConnectivity::hl_cwend
HalfedgeLoopCWIter hl_cwend(HalfedgeHandle _heh)
face - face circulator cw
Definition: PolyConnectivity.hh:1057
OpenMesh::PolyConnectivity::ConstEdgeRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstEdgeIter, &PolyConnectivity::edges_begin, &PolyConnectivity::edges_end > ConstEdgeRange
Definition: PolyConnectivity.hh:1155
OpenMesh::PolyConnectivity::fh_end
FaceHalfedgeIter fh_end(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:1027
OpenMesh::VertexHandle
Handle for a vertex entity.
Definition: Handles.hh:120
OpenMesh::PolyConnectivity::FHCWWIter
FaceHalfedgeCCWIter FHCWWIter
Alias typedef.
Definition: PolyConnectivity.hh:346
OpenMesh::PolyConnectivity::cvih_iter
ConstVertexIHalfedgeIter cvih_iter(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:626
OpenMesh::PolyConnectivity::voh_end
VertexOHalfedgeIter voh_end(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:944
OpenMesh::PolyConnectivity::ConstFaceVertexIter
FaceVertexIter ConstFaceVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:282
OpenMesh::PolyConnectivity::CFVIter
ConstFaceVertexIter CFVIter
Alias typedef.
Definition: PolyConnectivity.hh:367
OpenMesh::PolyConnectivity::ve_begin
VertexEdgeIter ve_begin(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:766
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(HalfedgeHandle _heh) const
Check if the halfedge is at the boundary.
Definition: PolyConnectivity.hh:1384
OpenMesh::PolyConnectivity::CVOHCWIter
ConstVertexOHalfedgeCWIter CVOHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:356
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:225
OpenMesh::PolyConnectivity::cfv_ccwbegin
ConstFaceVertexCCWIter cfv_ccwbegin(FaceHandle _fh) const
const face - vertex circulator ccw
Definition: PolyConnectivity.hh:884
OpenMesh::PolyConnectivity::vv_ccwiter
VertexVertexCCWIter vv_ccwiter(VertexHandle _vh)
vertex - vertex circulator ccw
Definition: PolyConnectivity.hh:577
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:150
OpenMesh::PolyConnectivity::cfe_iter
ConstFaceEdgeIter cfe_iter(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:718
OpenMesh::PolyConnectivity::cfe_cwbegin
ConstFaceEdgeCWIter cfe_cwbegin(FaceHandle _fh) const
const face - edge circulator cw
Definition: PolyConnectivity.hh:899
OpenMesh::PolyConnectivity::ConstFaceVertexRange
CirculatorRange< PolyConnectivity, ConstFaceVertexIter, FaceHandle, &PolyConnectivity::cfv_begin, &PolyConnectivity::cfv_end > ConstFaceVertexRange
Definition: PolyConnectivity.hh:1278
OpenMesh::PolyConnectivity::cvf_cwbegin
ConstVertexFaceCWIter cvf_cwbegin(VertexHandle _vh) const
const vertex - face circulator cw
Definition: PolyConnectivity.hh:825
OpenMesh::PolyConnectivity::voh_ccwbegin
VertexOHalfedgeCCWIter voh_ccwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:763
OpenMesh::PolyConnectivity::vertices_end
VertexIter vertices_end()
End iterator for vertices.
Definition: PolyConnectivity.cc:639
OpenMesh::PolyConnectivity::cfe_begin
ConstFaceEdgeIter cfe_begin(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:896
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:264
OpenMesh::PolyConnectivity::fv_cwend
FaceVertexCWIter fv_cwend(FaceHandle _fh)
face - vertex circulator cw
Definition: PolyConnectivity.hh:1021
OpenMesh::PolyConnectivity::ve_cwiter
VertexEdgeCWIter ve_cwiter(VertexHandle _vh)
vertex - edge circulator cw
Definition: PolyConnectivity.hh:601
OpenMesh::PolyConnectivity::hl_begin
HalfedgeLoopIter hl_begin(HalfedgeHandle _heh)
halfedge circulator
Definition: PolyConnectivity.hh:868
OpenMesh::PolyConnectivity::cvf_end
ConstVertexFaceIter cvf_end(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:1008
OpenMesh::PolyConnectivity::cvv_cwiter
ConstVertexVertexCWIter cvv_cwiter(VertexHandle _vh) const
const vertex circulator cw
Definition: PolyConnectivity.hh:620
OpenMesh::PolyConnectivity::cfe_ccwend
ConstFaceEdgeCCWIter cfe_ccwend(FaceHandle _fh) const
const face - edge circulator ccw
Definition: PolyConnectivity.hh:1088
OpenMesh::PolyConnectivity::vih_end
VertexIHalfedgeIter vih_end(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:935
OpenMesh::PolyConnectivity::CFFCWIter
ConstFaceFaceCWIter CFFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:377
OpenMesh::EdgeHandle
Handle for a edge entity.
Definition: Handles.hh:134
OpenMesh::PolyConnectivity::ConstFaceFaceCWIter
FaceFaceCWIter ConstFaceFaceCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:292
OpenMesh::PolyConnectivity::cfh_end
ConstFaceHalfedgeIter cfh_end(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:1073
OpenMesh::PolyConnectivity::fh_cwend
FaceHalfedgeCWIter fh_cwend(FaceHandle _fh)
face - halfedge circulator cw
Definition: PolyConnectivity.hh:1030
OpenMesh::PolyConnectivity::faces_begin
FaceIter faces_begin()
Begin iterator for faces.
Definition: PolyConnectivity.cc:699
OpenMesh::PolyConnectivity::cfv_cwbegin
ConstFaceVertexCWIter cfv_cwbegin(FaceHandle _fh) const
const face - vertex circulator cw
Definition: PolyConnectivity.hh:881
OpenMesh::PolyConnectivity::vertices_sbegin
ConstVertexIter vertices_sbegin() const
Const begin iterator for vertices.
Definition: PolyConnectivity.hh:538
OpenMesh::PolyConnectivity::cvv_ccwiter
ConstVertexVertexCCWIter cvv_ccwiter(VertexHandle _vh) const
const vertex circulator ccw
Definition: PolyConnectivity.hh:623
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:257
OpenMesh::PolyConnectivity::vf_begin
VertexFaceIter vf_begin(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:775
OpenMesh::PolyConnectivity::CVFIter
ConstVertexFaceIter CVFIter
Alias typedef.
Definition: PolyConnectivity.hh:364
OpenMesh::PolyConnectivity::ConstHalfedgeLoopCCWIter
HalfedgeLoopCCWIter ConstHalfedgeLoopCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:300
OpenMesh::PolyConnectivity::voh_ccwend
VertexOHalfedgeCCWIter voh_ccwend(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:950
OpenMesh::PolyConnectivity::VFIter
VertexFaceIter VFIter
Alias typedef.
Definition: PolyConnectivity.hh:338
OpenMesh::PolyConnectivity::cve_ccwbegin
ConstVertexEdgeCCWIter cve_ccwbegin(VertexHandle _vh) const
const vertex - edge circulator ccw
Definition: PolyConnectivity.hh:819
OpenMesh::PolyConnectivity::cfe_cwiter
ConstFaceEdgeCWIter cfe_cwiter(FaceHandle _fh) const
const face - edge circulator cw
Definition: PolyConnectivity.hh:721
OpenMesh::PolyConnectivity::hl_cwbegin
HalfedgeLoopCWIter hl_cwbegin(HalfedgeHandle _heh)
halfedge circulator
Definition: PolyConnectivity.hh:871
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:190
OpenMesh::PolyConnectivity::faces_sbegin
ConstFaceIter faces_sbegin() const
Const begin iterator for faces.
Definition: PolyConnectivity.hh:559
OpenMesh::PolyConnectivity::ConstFaceEdgeCCWIter
FaceEdgeCCWIter ConstFaceEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:290
OpenMesh::PolyConnectivity::cvoh_cwbegin
ConstVertexOHalfedgeCWIter cvoh_cwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:807
OpenMesh::PolyConnectivity::fe_cwiter
FaceEdgeCWIter fe_cwiter(FaceHandle _fh)
face - edge circulator cw
Definition: PolyConnectivity.hh:684
OpenMesh::PolyConnectivity::ff_begin
FaceFaceIter ff_begin(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:859
OpenMesh::PolyConnectivity::ve_ccwiter
VertexEdgeCCWIter ve_ccwiter(VertexHandle _vh)
vertex - edge circulator ccw
Definition: PolyConnectivity.hh:604
OpenMesh::PolyConnectivity::ConstHalfedgeIter
HalfedgeIter ConstHalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:87
OpenMesh::PolyConnectivity::ConstFaceFaceRange
CirculatorRange< PolyConnectivity, ConstFaceFaceIter, FaceHandle, &PolyConnectivity::cff_begin, &PolyConnectivity::cff_end > ConstFaceFaceRange
Definition: PolyConnectivity.hh:1296
OpenMesh::PolyConnectivity::ConstVertexEdgeCWIter
VertexEdgeCWIter ConstVertexEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:211
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:166
OpenMesh::PolyConnectivity::cvih_ccwbegin
ConstVertexIHalfedgeCCWIter cvih_ccwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:801
OpenMesh::PolyConnectivity::CFHIter
ConstFaceHalfedgeIter CFHIter
Alias typedef.
Definition: PolyConnectivity.hh:370
OpenMesh::PolyConnectivity::ConstFaceEdgeIter
FaceEdgeIter ConstFaceEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:288
OpenMesh::PolyConnectivity::HalfedgeLoopCCWIter
Iterators::GenericCirculatorT< This, This::FaceHandle, This::HalfedgeHandle, &Iterators::GenericCirculatorBaseT< This >::toHalfedgeHandle > HalfedgeLoopCCWIter
Identical to FaceHalfedgeIter.
Definition: PolyConnectivity.hh:196
OpenMesh::PolyConnectivity::ff_range
ConstFaceFaceRange ff_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1366
OpenMesh::PolyConnectivity::cfh_cwend
ConstFaceHalfedgeCWIter cfh_cwend(FaceHandle _fh) const
const face - halfedge circulator cw
Definition: PolyConnectivity.hh:1076
OpenMesh::PolyConnectivity::EdgeIter
Iterators::GenericIteratorT< This, This::EdgeHandle, ArrayKernel, &ArrayKernel::has_edge_status, &ArrayKernel::n_edges > EdgeIter
Linear iterator.
Definition: PolyConnectivity.hh:83
OpenMesh::PolyConnectivity::fv_end
FaceVertexIter fv_end(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:1018
OpenMesh::PolyConnectivity::cve_cwiter
ConstVertexEdgeCWIter cve_cwiter(VertexHandle _vh) const
const vertex - edge circulator cw
Definition: PolyConnectivity.hh:647
OpenMesh::PolyConnectivity::cvih_begin
ConstVertexIHalfedgeIter cvih_begin(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:795
OpenMesh::PolyConnectivity::fe_cwend
FaceEdgeCWIter fe_cwend(FaceHandle _fh)
face - edge circulator cw
Definition: PolyConnectivity.hh:1039
OpenMesh::PolyConnectivity::cvih_cwbegin
ConstVertexIHalfedgeCWIter cvih_cwbegin(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:798
OpenMesh::PolyConnectivity::cfv_begin
ConstFaceVertexIter cfv_begin(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:878
OpenMesh::PolyConnectivity::cff_ccwiter
ConstFaceFaceCCWIter cff_ccwiter(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:733
OpenMesh::PolyConnectivity::chl_ccwbegin
ConstHalfedgeLoopCCWIter chl_ccwbegin(HalfedgeHandle _heh) const
const halfedge circulator ccw
Definition: PolyConnectivity.hh:920
OpenMesh::PolyConnectivity::cvoh_cwend
ConstVertexOHalfedgeCWIter cvoh_cwend(VertexHandle _vh) const
const vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:993
OpenMesh::PolyConnectivity::fv_ccwiter
FaceVertexCCWIter fv_ccwiter(FaceHandle _fh)
face - vertex circulator ccw
Definition: PolyConnectivity.hh:669
OpenMesh::PolyConnectivity::deref
const Face & deref(FaceHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1604
OpenMesh::PolyConnectivity::ff_cwiter
FaceFaceCWIter ff_cwiter(FaceHandle _fh)
face - face circulator cw
Definition: PolyConnectivity.hh:693
OpenMesh::PolyConnectivity::fv_iter
FaceVertexIter fv_iter(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:663
OpenMesh::PolyConnectivity::deref
const Edge & deref(EdgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1602
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:157
OpenMesh::PolyConnectivity::CFVCCWIter
ConstFaceVertexCCWIter CFVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:369
OpenMesh::PolyConnectivity::ve_cwend
VertexEdgeCWIter ve_cwend(VertexHandle _vh)
vertex - edge circulator cw
Definition: PolyConnectivity.hh:956
OpenMesh::PolyConnectivity::cfh_ccwend
ConstFaceHalfedgeCCWIter cfh_ccwend(FaceHandle _fh) const
const face - halfedge circulator ccw
Definition: PolyConnectivity.hh:1079
OpenMesh::PolyConnectivity::cfh_begin
ConstFaceHalfedgeIter cfh_begin(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:887
OpenMesh::PolyConnectivity::ve_ccwbegin
VertexEdgeCCWIter ve_ccwbegin(VertexHandle _vh)
vertex - edge circulator ccw
Definition: PolyConnectivity.hh:772
OpenMesh::PolyConnectivity::voh_iter
VertexOHalfedgeIter voh_iter(VertexHandle _vh)
vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:589
OpenMesh::PolyConnectivity::opposite_face_handle
FaceHandle opposite_face_handle(HalfedgeHandle _heh) const
returns the face handle of the opposite halfedge
Definition: PolyConnectivity.hh:1446
OpenMesh::PolyConnectivity::vf_ccwiter
VertexFaceCCWIter vf_ccwiter(VertexHandle _vh)
vertex - face circulator ccw
Definition: PolyConnectivity.hh:613
OpenMesh::PolyConnectivity::VOHCCWIter
VertexOHalfedgeCCWIter VOHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:331
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:248
OpenMesh::PolyConnectivity::cvf_iter
ConstVertexFaceIter cvf_iter(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:653
OpenMesh::PolyConnectivity::FVCWIter
FaceVertexCWIter FVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:342
OpenMesh::PolyConnectivity::cfe_cwend
ConstFaceEdgeCWIter cfe_cwend(FaceHandle _fh) const
const face - edge circulator cw
Definition: PolyConnectivity.hh:1085
OpenMesh::PolyConnectivity::vv_range
ConstVertexVertexRange vv_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1302
OpenMesh::PolyConnectivity::cfh_iter
ConstFaceHalfedgeIter cfh_iter(FaceHandle _fh) const
const face - halfedge circulator
Definition: PolyConnectivity.hh:709
OpenMesh::PolyConnectivity::halfedges_sbegin
ConstHalfedgeIter halfedges_sbegin() const
Const begin iterator for halfedges.
Definition: PolyConnectivity.hh:545
OpenMesh::PolyConnectivity::CVFCWIter
ConstVertexFaceCWIter CVFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:365
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeCWIter
VertexOHalfedgeCWIter ConstVertexOHalfedgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:202
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:271
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:241
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeIter
VertexOHalfedgeIter ConstVertexOHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:201
OpenMesh::PolyConnectivity::vih_iter
VertexIHalfedgeIter vih_iter(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:580
OpenMesh::PolyConnectivity::cvih_ccwiter
ConstVertexIHalfedgeCCWIter cvih_ccwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:632
OpenMesh::PolyConnectivity::fe_cwbegin
FaceEdgeCWIter fe_cwbegin(FaceHandle _fh)
face - edge circulator cw
Definition: PolyConnectivity.hh:853
OpenMesh::PolyConnectivity::ff_iter
FaceFaceIter ff_iter(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:690
OpenMesh::PolyConnectivity::CFIter
ConstFaceIter CFIter
Alias typedef.
Definition: PolyConnectivity.hh:324
OpenMesh::PolyConnectivity::VVCWIter
VertexVertexCWIter VVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:327
OpenMesh::PolyConnectivity::ConstVertexFaceIter
VertexFaceIter ConstVertexFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:207
OpenMesh::PolyConnectivity::vertices_sbegin
VertexIter vertices_sbegin()
Begin iterator for vertices.
Definition: PolyConnectivity.hh:535
OpenMesh::Iterators::GenericIteratorT
Definition: IteratorsT.hh:84
OpenMesh::PolyConnectivity::ConstVertexEdgeCCWIter
VertexEdgeCCWIter ConstVertexEdgeCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:212
OpenMesh::PolyConnectivity::vf_iter
VertexFaceIter vf_iter(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:607
OpenMesh::PolyConnectivity::cff_cwend
ConstFaceFaceCWIter cff_cwend(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:1094
OpenMesh::PolyConnectivity::ff_end
FaceFaceIter ff_end(FaceHandle _fh)
face - face circulator
Definition: PolyConnectivity.hh:1045
OpenMesh::PolyConnectivity::ConstFaceEdgeRange
CirculatorRange< PolyConnectivity, ConstFaceEdgeIter, FaceHandle, &PolyConnectivity::cfe_begin, &PolyConnectivity::cfe_end > ConstFaceEdgeRange
Definition: PolyConnectivity.hh:1290
OpenMesh::PolyConnectivity::fe_end
FaceEdgeIter fe_end(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:1036
OpenMesh::PolyConnectivity::cfv_ccwiter
ConstFaceVertexCCWIter cfv_ccwiter(FaceHandle _fh) const
const face - vertex circulator ccw
Definition: PolyConnectivity.hh:706
OpenMesh::PolyConnectivity::vf_ccwend
VertexFaceCCWIter vf_ccwend(VertexHandle _vh)
vertex - face circulator ccw
Definition: PolyConnectivity.hh:968
OpenMesh::PolyConnectivity::ConstVertexIHalfedgeRange
CirculatorRange< PolyConnectivity, ConstVertexIHalfedgeIter, VertexHandle, &PolyConnectivity::cvih_begin, &PolyConnectivity::cvih_end > ConstVertexIHalfedgeRange
Definition: PolyConnectivity.hh:1255
OpenMesh::PolyConnectivity::ConstVertexEdgeIter
VertexEdgeIter ConstVertexEdgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:210
OpenMesh::PolyConnectivity::voh_cwiter
VertexOHalfedgeCWIter voh_cwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:592
OpenMesh::PolyConnectivity::vf_cwend
VertexFaceCWIter vf_cwend(VertexHandle _vh)
vertex - face circulator cw
Definition: PolyConnectivity.hh:965
OpenMesh::PolyConnectivity::cfh_cwbegin
ConstFaceHalfedgeCWIter cfh_cwbegin(FaceHandle _fh) const
const face - halfedge circulator cw
Definition: PolyConnectivity.hh:890
OpenMesh::PolyConnectivity::ConstFaceHalfedgeIter
FaceHalfedgeIter ConstFaceHalfedgeIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:285
OpenMesh::PolyConnectivity::vv_end
VertexVertexIter vv_end(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:926
OpenMesh::PolyConnectivity::fv_ccwend
FaceVertexCCWIter fv_ccwend(FaceHandle _fh)
face - vertex circulator ccw
Definition: PolyConnectivity.hh:1024
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:159
OpenMesh::PolyConnectivity::fe_ccwend
FaceEdgeCCWIter fe_ccwend(FaceHandle _fh)
face - edge circulator ccw
Definition: PolyConnectivity.hh:1042
OpenMesh::PolyConnectivity::fh_iter
FaceHalfedgeIter fh_iter(FaceHandle _fh)
face - halfedge circulator
Definition: PolyConnectivity.hh:672
OpenMesh::PolyConnectivity::CVIHCWIter
ConstVertexIHalfedgeCWIter CVIHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:359
OpenMesh::PolyConnectivity::CFHCWIter
ConstFaceHalfedgeCWIter CFHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:371
OpenMesh::PolyConnectivity::VIHICWter
VertexIHalfedgeCWIter VIHICWter
Alias typedef.
Definition: PolyConnectivity.hh:333
OpenMesh::PolyConnectivity::CVOHIter
ConstVertexOHalfedgeIter CVOHIter
Alias typedef.
Definition: PolyConnectivity.hh:355
OpenMesh::PolyConnectivity::chl_cwend
ConstHalfedgeLoopCWIter chl_cwend(HalfedgeHandle _heh) const
const face - face circulator cw
Definition: PolyConnectivity.hh:1103
OpenMesh::PolyConnectivity::cvv_end
ConstVertexVertexIter cvv_end(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:972
OpenMesh::PolyConnectivity::cve_cwend
ConstVertexEdgeCWIter cve_cwend(VertexHandle _vh) const
const vertex - edge circulator cw
Definition: PolyConnectivity.hh:1002
OpenMesh::PolyConnectivity::cff_begin
ConstFaceFaceIter cff_begin(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:905
OpenMesh::PolyConnectivity::voh_range
ConstVertexOHalfedgeRange voh_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1318
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:143
OpenMesh::PolyConnectivity::ConstVertexFaceRange
CirculatorRange< PolyConnectivity, ConstVertexFaceIter, VertexHandle, &PolyConnectivity::cvf_begin, &PolyConnectivity::cvf_end > ConstVertexFaceRange
Definition: PolyConnectivity.hh:1272
OpenMesh::PolyConnectivity::cvf_begin
ConstVertexFaceIter cvf_begin(VertexHandle _vh) const
const vertex - face circulator
Definition: PolyConnectivity.hh:822
OpenMesh::PolyConnectivity::vv_ccwend
VertexVertexCCWIter vv_ccwend(VertexHandle _vh)
vertex - vertex circulator ccw
Definition: PolyConnectivity.hh:932
OpenMesh::PolyConnectivity::HHandle
HalfedgeHandle HHandle
Alias typedef.
Definition: PolyConnectivity.hh:312
OpenMesh::PolyConnectivity::all_faces
ConstFaceRange all_faces() const
Definition: PolyConnectivity.hh:1218
OpenMesh::PolyConnectivity::ConstVertexVertexCWIter
VertexVertexCWIter ConstVertexVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:199
OpenMesh::PolyConnectivity::ConstFaceVertexCWIter
FaceVertexCWIter ConstFaceVertexCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:283
OpenMesh::PolyConnectivity::CVOHCCWIter
ConstVertexOHalfedgeCCWIter CVOHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:357
OpenMesh::PolyConnectivity::ve_iter
VertexEdgeIter ve_iter(VertexHandle _vh)
vertex - edge circulator
Definition: PolyConnectivity.hh:598
OpenMesh::PolyConnectivity::cfv_iter
ConstFaceVertexIter cfv_iter(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:700
OpenMesh::PolyConnectivity::fh_ccwend
FaceHalfedgeCCWIter fh_ccwend(FaceHandle _fh)
face - halfedge circulator ccw
Definition: PolyConnectivity.hh:1033
OpenMesh::PolyConnectivity::CVVCCWIter
ConstVertexVertexCCWIter CVVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:354
OpenMesh::PolyConnectivity::FVIter
FaceVertexIter FVIter
Alias typedef.
Definition: PolyConnectivity.hh:341
OpenMesh::PolyConnectivity::ConstVertexOHalfedgeRange
CirculatorRange< PolyConnectivity, ConstVertexOHalfedgeIter, VertexHandle, &PolyConnectivity::cvoh_begin, &PolyConnectivity::cvoh_end > ConstVertexOHalfedgeRange
Definition: PolyConnectivity.hh:1260
OpenMesh::PolyConnectivity::halfedges_begin
HalfedgeIter halfedges_begin()
Begin iterator for halfedges.
Definition: PolyConnectivity.cc:651
OpenMesh::PolyConnectivity::CVECCWIter
ConstVertexEdgeCCWIter CVECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:363
OpenMesh::PolyConnectivity::add_vertex
VertexHandle add_vertex()
Add a new vertex.
Definition: PolyConnectivity.hh:399
OpenMesh::PolyConnectivity::edges_sbegin
EdgeIter edges_sbegin()
Begin iterator for edges.
Definition: PolyConnectivity.hh:549
OpenMesh::PolyConnectivity::cff_iter
ConstFaceFaceIter cff_iter(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:727
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:134
OpenMesh::PolyConnectivity::fv_range
ConstFaceVertexRange fv_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1342
OpenMesh::PolyConnectivity::halfedges_end
HalfedgeIter halfedges_end()
End iterator for halfedges.
Definition: PolyConnectivity.cc:663
OpenMesh::PolyConnectivity::cfv_cwend
ConstFaceVertexCWIter cfv_cwend(FaceHandle _fh) const
const face - vertex circulator cw
Definition: PolyConnectivity.hh:1067
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:273
OpenMesh::PolyConnectivity::FEIter
FaceEdgeIter FEIter
Alias typedef.
Definition: PolyConnectivity.hh:347
OpenMesh::PolyConnectivity::halfedges_sbegin
HalfedgeIter halfedges_sbegin()
Begin iterator for halfedges.
Definition: PolyConnectivity.hh:542
OpenMesh::PolyConnectivity::cfv_end
ConstFaceVertexIter cfv_end(FaceHandle _fh) const
const face - vertex circulator
Definition: PolyConnectivity.hh:1064
OpenMesh
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
OpenMesh::PolyConnectivity::vih_ccwend
VertexIHalfedgeCCWIter vih_ccwend(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:941
OpenMesh::PolyConnectivity::CFECWIter
ConstFaceEdgeCWIter CFECWIter
Alias typedef.
Definition: PolyConnectivity.hh:374
OpenMesh::PolyConnectivity::vih_cwiter
VertexIHalfedgeCWIter vih_cwiter(VertexHandle _vh)
vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:583
OpenMesh::PolyConnectivity::CFHCCWIter
ConstFaceHalfedgeCCWIter CFHCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:372
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(VertexHandle _vh) const
Is vertex _vh a boundary vertex ?
Definition: PolyConnectivity.hh:1412
OpenMesh::PolyConnectivity::vih_begin
VertexIHalfedgeIter vih_begin(VertexHandle _vh)
vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:748
OpenMesh::PolyConnectivity::fv_cwbegin
FaceVertexCWIter fv_cwbegin(FaceHandle _fh)
face - vertex circulator cw
Definition: PolyConnectivity.hh:835
OpenMesh::PolyConnectivity::fh_ccwiter
FaceHalfedgeCCWIter fh_ccwiter(FaceHandle _fh)
face - halfedge circulator ccw
Definition: PolyConnectivity.hh:678
OpenMesh::PolyConnectivity::VVIter
VertexVertexIter VVIter
Alias typedef.
Definition: PolyConnectivity.hh:326
OpenMesh::PolyConnectivity::VFCWIter
VertexFaceCWIter VFCWIter
Alias typedef.
Definition: PolyConnectivity.hh:339
OpenMesh::PolyConnectivity::ff_cwbegin
FaceFaceCWIter ff_cwbegin(FaceHandle _fh)
face - face circulator cw
Definition: PolyConnectivity.hh:862
OpenMesh::PolyConnectivity::vf_end
VertexFaceIter vf_end(VertexHandle _vh)
vertex - face circulator
Definition: PolyConnectivity.hh:962
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:239
OpenMesh::PolyConnectivity::FHCWIter
FaceHalfedgeCWIter FHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:345
OpenMesh::PolyConnectivity::cvf_ccwend
ConstVertexFaceCCWIter cvf_ccwend(VertexHandle _vh) const
const vertex - face circulator ccw
Definition: PolyConnectivity.hh:1014
OpenMesh::PolyConnectivity::FVCCWIter
FaceVertexCCWIter FVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:343
OpenMesh::PolyConnectivity::vih_cwbegin
VertexIHalfedgeCWIter vih_cwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:751
OpenMesh::PolyConnectivity::cfe_end
ConstFaceEdgeIter cfe_end(FaceHandle _fh) const
const face - edge circulator
Definition: PolyConnectivity.hh:1082
OpenMesh::PolyConnectivity::CHIter
ConstHalfedgeIter CHIter
Alias typedef.
Definition: PolyConnectivity.hh:322
OpenMesh::PolyConnectivity::cvih_cwiter
ConstVertexIHalfedgeCWIter cvih_cwiter(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:629
OpenMesh::PolyConnectivity::cff_ccwend
ConstFaceFaceCCWIter cff_ccwend(FaceHandle _fh) const
const face - face circulator
Definition: PolyConnectivity.hh:1097
OpenMesh::PolyConnectivity::FECWIter
FaceEdgeCWIter FECWIter
Alias typedef.
Definition: PolyConnectivity.hh:348
OpenMesh::PolyConnectivity::fe_begin
FaceEdgeIter fe_begin(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:850
OpenMesh::PolyConnectivity::EIter
EdgeIter EIter
Alias typedef.
Definition: PolyConnectivity.hh:318
OpenMesh::PolyConnectivity::HalfedgeIter
Iterators::GenericIteratorT< This, This::HalfedgeHandle, ArrayKernel, &ArrayKernel::has_halfedge_status, &ArrayKernel::n_halfedges > HalfedgeIter
Linear iterator.
Definition: PolyConnectivity.hh:82
OpenMesh::PolyConnectivity::FaceIter
Iterators::GenericIteratorT< This, This::FaceHandle, ArrayKernel, &ArrayKernel::has_face_status, &ArrayKernel::n_faces > FaceIter
Linear iterator.
Definition: PolyConnectivity.hh:84
OpenMesh::PolyConnectivity::cvoh_ccwbegin
ConstVertexOHalfedgeCCWIter cvoh_ccwbegin(VertexHandle _vh) const
const vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:810
OpenMesh::PolyConnectivity::ConstFaceIter
FaceIter ConstFaceIter
Linear iterator.
Definition: PolyConnectivity.hh:89
OpenMesh::FaceHandle
Handle for a face entity.
Definition: Handles.hh:141
OpenMesh::PolyConnectivity::all_vertices
ConstVertexRange all_vertices() const
Definition: PolyConnectivity.hh:1182
OpenMesh::PolyConnectivity::CEIter
ConstEdgeIter CEIter
Alias typedef.
Definition: PolyConnectivity.hh:323
OpenMesh::PolyConnectivity::cff_cwiter
ConstFaceFaceCWIter cff_cwiter(FaceHandle _fh) const
const face - face circulator cw
Definition: PolyConnectivity.hh:730
OpenMesh::PolyConnectivity::CVIHIter
ConstVertexIHalfedgeIter CVIHIter
Alias typedef.
Definition: PolyConnectivity.hh:358
OpenMesh::PolyConnectivity::cfe_ccwbegin
ConstFaceEdgeCCWIter cfe_ccwbegin(FaceHandle _fh) const
const face - edge circulator ccw
Definition: PolyConnectivity.hh:902
OpenMesh::PolyConnectivity::cvv_cwend
ConstVertexVertexCWIter cvv_cwend(VertexHandle _vh) const
const vertex circulator cw
Definition: PolyConnectivity.hh:975
OpenMesh::PolyConnectivity::cvv_ccwbegin
ConstVertexVertexCCWIter cvv_ccwbegin(VertexHandle _vh) const
const vertex circulator ccw
Definition: PolyConnectivity.hh:792
OpenMesh::PolyConnectivity::CFVCWIter
ConstFaceVertexCWIter CFVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:368
OpenMesh::PolyConnectivity::ConstFaceRange
EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_begin, &PolyConnectivity::faces_end > ConstFaceRange
Definition: PolyConnectivity.hh:1165
OpenMesh::PolyConnectivity::cff_cwbegin
ConstFaceFaceCWIter cff_cwbegin(FaceHandle _fh) const
const face - face circulator cw
Definition: PolyConnectivity.hh:908
OpenMesh::PolyConnectivity::cvoh_end
ConstVertexOHalfedgeIter cvoh_end(VertexHandle _vh) const
const vertex - outgoing halfedge circulator
Definition: PolyConnectivity.hh:990
OpenMesh::PolyConnectivity::ve_cwbegin
VertexEdgeCWIter ve_cwbegin(VertexHandle _vh)
vertex - edge circulator cw
Definition: PolyConnectivity.hh:769
OpenMesh::PolyConnectivity::fe_ccwiter
FaceEdgeCCWIter fe_ccwiter(FaceHandle _fh)
face - edge circulator ccw
Definition: PolyConnectivity.hh:687
OpenMesh::PolyConnectivity::cve_ccwend
ConstVertexEdgeCCWIter cve_ccwend(VertexHandle _vh) const
const vertex - edge circulator ccw
Definition: PolyConnectivity.hh:1005
OpenMesh::PolyConnectivity::voh_cwbegin
VertexOHalfedgeCWIter voh_cwbegin(VertexHandle _vh)
vertex - outgoing halfedge circulator cw
Definition: PolyConnectivity.hh:760
OpenMesh::PolyConnectivity::cvv_cwbegin
ConstVertexVertexCWIter cvv_cwbegin(VertexHandle _vh) const
const vertex circulator cw
Definition: PolyConnectivity.hh:789
OpenMesh::PolyConnectivity::cfv_cwiter
ConstFaceVertexCWIter cfv_cwiter(FaceHandle _fh) const
const face - vertex circulator cw
Definition: PolyConnectivity.hh:703
OpenMesh::PolyConnectivity::vf_ccwbegin
VertexFaceCCWIter vf_ccwbegin(VertexHandle _vh)
vertex - face circulator ccw
Definition: PolyConnectivity.hh:781
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:181
OpenMesh::PolyConnectivity::VOHIter
VertexOHalfedgeIter VOHIter
Alias typedef.
Definition: PolyConnectivity.hh:329
OpenMesh::PolyConnectivity::VVCCWIter
VertexVertexCCWIter VVCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:328
OpenMesh::PolyConnectivity::EntityRange
Generic class for vertex/halfedge/edge/face ranges.
Definition: PolyConnectivity.hh:1119
OpenMesh::Iterators::GenericCirculatorT_DEPRECATED
Definition: CirculatorsT.hh:425
OpenMesh::PolyConnectivity::vf_cwiter
VertexFaceCWIter vf_cwiter(VertexHandle _vh)
vertex - face circulator cw
Definition: PolyConnectivity.hh:610
OpenMesh::PolyConnectivity::cvih_end
ConstVertexIHalfedgeIter cvih_end(VertexHandle _vh) const
const vertex - incoming halfedge circulator
Definition: PolyConnectivity.hh:981
OpenMesh::PolyConnectivity::InvalidHalfedgeHandle
static const HalfedgeHandle InvalidHalfedgeHandle
Invalid handle.
Definition: PolyConnectivity.hh:64
OpenMesh::PolyConnectivity::vv_cwbegin
VertexVertexCWIter vv_cwbegin(VertexHandle _vh)
vertex - vertex circulator cw
Definition: PolyConnectivity.hh:742
OpenMesh::PolyConnectivity::CVECWIter
ConstVertexEdgeCWIter CVECWIter
Alias typedef.
Definition: PolyConnectivity.hh:362
OpenMesh::PolyConnectivity::vf_cwbegin
VertexFaceCWIter vf_cwbegin(VertexHandle _vh)
vertex - face circulator cw
Definition: PolyConnectivity.hh:778
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:127
OpenMesh::Iterators::GenericCirculatorT
Definition: CirculatorsT.hh:253
OpenMesh::PolyConnectivity::cfh_ccwiter
ConstFaceHalfedgeCCWIter cfh_ccwiter(FaceHandle _fh) const
const face - halfedge circulator ccw
Definition: PolyConnectivity.hh:715
OpenMesh::PolyConnectivity::hl_ccwbegin
HalfedgeLoopCCWIter hl_ccwbegin(HalfedgeHandle _heh)
halfedge circulator ccw
Definition: PolyConnectivity.hh:874
OpenMesh::PolyConnectivity::faces_sbegin
FaceIter faces_sbegin()
Begin iterator for faces.
Definition: PolyConnectivity.hh:556
OpenMesh::PolyConnectivity::ConstVertexFaceCCWIter
VertexFaceCCWIter ConstVertexFaceCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:209
OpenMesh::PolyConnectivity::ConstVertexEdgeRange
CirculatorRange< PolyConnectivity, ConstVertexEdgeIter, VertexHandle, &PolyConnectivity::cve_begin, &PolyConnectivity::cve_end > ConstVertexEdgeRange
Definition: PolyConnectivity.hh:1266
OpenMesh::PolyConnectivity::fv_cwiter
FaceVertexCWIter fv_cwiter(FaceHandle _fh)
face - vertex circulator cw
Definition: PolyConnectivity.hh:666
OpenMesh::PolyConnectivity::deref
Vertex & deref(VertexHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1599
OpenMesh::PolyConnectivity::ff_ccwbegin
FaceFaceCCWIter ff_ccwbegin(FaceHandle _fh)
face - face circulator ccw
Definition: PolyConnectivity.hh:865
OpenMesh::PolyConnectivity::cfh_ccwbegin
ConstFaceHalfedgeCCWIter cfh_ccwbegin(FaceHandle _fh) const
const face - halfedge circulator ccw
Definition: PolyConnectivity.hh:893
OpenMesh::PolyConnectivity::EHandle
EdgeHandle EHandle
Alias typedef.
Definition: PolyConnectivity.hh:313
OpenMesh::PolyConnectivity::cve_begin
ConstVertexEdgeIter cve_begin(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:813
OpenMesh::PolyConnectivity::HIter
HalfedgeIter HIter
Alias typedef.
Definition: PolyConnectivity.hh:317
OpenMesh::PolyConnectivity::fe_ccwbegin
FaceEdgeCCWIter fe_ccwbegin(FaceHandle _fh)
face - edge circulator ccw
Definition: PolyConnectivity.hh:856
OpenMesh::PolyConnectivity::edges_sbegin
ConstEdgeIter edges_sbegin() const
Const begin iterator for edges.
Definition: PolyConnectivity.hh:552
OpenMesh::PolyConnectivity::faces_end
FaceIter faces_end()
End iterator for faces.
Definition: PolyConnectivity.cc:711
OpenMesh::PolyConnectivity::deref
const Halfedge & deref(HalfedgeHandle _h) const
Get item from handle.
Definition: PolyConnectivity.hh:1600
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:255
OpenMesh::PolyConnectivity::ConstFaceVertexCCWIter
FaceVertexCCWIter ConstFaceVertexCCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:284
OpenMesh::PolyConnectivity::fh_range
ConstFaceHalfedgeRange fh_range(FaceHandle _fh) const
Definition: PolyConnectivity.hh:1350
OpenMesh::PolyConnectivity::CVVCWIter
ConstVertexVertexCWIter CVVCWIter
Alias typedef.
Definition: PolyConnectivity.hh:353
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:109
OpenMesh::PolyConnectivity::cvv_iter
ConstVertexVertexIter cvv_iter(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:617
OpenMesh::PolyConnectivity::cvv_begin
ConstVertexVertexIter cvv_begin(VertexHandle _vh) const
const vertex circulator
Definition: PolyConnectivity.hh:786
OpenMesh::PolyConnectivity::vih_cwend
VertexIHalfedgeCWIter vih_cwend(VertexHandle _vh)
vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:938
OpenMesh::PolyConnectivity::CVFCCWIter
ConstVertexFaceCCWIter CVFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:366
OpenMesh::PolyConnectivity::CFECCWIter
ConstFaceEdgeCCWIter CFECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:375
OpenMesh::PolyConnectivity::cfh_cwiter
ConstFaceHalfedgeCWIter cfh_cwiter(FaceHandle _fh) const
const face - halfedge circulator cw
Definition: PolyConnectivity.hh:712
OpenMesh::PolyConnectivity::VECCWIter
VertexEdgeCCWIter VECCWIter
Alias typedef.
Definition: PolyConnectivity.hh:337
OpenMesh::PolyConnectivity::cvf_cwend
ConstVertexFaceCWIter cvf_cwend(VertexHandle _vh) const
const vertex - face circulator cw
Definition: PolyConnectivity.hh:1011
OpenMesh::PolyConnectivity::CVIter
ConstVertexIter CVIter
Alias typedef.
Definition: PolyConnectivity.hh:321
OpenMesh::PolyConnectivity::voh_ccwiter
VertexOHalfedgeCCWIter voh_ccwiter(VertexHandle _vh)
vertex - outgoing halfedge circulator ccw
Definition: PolyConnectivity.hh:595
OpenMesh::PolyConnectivity::deref
Face & deref(FaceHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1605
OpenMesh::PolyConnectivity::ConstFaceRangeSkipping
EntityRange< const PolyConnectivity, PolyConnectivity::ConstFaceIter, &PolyConnectivity::faces_sbegin, &PolyConnectivity::faces_end > ConstFaceRangeSkipping
Definition: PolyConnectivity.hh:1170
OpenMesh::PolyConnectivity::vv_iter
VertexVertexIter vv_iter(VertexHandle _vh)
vertex - vertex circulator
Definition: PolyConnectivity.hh:571
OpenMesh::PolyConnectivity
Connectivity Class for polygonal meshes.
Definition: PolyConnectivity.hh:56
OpenMesh::PolyConnectivity::vih_ccwbegin
VertexIHalfedgeCCWIter vih_ccwbegin(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:754
OpenMesh::PolyConnectivity::ConstFaceFaceIter
FaceFaceIter ConstFaceFaceIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:291
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:141
OpenMesh::PolyConnectivity::ConstVertexIter
VertexIter ConstVertexIter
Linear iterator.
Definition: PolyConnectivity.hh:86
OpenMesh::PolyConnectivity::ConstVertexVertexRange
CirculatorRange< PolyConnectivity, ConstVertexVertexCWIter, VertexHandle, &PolyConnectivity::cvv_cwbegin, &PolyConnectivity::cvv_cwend > ConstVertexVertexRange
Definition: PolyConnectivity.hh:1249
OpenMesh::PolyConnectivity::FFIter
FaceFaceIter FFIter
Alias typedef.
Definition: PolyConnectivity.hh:350
OpenMesh::Iterators::GenericCirculatorBaseT
Definition: CirculatorsT.hh:191
OpenMesh::PolyConnectivity::is_boundary
bool is_boundary(EdgeHandle _eh) const
Is the edge a boundary edge?
Definition: PolyConnectivity.hh:1395
OpenMesh::PolyConnectivity::vv_cwend
VertexVertexCWIter vv_cwend(VertexHandle _vh)
vertex - vertex circulator cw
Definition: PolyConnectivity.hh:929
OpenMesh::PolyConnectivity::cvih_cwend
ConstVertexIHalfedgeCWIter cvih_cwend(VertexHandle _vh) const
const vertex - incoming halfedge circulator cw
Definition: PolyConnectivity.hh:984
OpenMesh::PolyConnectivity::fv_begin
FaceVertexIter fv_begin(FaceHandle _fh)
face - vertex circulator
Definition: PolyConnectivity.hh:832
OpenMesh::BaseHandle::is_valid
bool is_valid() const
The handle is valid iff the index is not negative.
Definition: Handles.hh:72
OpenMesh::PolyConnectivity::vih_range
ConstVertexIHalfedgeRange vih_range(VertexHandle _vh) const
Definition: PolyConnectivity.hh:1310
OpenMesh::ArrayKernel::is_boundary
bool is_boundary(HalfedgeHandle _heh) const
Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
Definition: ArrayKernel.hh:398
OpenMesh::PolyConnectivity::VECWIter
VertexEdgeCWIter VECWIter
Alias typedef.
Definition: PolyConnectivity.hh:336
OpenMesh::PolyConnectivity::CFFCCWIter
ConstFaceFaceCCWIter CFFCCWIter
Alias typedef.
Definition: PolyConnectivity.hh:378
OpenMesh::PolyConnectivity::fh_ccwbegin
FaceHalfedgeCCWIter fh_ccwbegin(FaceHandle _fh)
face - halfedge circulator ccw
Definition: PolyConnectivity.hh:847
OpenMesh::PolyConnectivity::CVEIter
ConstVertexEdgeIter CVEIter
Alias typedef.
Definition: PolyConnectivity.hh:361
OpenMesh::PolyConnectivity::assign_connectivity
void assign_connectivity(const PolyConnectivity &_other)
assign_connectivity() method.
Definition: PolyConnectivity.hh:391
OpenMesh::PolyConnectivity::cve_end
ConstVertexEdgeIter cve_end(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:999
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:118
OpenMesh::PolyConnectivity::vv_cwiter
VertexVertexCWIter vv_cwiter(VertexHandle _vh)
vertex - vertex circulator cw
Definition: PolyConnectivity.hh:574
OpenMesh::PolyConnectivity::ConstFaceEdgeCWIter
FaceEdgeCWIter ConstFaceEdgeCWIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:289
OpenMesh::PolyConnectivity::edges_end
EdgeIter edges_end()
End iterator for edges.
Definition: PolyConnectivity.cc:687
OpenMesh::PolyConnectivity::VOHCWIter
VertexOHalfedgeCWIter VOHCWIter
Alias typedef.
Definition: PolyConnectivity.hh:330
OpenMesh::PolyConnectivity::cvf_cwiter
ConstVertexFaceCWIter cvf_cwiter(VertexHandle _vh) const
const vertex - face circulator cw
Definition: PolyConnectivity.hh:656
OpenMesh::PolyConnectivity::fe_iter
FaceEdgeIter fe_iter(FaceHandle _fh)
face - edge circulator
Definition: PolyConnectivity.hh:681
OpenMesh::PolyConnectivity::vih_ccwiter
VertexIHalfedgeCCWIter vih_ccwiter(VertexHandle _vh)
vertex - incoming halfedge circulator ccw
Definition: PolyConnectivity.hh:586
OpenMesh::PolyConnectivity::CFFIter
ConstFaceFaceIter CFFIter
Alias typedef.
Definition: PolyConnectivity.hh:376
OpenMesh::PolyConnectivity::all_edges
ConstEdgeRange all_edges() const
Definition: PolyConnectivity.hh:1206
OpenMesh::PolyConnectivity::vv_ccwbegin
VertexVertexCCWIter vv_ccwbegin(VertexHandle _vh)
vertex - vertex circulator ccw
Definition: PolyConnectivity.hh:745
OpenMesh::PolyConnectivity::cvv_ccwend
ConstVertexVertexCCWIter cvv_ccwend(VertexHandle _vh) const
const vertex circulator ccw
Definition: PolyConnectivity.hh:978
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:223
OpenMesh::PolyConnectivity::faces
ConstFaceRangeSkipping faces() const
Definition: PolyConnectivity.hh:1212
OpenMesh::PolyConnectivity::cve_iter
ConstVertexEdgeIter cve_iter(VertexHandle _vh) const
const vertex - edge circulator
Definition: PolyConnectivity.hh:644
OpenMesh::PolyConnectivity::deref
Halfedge & deref(HalfedgeHandle _h)
Get item from handle.
Definition: PolyConnectivity.hh:1601
OpenMesh::ArrayKernel
Mesh kernel using arrays for mesh item storage.
Definition: ArrayKernel.hh:87
OpenMesh::PolyConnectivity::ConstVertexVertexIter
VertexVertexIter ConstVertexVertexIter
Enumerates 1-ring vertices in a clockwise fashion.
Definition: PolyConnectivity.hh:198