OpenMesh
OpenMesh::TriMesh_ArrayKernelT< Traits > Class Template Reference

Triangle mesh based on the ArrayKernel. More...

#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>

Inheritance diagram for OpenMesh::TriMesh_ArrayKernelT< Traits >:
Collaboration diagram for OpenMesh::TriMesh_ArrayKernelT< Traits >:

Additional Inherited Members

- Public Types inherited from OpenMesh::TriMeshT< Kernel >
typedef TriMeshT< Kernel > This
 
typedef PolyMeshT< Kernel > PolyMesh
 
typedef PolyMesh::Scalar Scalar
 
typedef PolyMesh::Point Point
 
typedef PolyMesh::Normal Normal
 
typedef PolyMesh::Color Color
 
typedef PolyMesh::TexCoord1D TexCoord1D
 
typedef PolyMesh::TexCoord2D TexCoord2D
 
typedef PolyMesh::TexCoord3D TexCoord3D
 
typedef PolyMesh::Vertex Vertex
 
typedef PolyMesh::Halfedge Halfedge
 
typedef PolyMesh::Edge Edge
 
typedef PolyMesh::Face Face
 
typedef PolyMesh::VertexHandle VertexHandle
 
typedef PolyMesh::HalfedgeHandle HalfedgeHandle
 
typedef PolyMesh::EdgeHandle EdgeHandle
 
typedef PolyMesh::FaceHandle FaceHandle
 
typedef PolyMesh::VertexIter VertexIter
 
typedef PolyMesh::ConstVertexIter ConstVertexIter
 
typedef PolyMesh::EdgeIter EdgeIter
 
typedef PolyMesh::ConstEdgeIter ConstEdgeIter
 
typedef PolyMesh::FaceIter FaceIter
 
typedef PolyMesh::ConstFaceIter ConstFaceIter
 
typedef PolyMesh::VertexVertexIter VertexVertexIter
 
typedef PolyMesh::VertexOHalfedgeIter VertexOHalfedgeIter
 
typedef PolyMesh::VertexIHalfedgeIter VertexIHalfedgeIter
 
typedef PolyMesh::VertexEdgeIter VertexEdgeIter
 
typedef PolyMesh::VertexFaceIter VertexFaceIter
 
typedef PolyMesh::FaceVertexIter FaceVertexIter
 
typedef PolyMesh::FaceHalfedgeIter FaceHalfedgeIter
 
typedef PolyMesh::FaceEdgeIter FaceEdgeIter
 
typedef PolyMesh::FaceFaceIter FaceFaceIter
 
typedef PolyMesh::ConstVertexVertexIter ConstVertexVertexIter
 
typedef PolyMesh::ConstVertexOHalfedgeIter ConstVertexOHalfedgeIter
 
typedef PolyMesh::ConstVertexIHalfedgeIter ConstVertexIHalfedgeIter
 
typedef PolyMesh::ConstVertexEdgeIter ConstVertexEdgeIter
 
typedef PolyMesh::ConstVertexFaceIter ConstVertexFaceIter
 
typedef PolyMesh::ConstFaceVertexIter ConstFaceVertexIter
 
typedef PolyMesh::ConstFaceHalfedgeIter ConstFaceHalfedgeIter
 
typedef PolyMesh::ConstFaceEdgeIter ConstFaceEdgeIter
 
typedef PolyMesh::ConstFaceFaceIter ConstFaceFaceIter
 
enum  { IsPolyMesh = 0 }
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
enum  { IsTriMesh = 1 }
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
- Public Types inherited from OpenMesh::PolyMeshT< Kernel >
typedef PolyMeshT< Kernel > This
 Self type. Used to specify iterators/circulators.
 
typedef Kernel::VertexHandle VertexHandle
 Handle for referencing the corresponding item.
 
typedef Kernel::HalfedgeHandle HalfedgeHandle
 
typedef Kernel::EdgeHandle EdgeHandle
 
typedef Kernel::FaceHandle FaceHandle
 
typedef Kernel::VertexIter VertexIter
 
typedef Kernel::HalfedgeIter HalfedgeIter
 
typedef Kernel::EdgeIter EdgeIter
 
typedef Kernel::FaceIter FaceIter
 
typedef Kernel::ConstVertexIter ConstVertexIter
 
typedef Kernel::ConstHalfedgeIter ConstHalfedgeIter
 
typedef Kernel::ConstEdgeIter ConstEdgeIter
 
typedef Kernel::ConstFaceIter ConstFaceIter
 
typedef Kernel::Scalar Scalar
 Scalar type.
 
typedef Kernel::Point Point
 Coordinate type.
 
typedef Kernel::Normal Normal
 Normal type.
 
typedef Kernel::Color Color
 Color type.
 
typedef Kernel::TexCoord1D TexCoord1D
 TexCoord1D type.
 
typedef Kernel::TexCoord2D TexCoord2D
 TexCoord2D type.
 
typedef Kernel::TexCoord3D TexCoord3D
 TexCoord3D type.
 
typedef Kernel::Vertex Vertex
 Vertex type.
 
typedef Kernel::Halfedge Halfedge
 Halfedge type.
 
typedef Kernel::Edge Edge
 Edge type.
 
typedef Kernel::Face Face
 Face type.
 
typedef Kernel::VertexVertexIter VertexVertexIter
 Circulator.
 
typedef Kernel::VertexOHalfedgeIter VertexOHalfedgeIter
 Circulator.
 
typedef Kernel::VertexIHalfedgeIter VertexIHalfedgeIter
 Circulator.
 
typedef Kernel::VertexEdgeIter VertexEdgeIter
 Circulator.
 
typedef Kernel::VertexFaceIter VertexFaceIter
 Circulator.
 
typedef Kernel::FaceVertexIter FaceVertexIter
 Circulator.
 
typedef Kernel::FaceHalfedgeIter FaceHalfedgeIter
 Circulator.
 
typedef Kernel::FaceEdgeIter FaceEdgeIter
 Circulator.
 
typedef Kernel::FaceFaceIter FaceFaceIter
 Circulator.
 
typedef Kernel::ConstVertexVertexIter ConstVertexVertexIter
 Circulator.
 
typedef Kernel::ConstVertexOHalfedgeIter ConstVertexOHalfedgeIter
 Circulator.
 
typedef Kernel::ConstVertexIHalfedgeIter ConstVertexIHalfedgeIter
 Circulator.
 
typedef Kernel::ConstVertexEdgeIter ConstVertexEdgeIter
 Circulator.
 
typedef Kernel::ConstVertexFaceIter ConstVertexFaceIter
 Circulator.
 
typedef Kernel::ConstFaceVertexIter ConstFaceVertexIter
 Circulator.
 
typedef Kernel::ConstFaceHalfedgeIter ConstFaceHalfedgeIter
 Circulator.
 
typedef Kernel::ConstFaceEdgeIter ConstFaceEdgeIter
 Circulator.
 
typedef Kernel::ConstFaceFaceIter ConstFaceFaceIter
 Circulator.
 
enum  { IsPolyMesh = 1 }
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
enum  { IsTriMesh = 0 }
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
- Public Member Functions inherited from OpenMesh::TriMeshT< Kernel >
 TriMeshT ()
 Default constructor.
 
virtual ~TriMeshT ()
 Destructor.
 
HalfedgeHandle vertex_split (Point _v0_point, VertexHandle _v1, VertexHandle _vl, VertexHandle _vr)
 Vertex Split: inverse operation to collapse(). More...
 
HalfedgeHandle vertex_split (VertexHandle _v0, VertexHandle _v1, VertexHandle _vl, VertexHandle _vr)
 Vertex Split: inverse operation to collapse(). More...
 
VertexHandle split (EdgeHandle _eh, const Point &_p)
 Edge split (= 2-to-4 split) More...
 
VertexHandle split_copy (EdgeHandle _eh, const Point &_p)
 Edge split (= 2-to-4 split) More...
 
void split (EdgeHandle _eh, VertexHandle _vh)
 Edge split (= 2-to-4 split) More...
 
void split_copy (EdgeHandle _eh, VertexHandle _vh)
 Edge split (= 2-to-4 split) More...
 
VertexHandle split (FaceHandle _fh, const Point &_p)
 Face split (= 1-to-3 split, calls corresponding PolyMeshT function). More...
 
VertexHandle split_copy (FaceHandle _fh, const Point &_p)
 Face split (= 1-to-3 split, calls corresponding PolyMeshT function). More...
 
void split (FaceHandle _fh, VertexHandle _vh)
 Face split (= 1-to-3 split, calls corresponding PolyMeshT function). More...
 
void split_copy (FaceHandle _fh, VertexHandle _vh)
 Face split (= 1-to-3 split, calls corresponding PolyMeshT function). More...
 
Normal calc_face_normal (FaceHandle _fh) const
 Calculate normal vector for face _fh (specialized for TriMesh). More...
 
- Public Member Functions inherited from OpenMesh::PolyMeshT< Kernel >
VertexHandle new_vertex ()
 Uses default copy and assignment operator. More...
 
VertexHandle new_vertex (const Point &_p)
 Adds a new vertex initialized to a custom position. More...
 
VertexHandle new_vertex_dirty (const Point &_p)
 Same as new_vertex(const Point&) but never shrinks, only enlarges the vertex property vectors. More...
 
VertexHandle add_vertex (const Point &_p)
 Alias for new_vertex(const Point&).
 
VertexHandle add_vertex_dirty (const Point &_p)
 Alias for new_vertex_dirty().
 
void calc_edge_vector (EdgeHandle _eh, Normal &_edge_vec) const
 Calculates the edge vector as the vector defined by the halfedge with id #0 (see below)
 
Normal calc_edge_vector (EdgeHandle _eh) const
 Calculates the edge vector as the vector defined by the halfedge with id #0 (see below)
 
void calc_edge_vector (HalfedgeHandle _heh, Normal &_edge_vec) const
 Calculates the edge vector as the difference of the the points defined by to_vertex_handle() and from_vertex_handle()
 
Normal calc_edge_vector (HalfedgeHandle _heh) const
 Calculates the edge vector as the difference of the the points defined by to_vertex_handle() and from_vertex_handle()
 
Scalar calc_edge_length (EdgeHandle _eh) const
 
Scalar calc_edge_length (HalfedgeHandle _heh) const
 Calculates the length of the edge _heh.
 
Scalar calc_edge_sqr_length (EdgeHandle _eh) const
 
Scalar calc_edge_sqr_length (HalfedgeHandle _heh) const
 
void calc_sector_vectors (HalfedgeHandle _in_heh, Normal &_vec0, Normal &_vec1) const
 defines a consistent representation of a sector geometry: the halfedge _in_heh defines the sector orientation the vertex pointed by _in_heh defines the sector center _vec0 and _vec1 are resp. More...
 
Scalar calc_sector_angle (HalfedgeHandle _in_heh) const
 calculates the sector angle. More...
 
void calc_sector_normal (HalfedgeHandle _in_heh, Normal &_sector_normal) const
 calculates the normal (non-normalized) of the face sector defined by the angle <(_in_heh,next_halfedge(_in_heh))
 
Scalar calc_sector_area (HalfedgeHandle _in_heh) const
 calculates the area of the face sector defined by the angle <(_in_heh,next_halfedge(_in_heh)) NOTE: special cases (e.g. More...
 
Scalar calc_dihedral_angle_fast (HalfedgeHandle _heh) const
 calculates the dihedral angle on the halfedge _heh More...
 
Scalar calc_dihedral_angle_fast (EdgeHandle _eh) const
 calculates the dihedral angle on the edge _eh More...
 
Scalar calc_dihedral_angle (HalfedgeHandle _heh) const
 
Scalar calc_dihedral_angle (EdgeHandle _eh) const
 
unsigned int find_feature_edges (Scalar _angle_tresh=OpenMesh::deg_to_rad(44.0))
 tags an edge as a feature if its dihedral angle is larger than _angle_tresh returns the number of the found feature edges, requires edge_status property
 
void split (FaceHandle _fh, const Point &_p)
 Face split (= 1-to-n split)
 
void split (FaceHandle _fh, VertexHandle _vh)
 
void split (EdgeHandle _eh, const Point &_p)
 
void split (EdgeHandle _eh, VertexHandle _vh)
 
void update_normals ()
 Compute normals for all primitives. More...
 
void update_normal (FaceHandle _fh)
 Update normal for face _fh.
 
void update_face_normals ()
 Update normal vectors for all faces. More...
 
Normal calc_face_normal (const Point &_p0, const Point &_p1, const Point &_p2) const
 Calculate normal vector for face (_p0, _p1, _p2). More...
 
void calc_face_centroid (FaceHandle _fh, Point &_pt) const
 calculates the average of the vertices defining _fh
 
Point calc_face_centroid (FaceHandle _fh) const
 Computes and returns the average of the vertices defining _gh.
 
void update_normal (HalfedgeHandle _heh, const double _feature_angle=0.8)
 Update normal for halfedge _heh.
 
void update_halfedge_normals (const double _feature_angle=0.8)
 Update normal vectors for all halfedges. More...
 
virtual Normal calc_halfedge_normal (HalfedgeHandle _heh, const double _feature_angle=0.8) const
 Calculate halfedge normal for one specific halfedge. More...
 
bool is_estimated_feature_edge (HalfedgeHandle _heh, const double _feature_angle) const
 identifies feature edges w.r.t. More...
 
void update_normal (VertexHandle _vh)
 Update normal for vertex _vh.
 
void update_vertex_normals ()
 Update normal vectors for all vertices. More...
 
Normal calc_vertex_normal (VertexHandle _vh) const
 Calculate vertex normal for one specific vertex. More...
 
void calc_vertex_normal_fast (VertexHandle _vh, Normal &_n) const
 Different methods for calculation of the normal at _vh: More...
 
void calc_vertex_normal_correct (VertexHandle _vh, Normal &_n) const
 Compute normals for all primitives. More...
 
void calc_vertex_normal_loop (VertexHandle _vh, Normal &_n) const
 Compute normals for all primitives. More...
 
- Static Public Member Functions inherited from OpenMesh::TriMeshT< Kernel >
static bool is_polymesh ()
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
static bool is_trimesh ()
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
- Static Public Member Functions inherited from OpenMesh::PolyMeshT< Kernel >
static bool is_polymesh ()
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 
static bool is_trimesh ()
 Determine whether this is a PolyMeshT or TriMeshT ( This function does not check the per face vertex count! It only checks if the datatype is PolyMeshT or TriMeshT )
 

Detailed Description

template<class Traits = DefaultTraits>
class OpenMesh::TriMesh_ArrayKernelT< Traits >

Triangle mesh based on the ArrayKernel.

See also
OpenMesh::TriMeshT
OpenMesh::ArrayKernelT

The documentation for this class was generated from the following file:

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