52 #ifndef OPENMESH_TRIMESH_HH 
   53 #define OPENMESH_TRIMESH_HH 
   59 #include <OpenMesh/Core/System/config.h> 
   60 #include <OpenMesh/Core/Mesh/PolyMeshT.hh> 
   61 #include <OpenMesh/Core/Mesh/Tags.hh> 
   90 template <
class Kernel>
 
  102   static constexpr 
bool is_polymesh() { 
return false; }
 
  104   static constexpr 
bool is_trimesh()  { 
return true;  }
 
  106   enum { IsPolyMesh = 0 };
 
  107   enum { IsTriMesh  = 1 };
 
  220   { 
return PolyMesh::vertex_split(this->
add_vertex(_v0_point), _v1, _vl, _vr); }
 
  264   { 
return PolyMesh::vertex_split(_v0, _v1, _vl, _vr); }
 
  305     Kernel::split(_eh, _vh);
 
  318     Kernel::split_copy(_eh, _vh);
 
  376     const bool split0 = !this->is_boundary(eh0);
 
  377     const bool split1 = !this->is_boundary(eh1);
 
  378     const bool split2 = !this->is_boundary(eh2);
 
  381     this->delete_face(_fh);
 
  397     this->add_face(v0 , p0, v1);
 
  398     this->add_face(p2, v0 , v2);
 
  399     this->add_face(v2,v1,p1);
 
  400     this->add_face(v2 , v0, v1);
 
  421   { PolyMesh::split_copy(_fh, _vh); }
 
  447 #if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_TRIMESH_C) 
  448 #define OPENMESH_TRIMESH_TEMPLATES 
  449 #include "TriMeshT_impl.hh" 
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
 
Handle for a face entity.
Definition: Handles.hh:142
 
Polygonal mesh based on the ArrayKernel.
Definition: PolyMesh_ArrayKernelT.hh:96
 
Base type for a polygonal mesh.
Definition: PolyMeshT.hh:91
 
Kernel::Vertex Vertex
Vertex type.
Definition: PolyMeshT.hh:124
 
Kernel::FaceEdgeIter FaceEdgeIter
Circulator.
Definition: PolyMeshT.hh:169
 
Kernel::ConstFaceIter ConstFaceIter
Scalar type.
Definition: PolyMeshT.hh:151
 
Kernel::VertexHandle VertexHandle
Handle for referencing the corresponding item.
Definition: PolyMeshT.hh:136
 
Kernel::Scalar Scalar
Scalar type.
Definition: PolyMeshT.hh:110
 
Kernel::ConstVertexVertexIter ConstVertexVertexIter
Circulator.
Definition: PolyMeshT.hh:172
 
Kernel::ConstFaceHalfedgeIter ConstFaceHalfedgeIter
Circulator.
Definition: PolyMeshT.hh:178
 
Kernel::EdgeHandle EdgeHandle
Scalar type.
Definition: PolyMeshT.hh:138
 
Kernel::VertexFaceIter VertexFaceIter
Circulator.
Definition: PolyMeshT.hh:166
 
Kernel::ConstFaceVertexIter ConstFaceVertexIter
Circulator.
Definition: PolyMeshT.hh:177
 
Kernel::Halfedge Halfedge
Halfedge type.
Definition: PolyMeshT.hh:126
 
Kernel::FaceIter FaceIter
Scalar type.
Definition: PolyMeshT.hh:146
 
Kernel::Normal Normal
Normal type.
Definition: PolyMeshT.hh:114
 
Kernel::FaceVertexIter FaceVertexIter
Circulator.
Definition: PolyMeshT.hh:167
 
Kernel::VertexIHalfedgeIter VertexIHalfedgeIter
Circulator.
Definition: PolyMeshT.hh:164
 
Kernel::TexCoord2D TexCoord2D
TexCoord2D type.
Definition: PolyMeshT.hh:120
 
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: s...
Definition: PolyMeshT.hh:537
 
SmartVertexHandle add_vertex(const Point &_p)
Alias for new_vertex(const Point&).
Definition: PolyMeshT.hh:245
 
Kernel::ConstFaceEdgeIter ConstFaceEdgeIter
Circulator.
Definition: PolyMeshT.hh:179
 
Kernel::TexCoord3D TexCoord3D
TexCoord3D type.
Definition: PolyMeshT.hh:122
 
Kernel::ConstVertexFaceIter ConstVertexFaceIter
Circulator.
Definition: PolyMeshT.hh:176
 
Kernel::VertexOHalfedgeIter VertexOHalfedgeIter
Circulator.
Definition: PolyMeshT.hh:163
 
Kernel::VertexEdgeIter VertexEdgeIter
Circulator.
Definition: PolyMeshT.hh:165
 
Kernel::Face Face
Face type.
Definition: PolyMeshT.hh:130
 
Kernel::ConstVertexIHalfedgeIter ConstVertexIHalfedgeIter
Circulator.
Definition: PolyMeshT.hh:174
 
Kernel::FaceFaceIter FaceFaceIter
Circulator.
Definition: PolyMeshT.hh:170
 
Kernel::ConstVertexEdgeIter ConstVertexEdgeIter
Circulator.
Definition: PolyMeshT.hh:175
 
Kernel::Edge Edge
Edge type.
Definition: PolyMeshT.hh:128
 
Kernel::FaceHandle FaceHandle
Scalar type.
Definition: PolyMeshT.hh:139
 
Kernel::HalfedgeHandle HalfedgeHandle
Scalar type.
Definition: PolyMeshT.hh:137
 
Kernel::EdgeIter EdgeIter
Scalar type.
Definition: PolyMeshT.hh:145
 
Kernel::ConstEdgeIter ConstEdgeIter
Scalar type.
Definition: PolyMeshT.hh:150
 
Kernel::ConstVertexIter ConstVertexIter
Scalar type.
Definition: PolyMeshT.hh:148
 
Kernel::ConstVertexOHalfedgeIter ConstVertexOHalfedgeIter
Circulator.
Definition: PolyMeshT.hh:173
 
Kernel::VertexVertexIter VertexVertexIter
Circulator.
Definition: PolyMeshT.hh:162
 
Kernel::FaceHalfedgeIter FaceHalfedgeIter
Circulator.
Definition: PolyMeshT.hh:168
 
Kernel::Point Point
Coordinate type.
Definition: PolyMeshT.hh:112
 
Kernel::ConstFaceFaceIter ConstFaceFaceIter
Circulator.
Definition: PolyMeshT.hh:180
 
void split(FaceHandle _fh, const Point &_p)
Face split (= 1-to-n split)
Definition: PolyMeshT.hh:602
 
Kernel::Color Color
Color type.
Definition: PolyMeshT.hh:116
 
Kernel::TexCoord1D TexCoord1D
TexCoord1D type.
Definition: PolyMeshT.hh:118
 
Kernel::VertexIter VertexIter
Scalar type.
Definition: PolyMeshT.hh:143
 
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
Definition: SmartHandles.hh:110
 
Connectivity tag indicating that the tagged mesh has polygon connectivity.
Definition: Tags.hh:47
 
Connectivity tag indicating that the tagged mesh has triangle connectivity.
Definition: Tags.hh:49
 
Base type for a triangle mesh.
Definition: TriMeshT.hh:92
 
void split(EdgeHandle _eh, VertexHandle _vh)
Edge split (= 2-to-4 split)
Definition: TriMeshT.hh:302
 
void split(FaceHandle _fh)
Face split (= 1-to-4) split, splits edges at midpoints and adds 4 new faces in the interior).
Definition: TriMeshT.hh:350
 
TriMeshT()
Default constructor.
Definition: TriMeshT.hh:168
 
void split(FaceHandle _fh, VertexHandle _vh)
Face split (= 1-to-3 split, calls corresponding PolyMeshT function).
Definition: TriMeshT.hh:410
 
Normal calc_face_normal(FaceHandle _fh) const
Calculate normal vector for face _fh (specialized for TriMesh).
Definition: TriMeshT_impl.hh:74
 
SmartVertexHandle split(EdgeHandle _eh, const Point &_p)
Edge split (= 2-to-4 split)
Definition: TriMeshT.hh:275
 
HalfedgeHandle vertex_split(Point _v0_point, VertexHandle _v1, VertexHandle _vl, VertexHandle _vr)
Vertex Split: inverse operation to collapse().
Definition: TriMeshT.hh:218
 
static constexpr bool is_polymesh()
Determine whether this is a PolyMeshT or TriMeshT (This function does not check the per face vertex c...
Definition: TriMeshT.hh:103
 
Scalar calc_face_area(FaceHandle _fh) const
Calculates the area of a face.
Definition: TriMeshT.hh:427
 
SmartVertexHandle split(FaceHandle _fh, const Point &_p)
Face split (= 1-to-3 split, calls corresponding PolyMeshT function).
Definition: TriMeshT.hh:330
 
virtual ~TriMeshT()
Destructor.
Definition: TriMeshT.hh:174
 
void split_copy(FaceHandle _fh, VertexHandle _vh)
Face split (= 1-to-3 split, calls corresponding PolyMeshT function).
Definition: TriMeshT.hh:420
 
SmartVertexHandle split_copy(FaceHandle _fh, const Point &_p)
Face split (= 1-to-3 split, calls corresponding PolyMeshT function).
Definition: TriMeshT.hh:342
 
HalfedgeHandle vertex_split(VertexHandle _v0, VertexHandle _v1, VertexHandle _vl, VertexHandle _vr)
Vertex Split: inverse operation to collapse().
Definition: TriMeshT.hh:262
 
void split_copy(EdgeHandle _eh, VertexHandle _vh)
Edge split (= 2-to-4 split)
Definition: TriMeshT.hh:315
 
SmartVertexHandle split_copy(EdgeHandle _eh, const Point &_p)
Edge split (= 2-to-4 split)
Definition: TriMeshT.hh:289
 
Helper class providing information about a vector type.
Definition: vector_traits.hh:89