OpenMesh
MeshKernel.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 //
45 // Kernel Concept
46 //
47 //=============================================================================
48 
49 
50 #error this file is for documentation purposes only
51 
52 
53 //== NAMESPACES ===============================================================
54 
55 
56 namespace OpenMesh {
57 namespace Concepts {
58 
59 
60 //== CLASS DEFINITION =========================================================
61 
62 
75 template <class FinalMeshItems> class KernelT
76 {
77 public:
78 
80 
81 
83  typedef typename FinalMeshItems::Vertex Vertex;
84  typedef typename FinalMeshItems::Halfedge Halfedge;
85  typedef typename FinalMeshItems::Edge Edge;
86  typedef typename FinalMeshItems::Face Face;
87  typedef typename FinalMeshItems::Point Point;
88  typedef typename FinalMeshItems::Scalar Scalar;
89  typedef typename FinalMeshItems::Normal Normal;
90  typedef typename FinalMeshItems::Color Color;
91  typedef typename FinalMeshItems::TexCoord TexCoord;
92  typedef typename FinalMeshItems::VertexHandle VertexHandle;
93  typedef typename FinalMeshItems::HalfedgeHandle HalfedgeHandle;
94  typedef typename FinalMeshItems::EdgeHandle EdgeHandle;
95  typedef typename FinalMeshItems::FaceHandle FaceHandle;
96 
98 
99 
101 
102  typedef SomeIterator KernelVertexIter;
104  typedef SomeIterator KernelConstVertexIter;
105  typedef SomeIterator KernelEdgeIter;
106  typedef SomeIterator KernelConstEdgeIter;
107  typedef SomeIterator KernelFaceIter;
108  typedef SomeIterator KernelConstFaceIter;
110 
112 
113  KernelT() {}
115 
119 
121  KernelT& operator=(const KernelT& _rhs);
122 
123 
136  void reserve( size_t _n_vertices,
137  size_t _n_edges,
138  size_t _n_faces );
139 
140 
142 
143  const Vertex& vertex(VertexHandle _h) const { return deref(_h); }
145  Vertex& vertex(VertexHandle _h) { return deref(_h); }
146  const Halfedge& halfedge(HalfedgeHandle _h) const { return deref(_h); }
147  Halfedge& halfedge(HalfedgeHandle _h) { return deref(_h); }
148  const Edge& edge(EdgeHandle _h) const { return deref(_h); }
149  Edge& edge(EdgeHandle _h) { return deref(_h); }
150  const Face& face(FaceHandle _h) const { return deref(_h); }
151  Face& face(FaceHandle _h) { return deref(_h); }
153 
154 
156 
157  VertexHandle handle(const Vertex& _v) const;
159  HalfedgeHandle handle(const Halfedge& _he) const;
160  EdgeHandle handle(const Edge& _e) const;
161  FaceHandle handle(const Face& _f) const;
163 
164 
166 
167  VertexHandle vertex_handle(unsigned int _i) const;
169  HalfedgeHandle halfedge_handle(unsigned int _i) const;
170  EdgeHandle edge_handle(unsigned int _i) const;
171  FaceHandle face_handle(unsigned int _i) const;
173 
174 
176 
177 
180  void clear();
181 
185  void clean();
186 
197 
201  void remove_last_vertex() { vertices_.pop_back(); }
205  void remove_last_edge() { edges_.pop_back(); }
209  void remove_last_face() { faces_.pop_back(); }
210 
212 
213 
214 
215 
217 
218  size_t n_vertices() const;
221  size_t n_halfedges() const;
223  size_t n_edges() const;
225  size_t n_faces() const;
227  bool vertices_empty() const;
229  bool halfedges_empty() const;
231  bool edges_empty() const;
233  bool faces_empty() const;
235 
236 
237 
239 
245  const Point& point(VertexHandle _vh) const;
247  const Point& point(const Vertex& _v) const;
249  void set_point(VertexHandle _vh, const Point& _p);
251  void set_point(Vertex& _v, const Point& _p);
253 
254 
255 
256 
258 
290 
291 
292 
294 
295  HalfedgeHandle halfedge_handle(EdgeHandle _eh, unsigned int _i) const;
298 
299 
300 
302 
308 
309 
310 public: // Standard Property Management
311 
313 
314 
315  // vertex
316  const Point& point(VertexHandle _vh) const;
317  void set_point(VertexHandle _vh, const Point& _p);
319 
320  const Normal& normal(VertexHandle _vh) const;
321  void set_normal(VertexHandle _vh, const Normal& _n);
322 
323  const Normal& normal(HalfedgeHandle _heh) const;
324  void set_normal(HalfedgeHandle _heh, const Normal& _n);
325 
326  const Color& color(VertexHandle _vh) const;
327  void set_color(VertexHandle _vh, const Color& _c);
328 
329  const TexCoord1D& texcoord1D(VertexHandle _vh) const;
330  void set_texcoord1D(VertexHandle _vh, const TexCoord1D& _t);
331 
332  const TexCoord2D& texcoord2D(VertexHandle _vh) const;
333  void set_texcoord2D(VertexHandle _vh, const TexCoord2D& _t);
334 
335  const TexCoord3D& texcoord3D(VertexHandle _vh) const;
336  void set_texcoord3D(VertexHandle _vh, const TexCoord3D& _t);
337 
339  void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D& _t);
340 
342  void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D& _t);
343 
345  void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D& _t);
346 
347  const StatusInfo& status(VertexHandle _vh) const;
348  StatusInfo& status(VertexHandle _vh);
349 
350  // halfedge
351  const StatusInfo& status(HalfedgeHandle _vh) const;
352  StatusInfo& status(HalfedgeHandle _vh);
353 
354  const Color& color(HalfedgeHandle _heh) const;
355  void set_color(HalfedgeHandle _heh, const Color& _c);
356 
357  // edge
358  const Color& color(EdgeHandle _eh) const;
359  void set_color(EdgeHandle _eh, const Color& _c);
360 
361 
362  const StatusInfo& status(EdgeHandle _vh) const;
363  StatusInfo& status(EdgeHandle _vh);
364 
365  // face
366  const Normal& normal(FaceHandle _fh) const;
367  void set_normal(FaceHandle _fh, const Normal& _n);
368 
369  const Color& color(FaceHandle _fh) const;
370  void set_color(FaceHandle _fh, const Color& _c);
371 
372  const StatusInfo& status(FaceHandle _vh) const;
373  StatusInfo& status(FaceHandle _vh);
374 
376 
378 
379  void request_vertex_normals();
386 
393 
396 
402 
404 
405  void release_vertex_normals();
412 
419 
422 
428 
430 
431  bool has_vertex_normals() const;
433  bool has_vertex_colors() const;
437  bool has_vertex_status() const;
438 
439  bool has_halfedge_status() const;
440  bool has_halfedge_normals() const;
441  bool has_halfedge_colors() const;
445 
446  bool has_edge_status() const;
447  bool has_edge_colors() const;
448 
449  bool has_face_normals() const;
450  bool has_face_colors() const;
451  bool has_face_status() const;
454 
455 public: // Property Management
456 
458 
460 
461  template <typename T> void add_property( [VEHFM]PropHandleT<T>& _ph,
464  const std::string& _name = "" );
466 
468 
469  template <typename T> void remove_property( [VEHFM]PropHandleT<T>& );
472 
474 
475  template <typename T>
477  bool get_property_handle( [VEHFM]PropHandleT<T>& ph, const std::string& _n ) const;
479 
481 
482  template <typename T> PropertyT<T>& property( [VEHF]PropHandleT<T> _ph );
484  template <typename T> const PropertyT<T>& property( [VEHF]PropHandleT<T> _ph ) const;
485  template <typename T> PropertyT<T>& mproperty( MPropHandleT<T> _ph );
486  template <typename T> const PropertyT<T>& mproperty( MPropHandleT<T> _ph ) const;
488 
490 
491 
493  template <typename T>
495  template <typename T>
496  const T& property( VPropHandleT<T> _ph, VertexHandle _vh ) const;
497 
498  template <typename T>
500  template <typename T>
501  const T& property( EPropHandleT<T> _ph, EdgeHandle _vh ) const;
502 
503  template <typename T>
505  template <typename T>
506  const T& property( HPropHandleT<T> _ph, HalfedgeHandle _vh ) const;
507 
508  template <typename T>
510  template <typename T>
511  const T& property( FPropHandleT<T> _ph, FaceHandle _vh ) const;
512 
513  template <typename T>
515  template <typename T>
516  const T& property( MPropHandleT<T> _ph ) const;
517 
519 
520 public:
521 
522 
524 
525 
539  HalfedgeHandle new_edge(VertexHandle _start_vertex_handle,
540  VertexHandle _end_vertex_handle);
541 
550 
551 
552  // --- iterators ---
553 
555 
556 
571 
572 
573 
574 private:
575 
576 
577  // --- private functions ---
578 
580  KernelT(const KernelT& _rhs);
581 };
582 };
583 
584 
585 //=============================================================================
586 } // namespace Concepts
587 } // namespace OpenMesh
588 //=============================================================================
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
@ Normal
Add normals to mesh item (vertices/faces)
Definition: Attributes.hh:82
@ TexCoord2D
Add 2D texture coordinates (vertices, halfedges)
Definition: Attributes.hh:87
@ TexCoord1D
Add 1D texture coordinates (vertices, halfedges)
Definition: Attributes.hh:86
@ TexCoord3D
Add 3D texture coordinates (vertices, halfedges)
Definition: Attributes.hh:88
@ Color
Add colors to mesh item (vertices/faces/edges)
Definition: Attributes.hh:83
This class describes the minimum interface a mesh kernel has to implement (because the resulting mesh...
Definition: MeshKernel.hh:76
HalfedgeHandle prev_halfedge_handle(HalfedgeHandle _heh) const
Get the previous halfedge of the given halfedge.
const TexCoord2D & texcoord2D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords)
const Vertex & vertex(VertexHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:144
bool has_halfedge_colors() const
Is property available?
void set_color(FaceHandle _fh, const Color &_c)
Set color.
void request_vertex_texcoords2D()
Request property.
void set_halfedge_handle(FaceHandle _fh, HalfedgeHandle _heh)
Set one halfedge of the face.
void request_halfedge_texcoords3D()
Request property.
bool has_face_normals() const
Is property available?
const Normal & normal(HalfedgeHandle _heh) const
Get normal of the to vertex of the given Halfedge (per face per vertex normals)
void request_halfedge_colors()
Request property.
void remove_last_face()
Remove the last face imidiately, i.e.
Definition: MeshKernel.hh:209
void request_vertex_normals()
Request property.
Vertex & vertex(VertexHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:145
void set_normal(HalfedgeHandle _heh, const Normal &_n)
Set normal of the to vertex of the given Halfedge (per face per vertex normals)
void release_halfedge_colors()
Remove property.
const TexCoord1D & texcoord1D(VertexHandle _vh) const
Get texture coordinate.
void set_point(Vertex &_v, const Point &_p)
Set the coordinate of a vertex.
size_t n_edges() const
Returns number of edges.
FinalMeshItems::Scalar Scalar
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:88
void request_halfedge_status()
Request property.
SomeIterator KernelFaceIter
This type depends on the container type in use.
Definition: MeshKernel.hh:107
const StatusInfo & status(FaceHandle _vh) const
Get status.
void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords)
VertexHandle vertex_handle(unsigned int _i) const
Get the i'th item.
FinalMeshItems::Color Color
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:90
const T & property(FPropHandleT< T > _ph, FaceHandle _vh) const
Get value for item represented by the handle.
const TexCoord2D & texcoord2D(VertexHandle _vh) const
Get texture coordinate.
HalfedgeHandle ccw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Counter-clockwise rotate the given halfedge around its from vertex.
KernelFaceIter faces_begin()
Kernel item iterator.
void release_halfedge_texcoords3D()
Remove property.
bool has_edge_colors() const
Is property available?
const Normal & normal(VertexHandle _vh) const
Get normal.
SomeIterator KernelConstVertexIter
This type depends on the container type in use.
Definition: MeshKernel.hh:104
void request_edge_status()
Request property.
void clear()
Delete all items, i.e.
KernelConstFaceIter faces_end() const
Kernel item iterator.
const Point & point(const Vertex &_v) const
Get the coordinate of a vertex.
const Point & point(VertexHandle _vh) const
Get the coordinate of a vertex.
void release_vertex_colors()
Remove property.
SomeIterator KernelEdgeIter
This type depends on the container type in use.
Definition: MeshKernel.hh:105
void remove_last_vertex()
Remove the last vertex imidiately, i.e.
Definition: MeshKernel.hh:201
FaceHandle new_face()
Adding a new face.
const Normal & normal(FaceHandle _fh) const
Get normal.
void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords)
StatusInfo & status(FaceHandle _vh)
Get status.
SomeIterator KernelConstEdgeIter
This type depends on the container type in use.
Definition: MeshKernel.hh:106
void release_face_texture_index()
Remove property.
void release_face_normals()
Remove property.
const Halfedge & halfedge(HalfedgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:146
const StatusInfo & status(EdgeHandle _vh) const
Get status.
bool vertices_empty() const
Is the vertex container empty?
FinalMeshItems::EdgeHandle EdgeHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:94
void release_vertex_normals()
Remove property.
void set_color(VertexHandle _vh, const Color &_c)
Set color.
FaceHandle face_handle(unsigned int _i) const
Get the i'th item.
void request_face_colors()
Request property.
PropertyT< T > & property([VEHF]PropHandleT< T > _ph)
Get property.
void release_halfedge_texcoords2D()
Remove property.
void request_face_texture_index()
Request property.
PropertyT< T > & mproperty(MPropHandleT< T > _ph)
Get property.
KernelConstFaceIter faces_begin() const
Kernel item iterator.
HalfedgeHandle new_edge(VertexHandle _start_vertex_handle, VertexHandle _end_vertex_handle)
Add a new edge from _start_vertex_handle to _end_vertex_handle.
void set_texcoord1D(VertexHandle _vh, const TexCoord1D &_t)
Set texture coordinate.
const TexCoord1D & texcoord1D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords)
KernelVertexIter vertices_end()
Kernel item iterator.
void request_halfedge_texcoords2D()
Request property.
const T & property(EPropHandleT< T > _ph, EdgeHandle _vh) const
Get value for item represented by the handle.
void request_vertex_status()
Request property.
FinalMeshItems::TexCoord TexCoord
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:91
void add_property([VEHFM]PropHandleT< T > &_ph, const std::string &_name="")
Add property.
void request_vertex_colors()
Request property.
VertexHandle new_vertex(const Vertex &_v)
Add a new vertex (copied from the given one).
const Color & color(EdgeHandle _eh) const
Get color.
EdgeHandle edge_handle(HalfedgeHandle _heh) const
Get the edge the current halfedge it contained in.
const TexCoord3D & texcoord3D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords)
Edge & edge(EdgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:149
bool get_property_handle([VEHFM]PropHandleT< T > &ph, const std::string &_n) const
Get property handle by name.
VertexHandle new_vertex(const Point &_p)
Add a new vertex with a given point coordinate.
void release_vertex_texcoords1D()
Remove property.
SomeIterator KernelConstFaceIter
This type depends on the container type in use.
Definition: MeshKernel.hh:108
T & property(EPropHandleT< T > _ph, EdgeHandle _vh)
Get value for item represented by the handle.
FaceHandle face_handle(HalfedgeHandle _heh) const
Get the face the halfedge belongs to.
void release_vertex_status()
Remove property.
HalfedgeHandle halfedge_handle(unsigned int _i) const
Get the i'th item.
HalfedgeHandle opposite_halfedge_handle(HalfedgeHandle _heh) const
Get the opposite halfedge.
HalfedgeHandle handle(const Halfedge &_he) const
Translate item to handle.
KernelConstVertexIter vertices_begin() const
Kernel item iterator.
FinalMeshItems::Halfedge Halfedge
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:84
void garbage_collection()
Remove all items that are marked as deleted from the corresponding containers.
void set_halfedge_handle(VertexHandle _vh, HalfedgeHandle _heh)
Set the outgoing halfedge handle of a given vertex.
void release_edge_colors()
Remove property.
const PropertyT< T > & property([VEHF]PropHandleT< T > _ph) const
Get property.
bool has_face_texture_index() const
Is property available?
FaceHandle handle(const Face &_f) const
Translate item to handle.
size_t n_vertices() const
Returns number of vertices.
KernelT()
Default constructor.
Definition: MeshKernel.hh:114
SomeIterator KernelVertexIter
This type depends on the container type in use.
Definition: MeshKernel.hh:103
FaceHandle new_face(const Face &_f)
Adding a new face (copied from a _f).
KernelFaceIter faces_end()
Kernel item iterator.
T & property(MPropHandleT< T > _ph)
Get value for item represented by the handle.
const StatusInfo & status(HalfedgeHandle _vh) const
Get status.
const T & property(VPropHandleT< T > _ph, VertexHandle _vh) const
Get value for item represented by the handle.
bool has_vertex_colors() const
Is property available?
bool has_halfedge_status() const
Is property available?
KernelConstEdgeIter edges_begin() const
Kernel item iterator.
HalfedgeHandle cw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Clockwise rotate the given halfedge around its from vertex.
void release_face_status()
Remove property.
const StatusInfo & status(VertexHandle _vh) const
Get status.
KernelConstVertexIter vertices_end() const
Kernel item iterator.
VertexHandle new_vertex()
Add a new (default) vertex.
KernelEdgeIter edges_begin()
Kernel item iterator.
void request_vertex_texcoords1D()
Request property.
const Color & color(VertexHandle _vh) const
Get color.
void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords)
void release_halfedge_normals()
Remove property.
void request_vertex_texcoords3D()
Request property.
const T & property(MPropHandleT< T > _ph) const
Get value for item represented by the handle.
KernelConstEdgeIter edges_end() const
Kernel item iterator.
bool has_vertex_normals() const
Is property available?
EdgeHandle edge_handle(unsigned int _i) const
Get the i'th item.
bool has_face_status() const
Is property available?
void release_face_colors()
Remove property.
T & property(FPropHandleT< T > _ph, FaceHandle _vh)
Get value for item represented by the handle.
bool has_halfedge_normals() const
Is property available?
void release_edge_status()
Remove property.
void set_vertex_handle(HalfedgeHandle _heh, VertexHandle _vh)
Set the to-vertex-handle of the halfedge.
void set_face_handle(HalfedgeHandle _heh, FaceHandle _fh)
Set the face the halfedge belongs to.
Point & point(VertexHandle _vh)
Convenience function.
bool has_halfedge_texcoords1D() const
Is property available?
FinalMeshItems::FaceHandle FaceHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:95
void set_next_halfedge_handle(HalfedgeHandle _heh, HalfedgeHandle _nheh)
Set the next halfedge handle.
bool has_edge_status() const
Is property available?
void set_normal(FaceHandle _fh, const Normal &_n)
Set normal.
FinalMeshItems::HalfedgeHandle HalfedgeHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:93
const Edge & edge(EdgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:148
void set_point(VertexHandle _vh, const Point &_p)
Set the coordinate of a vertex.
bool edges_empty() const
Is the edge container empty?
void release_halfedge_status()
Remove property.
void request_face_status()
Request property.
void set_normal(VertexHandle _vh, const Normal &_n)
Set normal.
StatusInfo & status(VertexHandle _vh)
Get status.
void release_halfedge_texcoords1D()
Remove property.
void reserve(size_t _n_vertices, size_t _n_edges, size_t _n_faces)
Reserve memory for vertices, edges, faces.
const Color & color(FaceHandle _fh) const
Get color.
void clean()
Delete all items, i.e.
KernelVertexIter vertices_begin()
Kernel item iterator.
VertexHandle handle(const Vertex &_v) const
Translate item to handle.
bool has_face_colors() const
Is property available?
bool has_halfedge_texcoords3D() const
Is property available?
const PropertyT< T > & mproperty(MPropHandleT< T > _ph) const
Get property.
void release_vertex_texcoords3D()
Remove property.
void set_color(EdgeHandle _eh, const Color &_c)
Set color.
HalfedgeHandle next_halfedge_handle(HalfedgeHandle _heh) const
Get the next halfedge handle.
EdgeHandle handle(const Edge &_e) const
Translate item to handle.
bool has_vertex_texcoords1D() const
Is property available?
bool has_vertex_status() const
Is property available?
FinalMeshItems::VertexHandle VertexHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:92
StatusInfo & status(HalfedgeHandle _vh)
Get status.
bool halfedges_empty() const
Is the halfedge container empty (should be the same as edges_empty()).
VertexHandle from_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge starts from (implemented as to-handle of the opposite halfedge,...
void remove_last_edge()
Remove the last edge imidiately, i.e.
Definition: MeshKernel.hh:205
bool has_vertex_texcoords2D() const
Is property available?
void remove_property([VEHFM]PropHandleT< T > &)
Remove property.
void set_texcoord2D(VertexHandle _vh, const TexCoord2D &_t)
Set texture coordinate.
void set_color(HalfedgeHandle _heh, const Color &_c)
Set color.
StatusInfo & status(EdgeHandle _vh)
Get status.
FinalMeshItems::Point Point
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:87
KernelT & operator=(const KernelT &_rhs)
Assignment operator.
FinalMeshItems::Normal Normal
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:89
T & property(HPropHandleT< T > _ph, HalfedgeHandle _vh)
Get value for item represented by the handle.
void release_vertex_texcoords2D()
Remove property.
T & property(VPropHandleT< T > _ph, VertexHandle _vh)
Get value for item represented by the handle.
const TexCoord3D & texcoord3D(VertexHandle _vh) const
Get texture coordinate.
bool faces_empty() const
Is the face container empty?
void request_halfedge_normals()
Request property.
Halfedge & halfedge(HalfedgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:147
bool has_halfedge_texcoords2D() const
Is property available?
FinalMeshItems::Edge Edge
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:85
size_t n_faces() const
Returns number of faces.
const Face & face(FaceHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:150
const Color & color(HalfedgeHandle _heh) const
Get color.
FinalMeshItems::Vertex Vertex
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:83
Face & face(FaceHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:151
KernelEdgeIter edges_end()
Kernel item iterator.
void request_edge_colors()
Request property.
void request_halfedge_texcoords1D()
Request property.
size_t n_halfedges() const
Returns number of halfedges (should be 2*n_edges())
const T & property(HPropHandleT< T > _ph, HalfedgeHandle _vh) const
Get value for item represented by the handle.
FinalMeshItems::Face Face
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:86
void request_face_normals()
Request property.
bool has_vertex_texcoords3D() const
Is property available?
VertexHandle to_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge points to.
void set_texcoord3D(VertexHandle _vh, const TexCoord3D &_t)
Set texture coordinate.
Handle for a vertex entity.
Definition: Handles.hh:121
Default property class for any type T.
Definition: Property.hh:93
Handle representing a vertex property.
Definition: Property.hh:417
Handle representing a halfedge property.
Definition: Property.hh:432
Handle representing an edge property.
Definition: Property.hh:447
Handle representing a face property.
Definition: Property.hh:462
Handle representing a mesh property.
Definition: Property.hh:477

Project OpenMesh, ©  Visual Computing Institute, RWTH Aachen. Documentation generated using doxygen .