OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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  * $Revision$ *
46  * $Date$ *
47  * *
48 \*===========================================================================*/
49 
50 
51 //=============================================================================
52 //
53 // Kernel Concept
54 //
55 //=============================================================================
56 
57 
58 #error this file is for documentation purposes only
59 
60 
61 //== NAMESPACES ===============================================================
62 
63 
64 namespace OpenMesh {
65 namespace Concepts {
66 
67 
68 //== CLASS DEFINITION =========================================================
69 
70 
83 template <class FinalMeshItems> class KernelT
84 {
85 public:
86 
88 
89 
91  typedef typename FinalMeshItems::Vertex Vertex;
92  typedef typename FinalMeshItems::Halfedge Halfedge;
93  typedef typename FinalMeshItems::Edge Edge;
94  typedef typename FinalMeshItems::Face Face;
95  typedef typename FinalMeshItems::Point Point;
96  typedef typename FinalMeshItems::Scalar Scalar;
97  typedef typename FinalMeshItems::Normal Normal;
98  typedef typename FinalMeshItems::Color Color;
99  typedef typename FinalMeshItems::TexCoord TexCoord;
100  typedef typename FinalMeshItems::VertexHandle VertexHandle;
101  typedef typename FinalMeshItems::HalfedgeHandle HalfedgeHandle;
102  typedef typename FinalMeshItems::EdgeHandle EdgeHandle;
103  typedef typename FinalMeshItems::FaceHandle FaceHandle;
104 
106 
107 
109 
110  typedef SomeIterator KernelVertexIter;
112  typedef SomeIterator KernelConstVertexIter;
113  typedef SomeIterator KernelEdgeIter;
114  typedef SomeIterator KernelConstEdgeIter;
115  typedef SomeIterator KernelFaceIter;
116  typedef SomeIterator KernelConstFaceIter;
118 
120 
121  KernelT() {}
123 
125  ~KernelT();
127 
129  KernelT& operator=(const KernelT& _rhs);
130 
131 
144  void reserve( unsigned int _n_vertices,
145  unsigned int _n_edges,
146  unsigned int _n_faces );
147 
148 
150 
151  const Vertex& vertex(VertexHandle _h) const { return deref(_h); }
153  Vertex& vertex(VertexHandle _h) { return deref(_h); }
154  const Halfedge& halfedge(HalfedgeHandle _h) const { return deref(_h); }
155  Halfedge& halfedge(HalfedgeHandle _h) { return deref(_h); }
156  const Edge& edge(EdgeHandle _h) const { return deref(_h); }
157  Edge& edge(EdgeHandle _h) { return deref(_h); }
158  const Face& face(FaceHandle _h) const { return deref(_h); }
159  Face& face(FaceHandle _h) { return deref(_h); }
161 
162 
164 
165  VertexHandle handle(const Vertex& _v) const;
167  HalfedgeHandle handle(const Halfedge& _he) const;
168  EdgeHandle handle(const Edge& _e) const;
169  FaceHandle handle(const Face& _f) const;
171 
172 
174 
175  VertexHandle vertex_handle(unsigned int _i) const;
177  HalfedgeHandle halfedge_handle(unsigned int _i) const;
178  EdgeHandle edge_handle(unsigned int _i) const;
179  FaceHandle face_handle(unsigned int _i) const;
181 
182 
184 
185 
188  void clear();
189 
193  void clean();
194 
204  void garbage_collection();
205 
209  void remove_last_vertex() { vertices_.pop_back(); }
213  void remove_last_edge() { edges_.pop_back(); }
217  void remove_last_face() { faces_.pop_back(); }
218 
220 
221 
222 
223 
225 
226  unsigned int n_vertices() const;
229  unsigned int n_halfedges() const;
231  unsigned int n_edges() const;
233  unsigned int n_faces() const;
235  bool vertices_empty() const;
237  bool halfedges_empty() const;
239  bool edges_empty() const;
241  bool faces_empty() const;
243 
244 
245 
247 
248  HalfedgeHandle halfedge_handle(VertexHandle _vh) const;
251  void set_halfedge_handle(VertexHandle _vh, HalfedgeHandle _heh);
253  const Point& point(VertexHandle _vh) const;
255  const Point& point(const Vertex& _v) const;
257  void set_point(VertexHandle _vh, const Point& _p);
259  void set_point(Vertex& _v, const Point& _p);
261 
262 
263 
264 
266 
267  VertexHandle to_vertex_handle(HalfedgeHandle _heh) const;
271  VertexHandle from_vertex_handle(HalfedgeHandle _heh) const;
273  void set_vertex_handle(HalfedgeHandle _heh, VertexHandle _vh);
276  FaceHandle face_handle(HalfedgeHandle _heh) const;
278  void set_face_handle(HalfedgeHandle _heh, FaceHandle _fh);
280  HalfedgeHandle next_halfedge_handle(HalfedgeHandle _heh) const;
284  void set_next_halfedge_handle(HalfedgeHandle _heh, HalfedgeHandle _nheh);
288  HalfedgeHandle prev_halfedge_handle(HalfedgeHandle _heh) const;
290  HalfedgeHandle opposite_halfedge_handle(HalfedgeHandle _heh) const;
292  HalfedgeHandle ccw_rotated_halfedge_handle(HalfedgeHandle _heh) const;
294  HalfedgeHandle cw_rotated_halfedge_handle(HalfedgeHandle _heh) const;
296  EdgeHandle edge_handle(HalfedgeHandle _heh) const;
298 
299 
300 
302 
303  HalfedgeHandle halfedge_handle(EdgeHandle _eh, unsigned int _i) const;
306 
307 
308 
310 
311  HalfedgeHandle halfedge_handle(FaceHandle _fh) const;
314  void set_halfedge_handle(FaceHandle _fh, HalfedgeHandle _heh);
316 
317 
318 public: // Standard Property Management
319 
321 
322 
323  // vertex
324  const Point& point(VertexHandle _vh) const;
325  void set_point(VertexHandle _vh, const Point& _p);
326  Point& point(VertexHandle _vh);
327 
328  const Normal& normal(VertexHandle _vh) const;
329  void set_normal(VertexHandle _vh, const Normal& _n);
330 
331  const Normal& normal(HalfedgeHandle _heh) const;
332  void set_normal(HalfedgeHandle _heh, const Normal& _n);
333 
334  const Color& color(VertexHandle _vh) const;
335  void set_color(VertexHandle _vh, const Color& _c);
336 
337  const TexCoord1D& texcoord1D(VertexHandle _vh) const;
338  void set_texcoord1D(VertexHandle _vh, const TexCoord1D& _t);
339 
340  const TexCoord2D& texcoord2D(VertexHandle _vh) const;
341  void set_texcoord2D(VertexHandle _vh, const TexCoord2D& _t);
342 
343  const TexCoord3D& texcoord3D(VertexHandle _vh) const;
344  void set_texcoord3D(VertexHandle _vh, const TexCoord3D& _t);
345 
346  const TexCoord1D& texcoord1D(HalfedgeHandle _hh) const;
347  void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D& _t);
348 
349  const TexCoord2D& texcoord2D(HalfedgeHandle _hh) const;
350  void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D& _t);
351 
352  const TexCoord3D& texcoord3D(HalfedgeHandle _hh) const;
353  void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D& _t);
354 
355  const StatusInfo& status(VertexHandle _vh) const;
356  StatusInfo& status(VertexHandle _vh);
357 
358  // halfedge
359  const StatusInfo& status(HalfedgeHandle _vh) const;
360  StatusInfo& status(HalfedgeHandle _vh);
361 
362  const Color& color(HalfedgeHandle _heh) const;
363  void set_color(HalfedgeHandle _heh, const Color& _c);
364 
365  // edge
366  const Color& color(EdgeHandle _eh) const;
367  void set_color(EdgeHandle _eh, const Color& _c);
368 
369 
370  const StatusInfo& status(EdgeHandle _vh) const;
371  StatusInfo& status(EdgeHandle _vh);
372 
373  // face
374  const Normal& normal(FaceHandle _fh) const;
375  void set_normal(FaceHandle _fh, const Normal& _n);
376 
377  const Color& color(FaceHandle _fh) const;
378  void set_color(FaceHandle _fh, const Color& _c);
379 
380  const StatusInfo& status(FaceHandle _vh) const;
381  StatusInfo& status(FaceHandle _vh);
382 
384 
386 
387  void request_vertex_normals();
389  void request_vertex_colors();
393  void request_vertex_status();
394 
401 
402  void request_edge_status();
403  void request_edge_colors();
404 
405  void request_face_normals();
406  void request_face_colors();
407  void request_face_status();
410 
412 
413  void release_vertex_normals();
415  void release_vertex_colors();
419  void release_vertex_status();
420 
427 
428  void release_edge_status();
429  void release_edge_colors();
430 
431  void release_face_normals();
432  void release_face_colors();
433  void release_face_status();
436 
438 
439  bool has_vertex_normals() const;
441  bool has_vertex_colors() const;
442  bool has_vertex_texcoords1D() const;
443  bool has_vertex_texcoords2D() const;
444  bool has_vertex_texcoords3D() const;
445  bool has_vertex_status() const;
446 
447  bool has_halfedge_status() const;
448  bool has_halfedge_normals() const;
449  bool has_halfedge_colors() const;
450  bool has_halfedge_texcoords1D() const;
451  bool has_halfedge_texcoords2D() const;
452  bool has_halfedge_texcoords3D() const;
453 
454  bool has_edge_status() const;
455  bool has_edge_colors() const;
456 
457  bool has_face_normals() const;
458  bool has_face_colors() const;
459  bool has_face_status() const;
460  bool has_face_texture_index() const;
462 
463 public: // Property Management
464 
466 
468 
469  template <typename T> void add_property( [VEHFM]PropHandleT<T>& _ph,
472  const std::string& _name = "" );
474 
476 
477  template <typename T> void remove_property( [VEHFM]PropHandleT<T>& );
480 
482 
483  template <typename T>
485  bool get_property_handle( [VEHFM]PropHandleT<T>& ph, const std::string& _n ) const;
487 
489 
490  template <typename T> PropertyT<T>& property( [VEHF]PropHandleT<T> _ph );
492  template <typename T> const PropertyT<T>& property( [VEHF]PropHandleT<T> _ph ) const;
493  template <typename T> PropertyT<T>& mproperty( MPropHandleT<T> _ph );
494  template <typename T> const PropertyT<T>& mproperty( MPropHandleT<T> _ph ) const;
496 
498 
499 
501  template <typename T>
502  T& property( VPropHandleT<T> _ph, VertexHandle _vh );
503  template <typename T>
504  const T& property( VPropHandleT<T> _ph, VertexHandle _vh ) const;
505 
506  template <typename T>
507  T& property( EPropHandleT<T> _ph, EdgeHandle _vh );
508  template <typename T>
509  const T& property( EPropHandleT<T> _ph, EdgeHandle _vh ) const;
510 
511  template <typename T>
512  T& property( HPropHandleT<T> _ph, HalfedgeHandle _vh );
513  template <typename T>
514  const T& property( HPropHandleT<T> _ph, HalfedgeHandle _vh ) const;
515 
516  template <typename T>
517  T& property( FPropHandleT<T> _ph, FaceHandle _vh );
518  template <typename T>
519  const T& property( FPropHandleT<T> _ph, FaceHandle _vh ) const;
520 
521  template <typename T>
522  T& property( MPropHandleT<T> _ph );
523  template <typename T>
524  const T& property( MPropHandleT<T> _ph ) const;
525 
527 
528 public:
529 
530 
532 
533 
535  VertexHandle new_vertex();
538  VertexHandle new_vertex(const Point& _p);
541  VertexHandle new_vertex(const Vertex& _v);
547  HalfedgeHandle new_edge(VertexHandle _start_vertex_handle,
548  VertexHandle _end_vertex_handle);
549 
553  FaceHandle new_face();
556  FaceHandle new_face(const Face& _f);
558 
559 
560  // --- iterators ---
561 
563 
564 
566  KernelVertexIter vertices_begin();
567  KernelConstVertexIter vertices_begin() const;
568  KernelVertexIter vertices_end();
569  KernelConstVertexIter vertices_end() const;
570  KernelEdgeIter edges_begin();
571  KernelConstEdgeIter edges_begin() const;
572  KernelEdgeIter edges_end();
573  KernelConstEdgeIter edges_end() const;
574  KernelFaceIter faces_begin();
575  KernelConstFaceIter faces_begin() const;
576  KernelFaceIter faces_end();
577  KernelConstFaceIter faces_end() const;
579 
580 
581 
582 private:
583 
584 
585  // --- private functions ---
586 
588  KernelT(const KernelT& _rhs);
589 };
590 };
591 
592 
593 //=============================================================================
594 } // namespace Concepts
595 } // namespace OpenMesh
596 //=============================================================================
void set_normal(VertexHandle _vh, const Normal &_n)
Set normal.
Add normals to mesh item (vertices/faces)
Definition: Attributes.hh:87
void request_face_texture_index()
Request property.
const StatusInfo & status(VertexHandle _vh) const
Get status.
HalfedgeHandle cw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Clockwise rotate the given halfedge around its from vertex.
unsigned int n_halfedges() const
Returns number of halfedges (should be 2*n_edges())
SomeIterator KernelEdgeIter
This type depends on the container type in use.
Definition: MeshKernel.hh:113
KernelFaceIter faces_begin()
Kernel item iterator.
void set_point(VertexHandle _vh, const Point &_p)
Set the coordinate of a vertex.
const Face & face(FaceHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:158
void release_face_colors()
Remove property.
FinalMeshItems::Face Face
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:94
void release_halfedge_texcoords3D()
Remove property.
Halfedge & halfedge(HalfedgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:155
SomeIterator KernelFaceIter
This type depends on the container type in use.
Definition: MeshKernel.hh:115
Handle representing an edge property.
Definition: Property.hh:515
bool has_vertex_colors() const
Is property available?
KernelT & operator=(const KernelT &_rhs)
Assignment operator.
void request_halfedge_normals()
Request property.
Handle representing a mesh property.
Definition: Property.hh:543
void set_texcoord2D(VertexHandle _vh, const TexCoord2D &_t)
Set texture coordinate.
FinalMeshItems::Point Point
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:95
void release_edge_status()
Remove property.
void set_texcoord3D(VertexHandle _vh, const TexCoord3D &_t)
Set texture coordinate.
void release_halfedge_texcoords1D()
Remove property.
Vertex & vertex(VertexHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:153
unsigned int n_edges() const
Returns number of edges.
void request_vertex_normals()
Request property.
void release_face_status()
Remove property.
void release_halfedge_texcoords2D()
Remove property.
void release_vertex_texcoords3D()
Remove property.
void add_property([VEHFM]PropHandleT< T > &_ph, const std::string &_name="")
Add property.
void release_halfedge_colors()
Remove property.
const Halfedge & halfedge(HalfedgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:154
bool vertices_empty() const
Is the vertex container empty?
FinalMeshItems::Vertex Vertex
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:91
void release_vertex_status()
Remove property.
const TexCoord3D & texcoord3D(VertexHandle _vh) const
Get texture coordinate.
void set_halfedge_handle(VertexHandle _vh, HalfedgeHandle _heh)
Set the outgoing halfedge handle of a given vertex.
void release_vertex_texcoords1D()
Remove property.
const TexCoord1D & texcoord1D(VertexHandle _vh) const
Get texture coordinate.
Default property class for any type T.
Definition: Property.hh:94
void set_vertex_handle(HalfedgeHandle _heh, VertexHandle _vh)
Set the to-vertex-handle of the halfedge.
void release_face_normals()
Remove property.
void request_halfedge_status()
Request property.
void reserve(unsigned int _n_vertices, unsigned int _n_edges, unsigned int _n_faces)
Reserve memory for vertices, edges, faces.
void request_face_status()
Request property.
SomeIterator KernelConstEdgeIter
This type depends on the container type in use.
Definition: MeshKernel.hh:114
PropertyT< T > & property([VEHF]PropHandleT< T > _ph)
Get property.
EdgeHandle edge_handle(unsigned int _i) const
Get the i'th item.
bool has_halfedge_texcoords2D() const
Is property available?
KernelT()
Default constructor.
Definition: MeshKernel.hh:122
KernelFaceIter faces_end()
Kernel item iterator.
const Color & color(VertexHandle _vh) const
Get color.
void request_vertex_texcoords2D()
Request property.
const Edge & edge(EdgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:156
void release_edge_colors()
Remove property.
void garbage_collection()
Remove all items that are marked as deleted from the corresponding containers.
void remove_last_edge()
Remove the last edge imidiately, i.e.
Definition: MeshKernel.hh:213
bool has_vertex_texcoords3D() const
Is property available?
Face & face(FaceHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:159
FinalMeshItems::TexCoord TexCoord
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:99
bool has_vertex_status() const
Is property available?
Handle representing a halfedge property.
Definition: Property.hh:501
void release_vertex_texcoords2D()
Remove property.
void request_edge_colors()
Request property.
void release_halfedge_status()
Remove property.
bool has_face_texture_index() const
Is property available?
bool has_face_status() const
Is property available?
KernelVertexIter vertices_begin()
Kernel item iterator.
void request_halfedge_texcoords2D()
Request property.
Handle representing a vertex property.
Definition: Property.hh:487
bool edges_empty() const
Is the edge container empty?
Add 2D texture coordinates (vertices, halfedges)
Definition: Attributes.hh:92
void request_halfedge_texcoords3D()
Request property.
FinalMeshItems::Normal Normal
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:97
void request_face_colors()
Request property.
void request_halfedge_texcoords1D()
Request property.
void request_face_normals()
Request property.
bool faces_empty() const
Is the face container empty?
void release_vertex_colors()
Remove property.
const TexCoord2D & texcoord2D(VertexHandle _vh) const
Get texture coordinate.
void release_face_texture_index()
Remove property.
HalfedgeHandle opposite_halfedge_handle(HalfedgeHandle _heh) const
Get the opposite halfedge.
HalfedgeHandle halfedge_handle(unsigned int _i) const
Get the i'th item.
HalfedgeHandle prev_halfedge_handle(HalfedgeHandle _heh) const
Get the previous halfedge of the given halfedge.
Edge & edge(EdgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:157
Add 1D texture coordinates (vertices, halfedges)
Definition: Attributes.hh:91
void release_halfedge_normals()
Remove property.
bool has_face_normals() const
Is property available?
PropertyT< T > & mproperty(MPropHandleT< T > _ph)
Get property.
FinalMeshItems::FaceHandle FaceHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:103
const Vertex & vertex(VertexHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition: MeshKernel.hh:152
VertexHandle vertex_handle(unsigned int _i) const
Get the i'th item.
FaceHandle new_face()
Adding a new face.
bool has_halfedge_normals() const
Is property available?
bool has_vertex_texcoords2D() const
Is property available?
FinalMeshItems::HalfedgeHandle HalfedgeHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:101
const Point & point(VertexHandle _vh) const
Get the coordinate of a vertex.
void set_face_handle(HalfedgeHandle _heh, FaceHandle _fh)
Set the face the halfedge belongs to.
void request_halfedge_colors()
Request property.
VertexHandle from_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge starts from (implemented as to-handle of the opposite halfedge...
This class describes the minimum interface a mesh kernel has to implement (because the resulting mesh...
Definition: MeshKernel.hh:83
bool get_property_handle([VEHFM]PropHandleT< T > &ph, const std::string &_n) const
Get property handle by name.
FinalMeshItems::Color Color
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:98
bool has_vertex_normals() const
Is property available?
KernelEdgeIter edges_end()
Kernel item iterator.
HalfedgeHandle next_halfedge_handle(HalfedgeHandle _heh) const
Get the next halfedge handle.
void request_edge_status()
Request property.
void request_vertex_texcoords1D()
Request property.
Handle representing a face property.
Definition: Property.hh:529
void remove_property([VEHFM]PropHandleT< T > &)
Remove property.
SomeIterator KernelVertexIter
This type depends on the container type in use.
Definition: MeshKernel.hh:111
VertexHandle to_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge points to.
bool has_face_colors() const
Is property available?
Add 3D texture coordinates (vertices, halfedges)
Definition: Attributes.hh:93
VertexHandle handle(const Vertex &_v) const
Translate item to handle.
void set_color(VertexHandle _vh, const Color &_c)
Set color.
KernelEdgeIter edges_begin()
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 release_vertex_normals()
Remove property.
HalfedgeHandle ccw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Counter-clockwise rotate the given halfedge around its from vertex.
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:64
void request_vertex_status()
Request property.
void request_vertex_colors()
Request property.
FinalMeshItems::Scalar Scalar
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:96
unsigned int n_vertices() const
Returns number of vertices.
bool has_halfedge_texcoords3D() const
Is property available?
Add colors to mesh item (vertices/faces/edges)
Definition: Attributes.hh:88
bool has_halfedge_colors() const
Is property available?
void set_texcoord1D(VertexHandle _vh, const TexCoord1D &_t)
Set texture coordinate.
bool halfedges_empty() const
Is the halfedge container empty (should be the same as edges_empty()).
void clean()
Delete all items, i.e.
bool has_vertex_texcoords1D() const
Is property available?
void set_next_halfedge_handle(HalfedgeHandle _heh, HalfedgeHandle _nheh)
Set the next halfedge handle.
void clear()
Delete all items, i.e.
bool has_halfedge_texcoords1D() const
Is property available?
const Normal & normal(VertexHandle _vh) const
Get normal.
FinalMeshItems::Halfedge Halfedge
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:92
void remove_last_face()
Remove the last face imidiately, i.e.
Definition: MeshKernel.hh:217
FinalMeshItems::VertexHandle VertexHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:100
KernelVertexIter vertices_end()
Kernel item iterator.
void remove_last_vertex()
Remove the last vertex imidiately, i.e.
Definition: MeshKernel.hh:209
SomeIterator KernelConstFaceIter
This type depends on the container type in use.
Definition: MeshKernel.hh:116
VertexHandle new_vertex()
Add a new (default) vertex.
void request_vertex_texcoords3D()
Request property.
unsigned int n_faces() const
Returns number of faces.
FaceHandle face_handle(unsigned int _i) const
Get the i'th item.
bool has_edge_colors() const
Is property available?
FinalMeshItems::EdgeHandle EdgeHandle
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:102
SomeIterator KernelConstVertexIter
This type depends on the container type in use.
Definition: MeshKernel.hh:112
bool has_halfedge_status() const
Is property available?
bool has_edge_status() const
Is property available?
FinalMeshItems::Edge Edge
Derive this type from the FinalMeshItems.
Definition: MeshKernel.hh:93

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