Developer Documentation

Public Types | Public Member Functions | List of all members
OpenMesh::TriMeshT< Kernel > Class Template Reference

`#include <OpenMesh/Mesh/TriMeshT.hh>`

Inheritance diagram for OpenMesh::TriMeshT< Kernel >:

## Public Types
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
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)
using | ConnectivityTag = PolyConnectivityTag
| 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
| TriMeshT ()
| Default constructor.
| TriMeshT (PolyMesh rhs)
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...
SmartVertexHandle | split (EdgeHandle _eh, const Point &_p)
| Edge split (= 2-to-4 split) More...
SmartVertexHandle | 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...
SmartVertexHandle | split (FaceHandle _fh, const Point &_p)
| Face split (= 1-to-3 split, calls corresponding PolyMeshT function). More...
SmartVertexHandle | split_copy (FaceHandle _fh, const Point &_p)
| Face split (= 1-to-3 split, calls corresponding PolyMeshT function). More...
void | split (FaceHandle _fh)
| Face split (= 1-to-4) split, splits edges at midpoints and adds 4 new faces in the interior). 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...
Scalar | calc_face_area (FaceHandle _fh) const
| Calculates the area of a face. More...
Normal vector computation
Normal | calc_face_normal (FaceHandle _fh) const
Public Member Functions inherited from OpenMesh::PolyMeshT< Kernel >
template<typename T >
| PolyMeshT (const T &t)
SmartVertexHandle | new_vertex ()
| Adds a new default-initialized vertex. More...
SmartVertexHandle | new_vertex (const Point &_p)
| Adds a new vertex initialized to a custom position. More...
SmartVertexHandle | new_vertex_dirty (const Point &_p)
SmartVertexHandle | add_vertex (const Point &_p)
| Alias for new_vertex(const Point&).
SmartVertexHandle | add_vertex_dirty (const Point &_p)
| Alias for new_vertex_dirty().
void | calc_edge_vector (EdgeHandle _eh, Normal &_edge_vec) const
Normal | calc_edge_vector (EdgeHandle _eh) const
void | calc_edge_vector (HalfedgeHandle _heh, Normal &_edge_vec) const
Normal | calc_edge_vector (HalfedgeHandle _heh) const
Scalar | calc_edge_length (EdgeHandle _eh) const
Scalar | calc_edge_length (HalfedgeHandle _heh) const
Scalar | calc_edge_sqr_length (EdgeHandle _eh) const
Scalar | calc_edge_sqr_length (HalfedgeHandle _heh) const
Point | calc_edge_midpoint (HalfedgeHandle _heh) const
Point | calc_edge_midpoint (EdgeHandle _eh) const
Normal | calc_normal (EdgeHandle _eh) const
| calculated and returns the average of the two vertex normals
void | calc_sector_vectors (HalfedgeHandle _in_heh, Normal &_vec0, Normal &_vec1) const
Scalar | calc_sector_angle (HalfedgeHandle _in_heh) const
void | calc_sector_normal (HalfedgeHandle _in_heh, Normal &_sector_normal) const
Scalar | calc_sector_area (HalfedgeHandle _in_heh) const
Scalar | calc_dihedral_angle_fast (HalfedgeHandle _heh) const
Scalar | calc_dihedral_angle_fast (EdgeHandle _eh) const
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))
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
Normal | calc_normal (FaceHandle _fh) const
| same as calc_face_normal
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 _fh.
Point | calc_centroid (FaceHandle _fh) const
| Computes and returns the average of the vertices defining _fh (same as calc_face_centroid)
Point | calc_centroid (EdgeHandle _eh) const
| Computes and returns the average of the vertices defining _eh (same as calc_edge_midpoint)
Point | calc_centroid (HalfedgeHandle _heh) const
| Computes and returns the average of the vertices defining _heh (same as calc_edge_midpoint for edge of halfedge)
Point | calc_centroid (VertexHandle _vh) const
| Returns the point of _vh.
Point | calc_centroid (MeshHandle _mh) const
| Computes and returns the average of the vertices defining the mesh.
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...
Normal | calc_normal (HalfedgeHandle, const double _feature_angle=0.8) const
| same as calc_halfedge_normal
bool | is_estimated_feature_edge (HalfedgeHandle _heh, const double _feature_angle) const
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
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...
Normal | calc_normal (VertexHandle _vh) const
| same as calc_vertex_normal_correct
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)
using | ConnectivityTag = TriConnectivityTag
| 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 constexpr 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 constexpr 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)

## Additional Inherited Members
Static Public Member Functions inherited from OpenMesh::PolyMeshT< Kernel >
static constexpr 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 constexpr 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 Kernel>
class OpenMesh::TriMeshT< Kernel >

Base type for a triangle mesh.

Base type for a triangle mesh, parameterized by a mesh kernel. The mesh inherits all methods from the kernel class and the more general polygonal mesh PolyMeshT. Therefore it provides the same types for items, handles, iterators and so on.

Parameters

  Kernel | template argument for the mesh kernel

Note
  You should use the predefined mesh-kernel combinations in Predefined Mesh Types

See also
  Specifying your MyMesh
  OpenMesh::PolyMeshT

Definition at line 91 of file TriMeshT.hh.

## Member Function Documentation

## ◆ calc_face_area()

template<class Kernel>

Scalar OpenMesh::TriMeshT< Kernel >::calc_face_area | ( | FaceHandle | _fh | ) | const
| inline

Calculates the area of a face.

Parameters

  _fh | Handle of the face to calculate the area of

Definition at line 419 of file TriMeshT.hh.

## ◆ calc_face_normal()

template<class Kernel >

TriMeshT< Kernel >::Normal OpenMesh::TriMeshT< Kernel >::calc_face_normal | ( | FaceHandle | _fh | ) | const
| virtual

Calculate normal vector for face _fh (specialized for TriMesh).

Reimplemented from OpenMesh::PolyMeshT< Kernel >.

Definition at line 74 of file TriMeshT_impl.hh.

## ◆ split() [1/5]

template<class Kernel>

SmartVertexHandle OpenMesh::TriMeshT< Kernel >::split | ( | EdgeHandle | _eh,
|  | const Point & | _p
| ) |  |
| inline

Edge split (= 2-to-4 split)

The properties of the new edges will be undefined!

Parameters

  _eh | Edge handle that should be splitted
  _p | New point position that will be inserted at the edge

Returns
  Vertex handle of the newly added vertex

Definition at line 267 of file TriMeshT.hh.

## ◆ split() [2/5]

template<class Kernel>

void OpenMesh::TriMeshT< Kernel >::split | ( | EdgeHandle | _eh,
|  | VertexHandle | _vh
| ) |  |
| inline

Edge split (= 2-to-4 split)

The properties of the new edges will be undefined!

Parameters

  _eh | Edge handle that should be splitted
  _vh | Vertex handle that will be inserted at the edge

Definition at line 294 of file TriMeshT.hh.

## ◆ split() [3/5]

template<class Kernel>

SmartVertexHandle OpenMesh::TriMeshT< Kernel >::split | ( | FaceHandle | _fh,
|  | const Point & | _p
| ) |  |
| inline

Face split (= 1-to-3 split, calls corresponding PolyMeshT function).

The properties of the new faces will be undefined!

Parameters

  _fh | Face handle that should be splitted
  _p | New point position that will be inserted in the face

Returns
  Vertex handle of the new vertex

Definition at line 322 of file TriMeshT.hh.

## ◆ split() [4/5]

template<class Kernel>

void OpenMesh::TriMeshT< Kernel >::split | ( | FaceHandle | _fh | ) |
| inline

Face split (= 1-to-4) split, splits edges at midpoints and adds 4 new faces in the interior).

Parameters

  _fh | Face handle that should be splitted

Definition at line 342 of file TriMeshT.hh.

## ◆ split() [5/5]

template<class Kernel>

void OpenMesh::TriMeshT< Kernel >::split | ( | FaceHandle | _fh,
|  | VertexHandle | _vh
| ) |  |
| inline

Face split (= 1-to-3 split, calls corresponding PolyMeshT function).

The properties of the new faces will be undefined!

Parameters

  _fh | Face handle that should be splitted
  _vh | Vertex handle that will be inserted at the face

Definition at line 402 of file TriMeshT.hh.

## ◆ split_copy() [1/4]

template<class Kernel>

SmartVertexHandle OpenMesh::TriMeshT< Kernel >::split_copy | ( | EdgeHandle | _eh,
|  | const Point & | _p
| ) |  |
| inline

Edge split (= 2-to-4 split)

The properties of the new edges will be adjusted to the properties of the original edge

Parameters

  _eh | Edge handle that should be splitted
  _p | New point position that will be inserted at the edge

Returns
  Vertex handle of the newly added vertex

Definition at line 281 of file TriMeshT.hh.

## ◆ split_copy() [2/4]

template<class Kernel>

void OpenMesh::TriMeshT< Kernel >::split_copy | ( | EdgeHandle | _eh,
|  | VertexHandle | _vh
| ) |  |
| inline

Edge split (= 2-to-4 split)

The properties of the new edges will be adjusted to the properties of the original edge

Parameters

  _eh | Edge handle that should be splitted
  _vh | Vertex handle that will be inserted at the edge

Definition at line 307 of file TriMeshT.hh.

## ◆ split_copy() [3/4]

template<class Kernel>

SmartVertexHandle OpenMesh::TriMeshT< Kernel >::split_copy | ( | FaceHandle | _fh,
|  | const Point & | _p
| ) |  |
| inline

Face split (= 1-to-3 split, calls corresponding PolyMeshT function).

The properties of the new faces will be adjusted to the properties of the original face

Parameters

  _fh | Face handle that should be splitted
  _p | New point position that will be inserted in the face

Returns
  Vertex handle of the new vertex

Definition at line 334 of file TriMeshT.hh.

## ◆ split_copy() [4/4]

template<class Kernel>

void OpenMesh::TriMeshT< Kernel >::split_copy | ( | FaceHandle | _fh,
|  | VertexHandle | _vh
| ) |  |
| inline

Face split (= 1-to-3 split, calls corresponding PolyMeshT function).

The properties of the new faces will be adjusted to the properties of the original face

Parameters

  _fh | Face handle that should be splitted
  _vh | Vertex handle that will be inserted at the face

Definition at line 412 of file TriMeshT.hh.

## ◆ vertex_split() [1/2]

template<class Kernel>

HalfedgeHandle OpenMesh::TriMeshT< Kernel >::vertex_split | ( | Point | _v0_point,
|  | VertexHandle | _v1,
|  | VertexHandle | _vl,
|  | VertexHandle | _vr
| ) |  |
| inline

Vertex Split: inverse operation to collapse().

Insert the new vertex at position v0. The vertex will be added as the inverse of the vertex split. The faces above the split will be correctly attached to the two new edges

Before: v_l v0 v_r x x x \ / \ / \ / \ / \ / \ / x v1

After: v_l v0 v_r x---—x---—x \ | / \ | / \ | / \ | / \ | / |/ x v1

Parameters

  _v0_point | Point position for the new point
  _v1 | Vertex that will be split
  _vl | Left vertex handle
  _vr | Right vertex handle

Returns
  Newly inserted halfedge

Definition at line 214 of file TriMeshT.hh.

## ◆ vertex_split() [2/2]

template<class Kernel>

HalfedgeHandle OpenMesh::TriMeshT< Kernel >::vertex_split | ( | VertexHandle | _v0,
|  | VertexHandle | _v1,
|  | VertexHandle | _vl,
|  | VertexHandle | _vr
| ) |  |
| inline

Vertex Split: inverse operation to collapse().

Insert the new vertex at position v0. The vertex will be added as the inverse of the vertex split. The faces above the split will be correctly attached to the two new edges

Before: v_l v0 v_r x x x \ / \ / \ / \ / \ / \ / x v1

After: v_l v0 v_r x---—x---—x \ | / \ | / \ | / \ | / \ | / |/ x v1

Parameters

  _v0 | Vertex handle for the newly inserted point (Input has to be unconnected!)
  _v1 | Vertex that will be split
  _vl | Left vertex handle
  _vr | Right vertex handle

Returns
  Newly inserted halfedge

Definition at line 254 of file TriMeshT.hh.

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

- OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Core/Mesh/TriMeshT.hh
- OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Core/Mesh/TriMeshT_impl.hh