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

Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .