Loading...
Searching...
No Matches
MeshKernel.hh
/* ========================================================================= *
* *
* OpenMesh *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openmesh.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenMesh. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= */
//=============================================================================
//
// Kernel Concept
//
//=============================================================================
#error this file is for documentation purposes only
//== NAMESPACES ===============================================================
namespace OpenMesh {
namespace Concepts {
//== CLASS DEFINITION =========================================================
template <class FinalMeshItems> class KernelT
{
public:
typedef typename FinalMeshItems::Vertex Vertex;
typedef typename FinalMeshItems::Halfedge Halfedge;
typedef typename FinalMeshItems::Edge Edge;
typedef typename FinalMeshItems::Face Face;
typedef typename FinalMeshItems::Point Point;
typedef typename FinalMeshItems::Scalar Scalar;
typedef typename FinalMeshItems::Normal Normal;
typedef typename FinalMeshItems::Color Color;
typedef typename FinalMeshItems::TexCoord TexCoord;
typedef typename FinalMeshItems::VertexHandle VertexHandle;
typedef typename FinalMeshItems::HalfedgeHandle HalfedgeHandle;
typedef typename FinalMeshItems::EdgeHandle EdgeHandle;
typedef typename FinalMeshItems::FaceHandle FaceHandle;
typedef SomeIterator KernelVertexIter;
typedef SomeIterator KernelConstVertexIter;
typedef SomeIterator KernelEdgeIter;
typedef SomeIterator KernelConstEdgeIter;
typedef SomeIterator KernelFaceIter;
typedef SomeIterator KernelConstFaceIter;
KernelT() {}
~KernelT();
KernelT& operator=(const KernelT& _rhs);
void reserve( size_t _n_vertices,
size_t _n_edges,
size_t _n_faces );
const Vertex& vertex(VertexHandle _h) const { return deref(_h); }
Vertex& vertex(VertexHandle _h) { return deref(_h); }
const Halfedge& halfedge(HalfedgeHandle _h) const { return deref(_h); }
Halfedge& halfedge(HalfedgeHandle _h) { return deref(_h); }
const Edge& edge(EdgeHandle _h) const { return deref(_h); }
Edge& edge(EdgeHandle _h) { return deref(_h); }
const Face& face(FaceHandle _h) const { return deref(_h); }
Face& face(FaceHandle _h) { return deref(_h); }
VertexHandle handle(const Vertex& _v) const;
HalfedgeHandle handle(const Halfedge& _he) const;
EdgeHandle handle(const Edge& _e) const;
FaceHandle handle(const Face& _f) const;
VertexHandle vertex_handle(unsigned int _i) const;
HalfedgeHandle halfedge_handle(unsigned int _i) const;
EdgeHandle edge_handle(unsigned int _i) const;
FaceHandle face_handle(unsigned int _i) const;
void clear();
void clean();
void garbage_collection();
void remove_last_vertex() { vertices_.pop_back(); }
void remove_last_edge() { edges_.pop_back(); }
void remove_last_face() { faces_.pop_back(); }
size_t n_vertices() const;
size_t n_halfedges() const;
size_t n_edges() const;
size_t n_faces() const;
bool vertices_empty() const;
bool halfedges_empty() const;
bool edges_empty() const;
bool faces_empty() const;
HalfedgeHandle halfedge_handle(VertexHandle _vh) const;
void set_halfedge_handle(VertexHandle _vh, HalfedgeHandle _heh);
const Point& point(VertexHandle _vh) const;
const Point& point(const Vertex& _v) const;
void set_point(VertexHandle _vh, const Point& _p);
void set_point(Vertex& _v, const Point& _p);
VertexHandle to_vertex_handle(HalfedgeHandle _heh) const;
VertexHandle from_vertex_handle(HalfedgeHandle _heh) const;
void set_vertex_handle(HalfedgeHandle _heh, VertexHandle _vh);
FaceHandle face_handle(HalfedgeHandle _heh) const;
void set_face_handle(HalfedgeHandle _heh, FaceHandle _fh);
HalfedgeHandle next_halfedge_handle(HalfedgeHandle _heh) const;
void set_next_halfedge_handle(HalfedgeHandle _heh, HalfedgeHandle _nheh);
HalfedgeHandle prev_halfedge_handle(HalfedgeHandle _heh) const;
HalfedgeHandle opposite_halfedge_handle(HalfedgeHandle _heh) const;
HalfedgeHandle ccw_rotated_halfedge_handle(HalfedgeHandle _heh) const;
HalfedgeHandle cw_rotated_halfedge_handle(HalfedgeHandle _heh) const;
EdgeHandle edge_handle(HalfedgeHandle _heh) const;
HalfedgeHandle halfedge_handle(EdgeHandle _eh, unsigned int _i) const;
HalfedgeHandle halfedge_handle(FaceHandle _fh) const;
void set_halfedge_handle(FaceHandle _fh, HalfedgeHandle _heh);
public: // Standard Property Management
// vertex
const Point& point(VertexHandle _vh) const;
void set_point(VertexHandle _vh, const Point& _p);
Point& point(VertexHandle _vh);
const Normal& normal(VertexHandle _vh) const;
void set_normal(VertexHandle _vh, const Normal& _n);
const Normal& normal(HalfedgeHandle _heh) const;
void set_normal(HalfedgeHandle _heh, const Normal& _n);
const Color& color(VertexHandle _vh) const;
void set_color(VertexHandle _vh, const Color& _c);
const TexCoord1D& texcoord1D(VertexHandle _vh) const;
void set_texcoord1D(VertexHandle _vh, const TexCoord1D& _t);
const TexCoord2D& texcoord2D(VertexHandle _vh) const;
void set_texcoord2D(VertexHandle _vh, const TexCoord2D& _t);
const TexCoord3D& texcoord3D(VertexHandle _vh) const;
void set_texcoord3D(VertexHandle _vh, const TexCoord3D& _t);
const TexCoord1D& texcoord1D(HalfedgeHandle _hh) const;
void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D& _t);
const TexCoord2D& texcoord2D(HalfedgeHandle _hh) const;
void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D& _t);
const TexCoord3D& texcoord3D(HalfedgeHandle _hh) const;
void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D& _t);
const StatusInfo& status(VertexHandle _vh) const;
StatusInfo& status(VertexHandle _vh);
// halfedge
const StatusInfo& status(HalfedgeHandle _vh) const;
StatusInfo& status(HalfedgeHandle _vh);
const Color& color(HalfedgeHandle _heh) const;
void set_color(HalfedgeHandle _heh, const Color& _c);
// edge
const Color& color(EdgeHandle _eh) const;
void set_color(EdgeHandle _eh, const Color& _c);
const StatusInfo& status(EdgeHandle _vh) const;
StatusInfo& status(EdgeHandle _vh);
// face
const Normal& normal(FaceHandle _fh) const;
void set_normal(FaceHandle _fh, const Normal& _n);
const Color& color(FaceHandle _fh) const;
void set_color(FaceHandle _fh, const Color& _c);
const StatusInfo& status(FaceHandle _vh) const;
StatusInfo& status(FaceHandle _vh);
void request_vertex_normals();
void request_vertex_colors();
void request_vertex_texcoords1D();
void request_vertex_texcoords2D();
void request_vertex_texcoords3D();
void request_vertex_status();
void request_halfedge_status();
void request_halfedge_normals();
void request_halfedge_colors();
void request_halfedge_texcoords1D();
void request_halfedge_texcoords2D();
void request_halfedge_texcoords3D();
void request_edge_status();
void request_edge_colors();
void request_face_normals();
void request_face_colors();
void request_face_status();
void request_face_texture_index();
void release_vertex_normals();
void release_vertex_colors();
void release_vertex_texcoords1D();
void release_vertex_texcoords2D();
void release_vertex_texcoords3D();
void release_vertex_status();
void release_halfedge_status();
void release_halfedge_normals();
void release_halfedge_colors();
void release_halfedge_texcoords1D();
void release_halfedge_texcoords2D();
void release_halfedge_texcoords3D();
void release_edge_status();
void release_edge_colors();
void release_face_normals();
void release_face_colors();
void release_face_status();
void release_face_texture_index();
bool has_vertex_normals() const;
bool has_vertex_colors() const;
bool has_vertex_texcoords1D() const;
bool has_vertex_texcoords2D() const;
bool has_vertex_texcoords3D() const;
bool has_vertex_status() const;
bool has_halfedge_status() const;
bool has_halfedge_normals() const;
bool has_halfedge_colors() const;
bool has_halfedge_texcoords1D() const;
bool has_halfedge_texcoords2D() const;
bool has_halfedge_texcoords3D() const;
bool has_edge_status() const;
bool has_edge_colors() const;
bool has_face_normals() const;
bool has_face_colors() const;
bool has_face_status() const;
bool has_face_texture_index() const;
public: // Property Management
template <typename T> void add_property( [VEHFM]PropHandleT<T>& _ph,
const std::string& _name = "" );
template <typename T> void remove_property( [VEHFM]PropHandleT<T>& );
template <typename T>
bool get_property_handle( [VEHFM]PropHandleT<T>& ph, const std::string& _n ) const;
template <typename T> PropertyT<T>& property( [VEHF]PropHandleT<T> _ph );
template <typename T> const PropertyT<T>& property( [VEHF]PropHandleT<T> _ph ) const;
template <typename T> PropertyT<T>& mproperty( MPropHandleT<T> _ph );
template <typename T> const PropertyT<T>& mproperty( MPropHandleT<T> _ph ) const;
template <typename T>
T& property( VPropHandleT<T> _ph, VertexHandle _vh );
template <typename T>
const T& property( VPropHandleT<T> _ph, VertexHandle _vh ) const;
template <typename T>
T& property( EPropHandleT<T> _ph, EdgeHandle _vh );
template <typename T>
const T& property( EPropHandleT<T> _ph, EdgeHandle _vh ) const;
template <typename T>
T& property( HPropHandleT<T> _ph, HalfedgeHandle _vh );
template <typename T>
const T& property( HPropHandleT<T> _ph, HalfedgeHandle _vh ) const;
template <typename T>
T& property( FPropHandleT<T> _ph, FaceHandle _vh );
template <typename T>
const T& property( FPropHandleT<T> _ph, FaceHandle _vh ) const;
template <typename T>
T& property( MPropHandleT<T> _ph );
template <typename T>
const T& property( MPropHandleT<T> _ph ) const;
public:
VertexHandle new_vertex();
VertexHandle new_vertex(const Point& _p);
VertexHandle new_vertex(const Vertex& _v);
HalfedgeHandle new_edge(VertexHandle _start_vertex_handle,
VertexHandle _end_vertex_handle);
FaceHandle new_face();
FaceHandle new_face(const Face& _f);
// --- iterators ---
KernelVertexIter vertices_begin();
KernelConstVertexIter vertices_begin() const;
KernelVertexIter vertices_end();
KernelConstVertexIter vertices_end() const;
KernelEdgeIter edges_begin();
KernelConstEdgeIter edges_begin() const;
KernelEdgeIter edges_end();
KernelConstEdgeIter edges_end() const;
KernelFaceIter faces_begin();
KernelConstFaceIter faces_begin() const;
KernelFaceIter faces_end();
KernelConstFaceIter faces_end() const;
private:
// --- private functions ---
KernelT(const KernelT& _rhs);
};
};
//=============================================================================
} // namespace Concepts
} // namespace OpenMesh
//=============================================================================
OpenMesh
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition MeshItems.hh:59
OpenMesh::Concepts
Descriptions of the concepts used in OpenMesh.
Definition MeshItems.hh:60
OpenMesh::Concepts::KernelT::prev_halfedge_handle
HalfedgeHandle prev_halfedge_handle(HalfedgeHandle _heh) const
Get the previous halfedge of the given halfedge.
OpenMesh::Concepts::KernelT::has_halfedge_colors
bool has_halfedge_colors() const
Is property available?
OpenMesh::Concepts::KernelT::set_color
void set_color(FaceHandle _fh, const Color &_c)
Set color.
OpenMesh::Concepts::KernelT::request_vertex_texcoords2D
void request_vertex_texcoords2D()
Request property.
OpenMesh::Concepts::KernelT::set_halfedge_handle
void set_halfedge_handle(FaceHandle _fh, HalfedgeHandle _heh)
Set one halfedge of the face.
OpenMesh::Concepts::KernelT::request_halfedge_texcoords3D
void request_halfedge_texcoords3D()
Request property.
OpenMesh::Concepts::KernelT::has_face_normals
bool has_face_normals() const
Is property available?
OpenMesh::Concepts::KernelT::halfedge_handle
HalfedgeHandle halfedge_handle(VertexHandle _vh) const
Get an outgoing halfedge of a given vertex.
OpenMesh::Concepts::KernelT::texcoord2D
const TexCoord2D & texcoord2D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords).
OpenMesh::Concepts::KernelT::request_halfedge_colors
void request_halfedge_colors()
Request property.
OpenMesh::Concepts::KernelT::remove_last_face
void remove_last_face()
Remove the last face imidiately, i.e.
Definition MeshKernel.hh:209
OpenMesh::Concepts::KernelT::request_vertex_normals
void request_vertex_normals()
Request property.
OpenMesh::Concepts::KernelT::set_normal
void set_normal(HalfedgeHandle _heh, const Normal &_n)
Set normal of the to vertex of the given Halfedge (per face per vertex normals).
OpenMesh::Concepts::KernelT::release_halfedge_colors
void release_halfedge_colors()
Remove property.
OpenMesh::Concepts::KernelT::normal
const Normal & normal(FaceHandle _fh) const
Get normal.
OpenMesh::Concepts::KernelT::property
T & property(MPropHandleT< T > _ph)
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::set_point
void set_point(Vertex &_v, const Point &_p)
Set the coordinate of a vertex.
OpenMesh::Concepts::KernelT::n_edges
size_t n_edges() const
Returns number of edges.
OpenMesh::Concepts::KernelT::property
PropertyT< T > & property([VEHF]PropHandleT< T > _ph)
Get property.
OpenMesh::Concepts::KernelT::texcoord2D
const TexCoord2D & texcoord2D(VertexHandle _vh) const
Get texture coordinate.
OpenMesh::Concepts::KernelT::Scalar
FinalMeshItems::Scalar Scalar
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:88
OpenMesh::Concepts::KernelT::request_halfedge_status
void request_halfedge_status()
Request property.
OpenMesh::Concepts::KernelT::KernelFaceIter
SomeIterator KernelFaceIter
This type depends on the container type in use.
Definition MeshKernel.hh:107
OpenMesh::Concepts::KernelT::set_texcoord3D
void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords).
OpenMesh::Concepts::KernelT::vertex_handle
VertexHandle vertex_handle(unsigned int _i) const
Get the i'th item.
OpenMesh::Concepts::KernelT::Color
FinalMeshItems::Color Color
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:90
OpenMesh::Concepts::KernelT::ccw_rotated_halfedge_handle
HalfedgeHandle ccw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Counter-clockwise rotate the given halfedge around its from vertex.
OpenMesh::Concepts::KernelT::normal
const Normal & normal(HalfedgeHandle _heh) const
Get normal of the to vertex of the given Halfedge (per face per vertex normals).
OpenMesh::Concepts::KernelT::faces_begin
KernelFaceIter faces_begin()
Kernel item iterator.
OpenMesh::Concepts::KernelT::release_halfedge_texcoords3D
void release_halfedge_texcoords3D()
Remove property.
OpenMesh::Concepts::KernelT::has_edge_colors
bool has_edge_colors() const
Is property available?
OpenMesh::Concepts::KernelT::KernelConstVertexIter
SomeIterator KernelConstVertexIter
This type depends on the container type in use.
Definition MeshKernel.hh:104
OpenMesh::Concepts::KernelT::request_edge_status
void request_edge_status()
Request property.
OpenMesh::Concepts::KernelT::clear
void clear()
Delete all items, i.e.
OpenMesh::Concepts::KernelT::faces_end
KernelConstFaceIter faces_end() const
Kernel item iterator.
OpenMesh::Concepts::KernelT::release_vertex_colors
void release_vertex_colors()
Remove property.
OpenMesh::Concepts::KernelT::texcoord3D
const TexCoord3D & texcoord3D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords).
OpenMesh::Concepts::KernelT::KernelEdgeIter
SomeIterator KernelEdgeIter
This type depends on the container type in use.
Definition MeshKernel.hh:105
OpenMesh::Concepts::KernelT::remove_last_vertex
void remove_last_vertex()
Remove the last vertex imidiately, i.e.
Definition MeshKernel.hh:201
OpenMesh::Concepts::KernelT::new_face
FaceHandle new_face()
Adding a new face.
OpenMesh::Concepts::KernelT::set_texcoord2D
void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords).
OpenMesh::Concepts::KernelT::KernelConstEdgeIter
SomeIterator KernelConstEdgeIter
This type depends on the container type in use.
Definition MeshKernel.hh:106
OpenMesh::Concepts::KernelT::release_face_texture_index
void release_face_texture_index()
Remove property.
OpenMesh::Concepts::KernelT::status
const StatusInfo & status(FaceHandle _vh) const
Get status.
OpenMesh::Concepts::KernelT::release_face_normals
void release_face_normals()
Remove property.
OpenMesh::Concepts::KernelT::vertices_empty
bool vertices_empty() const
Is the vertex container empty?
OpenMesh::Concepts::KernelT::EdgeHandle
FinalMeshItems::EdgeHandle EdgeHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:94
OpenMesh::Concepts::KernelT::release_vertex_normals
void release_vertex_normals()
Remove property.
OpenMesh::Concepts::KernelT::set_color
void set_color(VertexHandle _vh, const Color &_c)
Set color.
OpenMesh::Concepts::KernelT::face_handle
FaceHandle face_handle(unsigned int _i) const
Get the i'th item.
OpenMesh::Concepts::KernelT::request_face_colors
void request_face_colors()
Request property.
OpenMesh::Concepts::KernelT::color
const Color & color(HalfedgeHandle _heh) const
Get color.
OpenMesh::Concepts::KernelT::release_halfedge_texcoords2D
void release_halfedge_texcoords2D()
Remove property.
OpenMesh::Concepts::KernelT::edge
const Edge & edge(EdgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:148
OpenMesh::Concepts::KernelT::request_face_texture_index
void request_face_texture_index()
Request property.
OpenMesh::Concepts::KernelT::faces_begin
KernelConstFaceIter faces_begin() const
Kernel item iterator.
OpenMesh::Concepts::KernelT::new_edge
HalfedgeHandle new_edge(VertexHandle _start_vertex_handle, VertexHandle _end_vertex_handle)
Add a new edge from _start_vertex_handle to _end_vertex_handle.
OpenMesh::Concepts::KernelT::set_texcoord1D
void set_texcoord1D(VertexHandle _vh, const TexCoord1D &_t)
Set texture coordinate.
OpenMesh::Concepts::KernelT::vertices_end
KernelVertexIter vertices_end()
Kernel item iterator.
OpenMesh::Concepts::KernelT::request_halfedge_texcoords2D
void request_halfedge_texcoords2D()
Request property.
OpenMesh::Concepts::KernelT::color
const Color & color(VertexHandle _vh) const
Get color.
OpenMesh::Concepts::KernelT::request_vertex_status
void request_vertex_status()
Request property.
OpenMesh::Concepts::KernelT::halfedge_handle
HalfedgeHandle halfedge_handle(EdgeHandle _eh, unsigned int _i) const
Get the first or second halfedge of the given edge.
OpenMesh::Concepts::KernelT::TexCoord
FinalMeshItems::TexCoord TexCoord
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:91
OpenMesh::Concepts::KernelT::add_property
void add_property([VEHFM]PropHandleT< T > &_ph, const std::string &_name="")
Add property.
OpenMesh::Concepts::KernelT::point
const Point & point(VertexHandle _vh) const
Get the coordinate of a vertex.
OpenMesh::Concepts::KernelT::halfedge_handle
HalfedgeHandle halfedge_handle(FaceHandle _fh) const
Get a halfedge belonging to the face.
OpenMesh::Concepts::KernelT::request_vertex_colors
void request_vertex_colors()
Request property.
OpenMesh::Concepts::KernelT::new_vertex
VertexHandle new_vertex(const Vertex &_v)
Add a new vertex (copied from the given one).
OpenMesh::Concepts::KernelT::~KernelT
~KernelT()
Destructor.
OpenMesh::Concepts::KernelT::property
T & property(HPropHandleT< T > _ph, HalfedgeHandle _vh)
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::property
const PropertyT< T > & property([VEHF]PropHandleT< T > _ph) const
Get property.
OpenMesh::Concepts::KernelT::edge_handle
EdgeHandle edge_handle(HalfedgeHandle _heh) const
Get the edge the current halfedge it contained in.
OpenMesh::Concepts::KernelT::property
const T & property(HPropHandleT< T > _ph, HalfedgeHandle _vh) const
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::property
T & property(EPropHandleT< T > _ph, EdgeHandle _vh)
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::status
const StatusInfo & status(HalfedgeHandle _vh) const
Get status.
OpenMesh::Concepts::KernelT::get_property_handle
bool get_property_handle([VEHFM]PropHandleT< T > &ph, const std::string &_n) const
Get property handle by name.
OpenMesh::Concepts::KernelT::new_vertex
VertexHandle new_vertex(const Point &_p)
Add a new vertex with a given point coordinate.
OpenMesh::Concepts::KernelT::release_vertex_texcoords1D
void release_vertex_texcoords1D()
Remove property.
OpenMesh::Concepts::KernelT::status
StatusInfo & status(VertexHandle _vh)
Get status.
OpenMesh::Concepts::KernelT::halfedge
const Halfedge & halfedge(HalfedgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:146
OpenMesh::Concepts::KernelT::KernelConstFaceIter
SomeIterator KernelConstFaceIter
This type depends on the container type in use.
Definition MeshKernel.hh:108
OpenMesh::Concepts::KernelT::face_handle
FaceHandle face_handle(HalfedgeHandle _heh) const
Get the face the halfedge belongs to.
OpenMesh::Concepts::KernelT::release_vertex_status
void release_vertex_status()
Remove property.
OpenMesh::Concepts::KernelT::halfedge_handle
HalfedgeHandle halfedge_handle(unsigned int _i) const
Get the i'th item.
OpenMesh::Concepts::KernelT::opposite_halfedge_handle
HalfedgeHandle opposite_halfedge_handle(HalfedgeHandle _heh) const
Get the opposite halfedge.
OpenMesh::Concepts::KernelT::status
StatusInfo & status(FaceHandle _vh)
Get status.
OpenMesh::Concepts::KernelT::handle
HalfedgeHandle handle(const Halfedge &_he) const
Translate item to handle.
OpenMesh::Concepts::KernelT::vertices_begin
KernelConstVertexIter vertices_begin() const
Kernel item iterator.
OpenMesh::Concepts::KernelT::Halfedge
FinalMeshItems::Halfedge Halfedge
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:84
OpenMesh::Concepts::KernelT::status
const StatusInfo & status(VertexHandle _vh) const
Get status.
OpenMesh::Concepts::KernelT::garbage_collection
void garbage_collection()
Remove all items that are marked as deleted from the corresponding containers.
OpenMesh::Concepts::KernelT::set_halfedge_handle
void set_halfedge_handle(VertexHandle _vh, HalfedgeHandle _heh)
Set the outgoing halfedge handle of a given vertex.
OpenMesh::Concepts::KernelT::release_edge_colors
void release_edge_colors()
Remove property.
OpenMesh::Concepts::KernelT::has_face_texture_index
bool has_face_texture_index() const
Is property available?
OpenMesh::Concepts::KernelT::handle
FaceHandle handle(const Face &_f) const
Translate item to handle.
OpenMesh::Concepts::KernelT::n_vertices
size_t n_vertices() const
Returns number of vertices.
OpenMesh::Concepts::KernelT::KernelT
KernelT()
Default constructor.
Definition MeshKernel.hh:114
OpenMesh::Concepts::KernelT::KernelVertexIter
SomeIterator KernelVertexIter
This type depends on the container type in use.
Definition MeshKernel.hh:103
OpenMesh::Concepts::KernelT::new_face
FaceHandle new_face(const Face &_f)
Adding a new face (copied from a _f).
OpenMesh::Concepts::KernelT::faces_end
KernelFaceIter faces_end()
Kernel item iterator.
OpenMesh::Concepts::KernelT::has_vertex_colors
bool has_vertex_colors() const
Is property available?
OpenMesh::Concepts::KernelT::has_halfedge_status
bool has_halfedge_status() const
Is property available?
OpenMesh::Concepts::KernelT::edges_begin
KernelConstEdgeIter edges_begin() const
Kernel item iterator.
OpenMesh::Concepts::KernelT::cw_rotated_halfedge_handle
HalfedgeHandle cw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Clockwise rotate the given halfedge around its from vertex.
OpenMesh::Concepts::KernelT::operator=
KernelT & operator=(const KernelT &_rhs)
Assignment operator.
OpenMesh::Concepts::KernelT::texcoord1D
const TexCoord1D & texcoord1D(VertexHandle _vh) const
Get texture coordinate.
OpenMesh::Concepts::KernelT::release_face_status
void release_face_status()
Remove property.
OpenMesh::Concepts::KernelT::status
StatusInfo & status(EdgeHandle _vh)
Get status.
OpenMesh::Concepts::KernelT::vertices_end
KernelConstVertexIter vertices_end() const
Kernel item iterator.
OpenMesh::Concepts::KernelT::new_vertex
VertexHandle new_vertex()
Add a new (default) vertex.
OpenMesh::Concepts::KernelT::edges_begin
KernelEdgeIter edges_begin()
Kernel item iterator.
OpenMesh::Concepts::KernelT::request_vertex_texcoords1D
void request_vertex_texcoords1D()
Request property.
OpenMesh::Concepts::KernelT::set_texcoord1D
void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords).
OpenMesh::Concepts::KernelT::release_halfedge_normals
void release_halfedge_normals()
Remove property.
OpenMesh::Concepts::KernelT::request_vertex_texcoords3D
void request_vertex_texcoords3D()
Request property.
OpenMesh::Concepts::KernelT::property
T & property(VPropHandleT< T > _ph, VertexHandle _vh)
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::edges_end
KernelConstEdgeIter edges_end() const
Kernel item iterator.
OpenMesh::Concepts::KernelT::has_vertex_normals
bool has_vertex_normals() const
Is property available?
OpenMesh::Concepts::KernelT::edge_handle
EdgeHandle edge_handle(unsigned int _i) const
Get the i'th item.
OpenMesh::Concepts::KernelT::has_face_status
bool has_face_status() const
Is property available?
OpenMesh::Concepts::KernelT::release_face_colors
void release_face_colors()
Remove property.
OpenMesh::Concepts::KernelT::halfedge
Halfedge & halfedge(HalfedgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:147
OpenMesh::Concepts::KernelT::status
StatusInfo & status(HalfedgeHandle _vh)
Get status.
OpenMesh::Concepts::KernelT::property
T & property(FPropHandleT< T > _ph, FaceHandle _vh)
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::mproperty
PropertyT< T > & mproperty(MPropHandleT< T > _ph)
Get property.
OpenMesh::Concepts::KernelT::has_halfedge_normals
bool has_halfedge_normals() const
Is property available?
OpenMesh::Concepts::KernelT::release_edge_status
void release_edge_status()
Remove property.
OpenMesh::Concepts::KernelT::set_vertex_handle
void set_vertex_handle(HalfedgeHandle _heh, VertexHandle _vh)
Set the to-vertex-handle of the halfedge.
OpenMesh::Concepts::KernelT::set_face_handle
void set_face_handle(HalfedgeHandle _heh, FaceHandle _fh)
Set the face the halfedge belongs to.
OpenMesh::Concepts::KernelT::has_halfedge_texcoords1D
bool has_halfedge_texcoords1D() const
Is property available?
OpenMesh::Concepts::KernelT::FaceHandle
FinalMeshItems::FaceHandle FaceHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:95
OpenMesh::Concepts::KernelT::set_next_halfedge_handle
void set_next_halfedge_handle(HalfedgeHandle _heh, HalfedgeHandle _nheh)
Set the next halfedge handle.
OpenMesh::Concepts::KernelT::has_edge_status
bool has_edge_status() const
Is property available?
OpenMesh::Concepts::KernelT::texcoord3D
const TexCoord3D & texcoord3D(VertexHandle _vh) const
Get texture coordinate.
OpenMesh::Concepts::KernelT::set_normal
void set_normal(FaceHandle _fh, const Normal &_n)
Set normal.
OpenMesh::Concepts::KernelT::HalfedgeHandle
FinalMeshItems::HalfedgeHandle HalfedgeHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:93
OpenMesh::Concepts::KernelT::set_point
void set_point(VertexHandle _vh, const Point &_p)
Set the coordinate of a vertex.
OpenMesh::Concepts::KernelT::edges_empty
bool edges_empty() const
Is the edge container empty?
OpenMesh::Concepts::KernelT::point
Point & point(VertexHandle _vh)
Convenience function.
OpenMesh::Concepts::KernelT::release_halfedge_status
void release_halfedge_status()
Remove property.
OpenMesh::Concepts::KernelT::request_face_status
void request_face_status()
Request property.
OpenMesh::Concepts::KernelT::set_normal
void set_normal(VertexHandle _vh, const Normal &_n)
Set normal.
OpenMesh::Concepts::KernelT::release_halfedge_texcoords1D
void release_halfedge_texcoords1D()
Remove property.
OpenMesh::Concepts::KernelT::reserve
void reserve(size_t _n_vertices, size_t _n_edges, size_t _n_faces)
Reserve memory for vertices, edges, faces.
OpenMesh::Concepts::KernelT::clean
void clean()
Delete all items, i.e.
OpenMesh::Concepts::KernelT::vertices_begin
KernelVertexIter vertices_begin()
Kernel item iterator.
OpenMesh::Concepts::KernelT::handle
VertexHandle handle(const Vertex &_v) const
Translate item to handle.
OpenMesh::Concepts::KernelT::has_face_colors
bool has_face_colors() const
Is property available?
OpenMesh::Concepts::KernelT::vertex
Vertex & vertex(VertexHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:145
OpenMesh::Concepts::KernelT::point
const Point & point(const Vertex &_v) const
Get the coordinate of a vertex.
OpenMesh::Concepts::KernelT::has_halfedge_texcoords3D
bool has_halfedge_texcoords3D() const
Is property available?
OpenMesh::Concepts::KernelT::vertex
const Vertex & vertex(VertexHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:144
OpenMesh::Concepts::KernelT::face
const Face & face(FaceHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:150
OpenMesh::Concepts::KernelT::property
const T & property(VPropHandleT< T > _ph, VertexHandle _vh) const
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::release_vertex_texcoords3D
void release_vertex_texcoords3D()
Remove property.
OpenMesh::Concepts::KernelT::set_color
void set_color(EdgeHandle _eh, const Color &_c)
Set color.
OpenMesh::Concepts::KernelT::next_halfedge_handle
HalfedgeHandle next_halfedge_handle(HalfedgeHandle _heh) const
Get the next halfedge handle.
OpenMesh::Concepts::KernelT::handle
EdgeHandle handle(const Edge &_e) const
Translate item to handle.
OpenMesh::Concepts::KernelT::has_vertex_texcoords1D
bool has_vertex_texcoords1D() const
Is property available?
OpenMesh::Concepts::KernelT::has_vertex_status
bool has_vertex_status() const
Is property available?
OpenMesh::Concepts::KernelT::VertexHandle
FinalMeshItems::VertexHandle VertexHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:92
OpenMesh::Concepts::KernelT::halfedges_empty
bool halfedges_empty() const
Is the halfedge container empty (should be the same as edges_empty()).
OpenMesh::Concepts::KernelT::from_vertex_handle
VertexHandle from_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge starts from (implemented as to-handle of the opposite halfedge,...
OpenMesh::Concepts::KernelT::property
const T & property(EPropHandleT< T > _ph, EdgeHandle _vh) const
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::remove_last_edge
void remove_last_edge()
Remove the last edge imidiately, i.e.
Definition MeshKernel.hh:205
OpenMesh::Concepts::KernelT::has_vertex_texcoords2D
bool has_vertex_texcoords2D() const
Is property available?
OpenMesh::Concepts::KernelT::remove_property
void remove_property([VEHFM]PropHandleT< T > &)
Remove property.
OpenMesh::Concepts::KernelT::color
const Color & color(EdgeHandle _eh) const
Get color.
OpenMesh::Concepts::KernelT::set_texcoord2D
void set_texcoord2D(VertexHandle _vh, const TexCoord2D &_t)
Set texture coordinate.
OpenMesh::Concepts::KernelT::set_color
void set_color(HalfedgeHandle _heh, const Color &_c)
Set color.
OpenMesh::Concepts::KernelT::status
const StatusInfo & status(EdgeHandle _vh) const
Get status.
OpenMesh::Concepts::KernelT::face
Face & face(FaceHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:151
OpenMesh::Concepts::KernelT::Point
FinalMeshItems::Point Point
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:87
OpenMesh::Concepts::KernelT::Normal
FinalMeshItems::Normal Normal
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:89
OpenMesh::Concepts::KernelT::release_vertex_texcoords2D
void release_vertex_texcoords2D()
Remove property.
OpenMesh::Concepts::KernelT::faces_empty
bool faces_empty() const
Is the face container empty?
OpenMesh::Concepts::KernelT::request_halfedge_normals
void request_halfedge_normals()
Request property.
OpenMesh::Concepts::KernelT::has_halfedge_texcoords2D
bool has_halfedge_texcoords2D() const
Is property available?
OpenMesh::Concepts::KernelT::Edge
FinalMeshItems::Edge Edge
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:85
OpenMesh::Concepts::KernelT::edge
Edge & edge(EdgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref()).
Definition MeshKernel.hh:149
OpenMesh::Concepts::KernelT::n_faces
size_t n_faces() const
Returns number of faces.
OpenMesh::Concepts::KernelT::property
const T & property(FPropHandleT< T > _ph, FaceHandle _vh) const
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::normal
const Normal & normal(VertexHandle _vh) const
Get normal.
OpenMesh::Concepts::KernelT::Vertex
FinalMeshItems::Vertex Vertex
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:83
OpenMesh::Concepts::KernelT::edges_end
KernelEdgeIter edges_end()
Kernel item iterator.
OpenMesh::Concepts::KernelT::request_edge_colors
void request_edge_colors()
Request property.
OpenMesh::Concepts::KernelT::texcoord1D
const TexCoord1D & texcoord1D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords).
OpenMesh::Concepts::KernelT::request_halfedge_texcoords1D
void request_halfedge_texcoords1D()
Request property.
OpenMesh::Concepts::KernelT::n_halfedges
size_t n_halfedges() const
Returns number of halfedges (should be 2*n_edges()).
OpenMesh::Concepts::KernelT::Face
FinalMeshItems::Face Face
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:86
OpenMesh::Concepts::KernelT::mproperty
const PropertyT< T > & mproperty(MPropHandleT< T > _ph) const
Get property.
OpenMesh::Concepts::KernelT::color
const Color & color(FaceHandle _fh) const
Get color.
OpenMesh::Concepts::KernelT::request_face_normals
void request_face_normals()
Request property.
OpenMesh::Concepts::KernelT::has_vertex_texcoords3D
bool has_vertex_texcoords3D() const
Is property available?
OpenMesh::Concepts::KernelT::property
const T & property(MPropHandleT< T > _ph) const
Get value for item represented by the handle.
OpenMesh::Concepts::KernelT::to_vertex_handle
VertexHandle to_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge points to.
OpenMesh::Concepts::KernelT::set_texcoord3D
void set_texcoord3D(VertexHandle _vh, const TexCoord3D &_t)
Set texture coordinate.
OpenMesh::PropertyT
Default property class for any type T.
Definition Property.hh:93
OpenMesh::VPropHandleT
Handle representing a vertex property.
Definition Property.hh:417
OpenMesh::HPropHandleT
Handle representing a halfedge property.
Definition Property.hh:432
OpenMesh::EPropHandleT
Handle representing an edge property.
Definition Property.hh:447
OpenMesh::FPropHandleT
Handle representing a face property.
Definition Property.hh:462
OpenMesh::MPropHandleT
Handle representing a mesh property.
Definition Property.hh:477