Developer Documentation
|
#include <OpenMesh/Mesh/TriMeshT.hh>
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) |
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) | |
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.
Kernel | template argument for the mesh kernel |
Definition at line 91 of file TriMeshT.hh.
|
inline |
Calculates the area of a face.
_fh | Handle of the face to calculate the area of |
Definition at line 427 of file TriMeshT.hh.
|
virtual |
Calculate normal vector for face _fh (specialized for TriMesh).
Reimplemented from OpenMesh::PolyMeshT< Kernel >.
Definition at line 74 of file TriMeshT_impl.hh.
|
inline |
Edge split (= 2-to-4 split)
The properties of the new edges will be undefined!
_eh | Edge handle that should be splitted |
_p | New point position that will be inserted at the edge |
Definition at line 275 of file TriMeshT.hh.
|
inline |
Edge split (= 2-to-4 split)
The properties of the new edges will be undefined!
_eh | Edge handle that should be splitted |
_vh | Vertex handle that will be inserted at the edge |
Definition at line 302 of file TriMeshT.hh.
|
inline |
Face split (= 1-to-3 split, calls corresponding PolyMeshT function).
The properties of the new faces will be undefined!
_fh | Face handle that should be splitted |
_p | New point position that will be inserted in the face |
Definition at line 330 of file TriMeshT.hh.
|
inline |
Face split (= 1-to-4) split, splits edges at midpoints and adds 4 new faces in the interior).
_fh | Face handle that should be splitted |
Definition at line 350 of file TriMeshT.hh.
|
inline |
Face split (= 1-to-3 split, calls corresponding PolyMeshT function).
The properties of the new faces will be undefined!
_fh | Face handle that should be splitted |
_vh | Vertex handle that will be inserted at the face |
Definition at line 410 of file TriMeshT.hh.
|
inline |
Edge split (= 2-to-4 split)
The properties of the new edges will be adjusted to the properties of the original edge
_eh | Edge handle that should be splitted |
_p | New point position that will be inserted at the edge |
Definition at line 289 of file TriMeshT.hh.
|
inline |
Edge split (= 2-to-4 split)
The properties of the new edges will be adjusted to the properties of the original edge
_eh | Edge handle that should be splitted |
_vh | Vertex handle that will be inserted at the edge |
Definition at line 315 of file TriMeshT.hh.
|
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
_fh | Face handle that should be splitted |
_p | New point position that will be inserted in the face |
Definition at line 342 of file TriMeshT.hh.
|
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
_fh | Face handle that should be splitted |
_vh | Vertex handle that will be inserted at the face |
Definition at line 420 of file TriMeshT.hh.
|
inline |
Vertex Split: inverse operation to collapse().
Insert the new vertex at position v0. The vertex will be added as the inverse of the edge collapse. 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
_v0_point | Point position for the new point |
_v1 | Vertex that will be split |
_vl | Left vertex handle |
_vr | Right vertex handle |
Definition at line 218 of file TriMeshT.hh.
|
inline |
Vertex Split: inverse operation to collapse().
Insert the new vertex at position v0. The vertex will be added as the inverse of the edge collapse. 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
_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 |
Definition at line 262 of file TriMeshT.hh.