Point Cloud Library (PCL)  1.11.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
List of all members | Public Types | Public Member Functions | Friends
pcl::geometry::TriangleMesh< MeshTraitsT > Class Template Reference

Half-edge mesh that can only store triangles. More...

#include <pcl/geometry/triangle_mesh.h>

+ Inheritance diagram for pcl::geometry::TriangleMesh< MeshTraitsT >:
+ Collaboration diagram for pcl::geometry::TriangleMesh< MeshTraitsT >:

Public Types

using Base = pcl::geometry::MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, TriangleMeshTag >
 
using Self = TriangleMesh< MeshTraitsT >
 
using Ptr = shared_ptr< Self >
 
using ConstPtr = shared_ptr< const Self >
 
using VertexData = typename Base::VertexData
 
using HalfEdgeData = typename Base::HalfEdgeData
 
using EdgeData = typename Base::EdgeData
 
using FaceData = typename Base::FaceData
 
using IsManifold = typename Base::IsManifold
 
using MeshTag = typename Base::MeshTag
 
using HasVertexData = typename Base::HasVertexData
 
using HasHalfEdgeData = typename Base::HasHalfEdgeData
 
using HasEdgeData = typename Base::HasEdgeData
 
using HasFaceData = typename Base::HasFaceData
 
using VertexDataCloud = typename Base::VertexDataCloud
 
using HalfEdgeDataCloud = typename Base::HalfEdgeDataCloud
 
using EdgeDataCloud = typename Base::EdgeDataCloud
 
using FaceDataCloud = typename Base::FaceDataCloud
 
using VertexIndex = typename Base::VertexIndex
 
using HalfEdgeIndex = typename Base::HalfEdgeIndex
 
using EdgeIndex = typename Base::EdgeIndex
 
using FaceIndex = typename Base::FaceIndex
 
using FaceIndexPair = std::pair< FaceIndex, FaceIndex >
 
using VertexIndices = typename Base::VertexIndices
 
using HalfEdgeIndices = typename Base::HalfEdgeIndices
 
using EdgeIndices = typename Base::EdgeIndices
 
using FaceIndices = typename Base::FaceIndices
 
using VertexAroundVertexCirculator = typename Base::VertexAroundVertexCirculator
 
using OutgoingHalfEdgeAroundVertexCirculator = typename Base::OutgoingHalfEdgeAroundVertexCirculator
 
using IncomingHalfEdgeAroundVertexCirculator = typename Base::IncomingHalfEdgeAroundVertexCirculator
 
using FaceAroundVertexCirculator = typename Base::FaceAroundVertexCirculator
 
using VertexAroundFaceCirculator = typename Base::VertexAroundFaceCirculator
 
using InnerHalfEdgeAroundFaceCirculator = typename Base::InnerHalfEdgeAroundFaceCirculator
 
using OuterHalfEdgeAroundFaceCirculator = typename Base::OuterHalfEdgeAroundFaceCirculator
 
using FaceAroundFaceCirculator = typename Base::FaceAroundFaceCirculator
 
- Public Types inherited from pcl::geometry::MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, TriangleMeshTag >
using Self = MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, TriangleMeshTag >
 
using Ptr = shared_ptr< Self >
 
using ConstPtr = shared_ptr< const Self >
 
using Derived = TriangleMesh< MeshTraitsT >
 
using VertexData = typename MeshTraitsT::VertexData
 
using HalfEdgeData = typename MeshTraitsT::HalfEdgeData
 
using EdgeData = typename MeshTraitsT::EdgeData
 
using FaceData = typename MeshTraitsT::FaceData
 
using IsManifold = typename MeshTraitsT::IsManifold
 

Public Member Functions

 TriangleMesh ()
 Constructor. More...
 
FaceIndex addFace (const VertexIndex &idx_v_0, const VertexIndex &idx_v_1, const VertexIndex &idx_v_2, const FaceData &face_data=FaceData(), const EdgeData &edge_data=EdgeData(), const HalfEdgeData &half_edge_data=HalfEdgeData())
 Add a triangle to the mesh. More...
 
FaceIndexPair addTrianglePair (const VertexIndices &vertices, const FaceData &face_data=FaceData(), const EdgeData &edge_data=EdgeData(), const HalfEdgeData &half_edge_data=HalfEdgeData())
 Add two triangles for the four given input vertices. More...
 
FaceIndexPair addTrianglePair (const VertexIndex &idx_v_0, const VertexIndex &idx_v_1, const VertexIndex &idx_v_2, const VertexIndex &idx_v_3, const FaceData &face_data=FaceData(), const EdgeData &edge_data=EdgeData(), const HalfEdgeData &half_edge_data=HalfEdgeData())
 Add two triangles for the four given input vertices. More...
 

Friends

class pcl::geometry::MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, pcl::geometry::TriangleMeshTag >
 

Detailed Description

template<class MeshTraitsT>
class pcl::geometry::TriangleMesh< MeshTraitsT >

Half-edge mesh that can only store triangles.

Template Parameters
MeshTraitsTPlease have a look at pcl::geometry::DefaultMeshTraits.
Author
Martin Saelzle

Definition at line 62 of file triangle_mesh.h.

Member Typedef Documentation

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::Base = pcl::geometry::MeshBase <TriangleMesh <MeshTraitsT>, MeshTraitsT, TriangleMeshTag>

Definition at line 66 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::ConstPtr = shared_ptr<const Self>

Definition at line 70 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeData = typename Base::EdgeData

Definition at line 74 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeDataCloud = typename Base::EdgeDataCloud

Definition at line 86 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeIndex = typename Base::EdgeIndex

Definition at line 92 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeIndices = typename Base::EdgeIndices

Definition at line 98 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceAroundFaceCirculator = typename Base::FaceAroundFaceCirculator

Definition at line 109 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceAroundVertexCirculator = typename Base::FaceAroundVertexCirculator

Definition at line 105 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceData = typename Base::FaceData

Definition at line 75 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceDataCloud = typename Base::FaceDataCloud

Definition at line 87 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceIndex = typename Base::FaceIndex

Definition at line 93 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceIndexPair = std::pair <FaceIndex, FaceIndex>

Definition at line 94 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::FaceIndices = typename Base::FaceIndices

Definition at line 99 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeData = typename Base::HalfEdgeData

Definition at line 73 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeDataCloud = typename Base::HalfEdgeDataCloud

Definition at line 85 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeIndex = typename Base::HalfEdgeIndex

Definition at line 91 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeIndices = typename Base::HalfEdgeIndices

Definition at line 97 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HasEdgeData = typename Base::HasEdgeData

Definition at line 81 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HasFaceData = typename Base::HasFaceData

Definition at line 82 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HasHalfEdgeData = typename Base::HasHalfEdgeData

Definition at line 80 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::HasVertexData = typename Base::HasVertexData

Definition at line 79 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::IncomingHalfEdgeAroundVertexCirculator = typename Base::IncomingHalfEdgeAroundVertexCirculator

Definition at line 104 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::InnerHalfEdgeAroundFaceCirculator = typename Base::InnerHalfEdgeAroundFaceCirculator

Definition at line 107 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::IsManifold = typename Base::IsManifold

Definition at line 76 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::MeshTag = typename Base::MeshTag

Definition at line 77 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::OuterHalfEdgeAroundFaceCirculator = typename Base::OuterHalfEdgeAroundFaceCirculator

Definition at line 108 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::OutgoingHalfEdgeAroundVertexCirculator = typename Base::OutgoingHalfEdgeAroundVertexCirculator

Definition at line 103 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::Ptr = shared_ptr<Self>

Definition at line 69 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::Self = TriangleMesh<MeshTraitsT>

Definition at line 68 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::VertexAroundFaceCirculator = typename Base::VertexAroundFaceCirculator

Definition at line 106 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::VertexAroundVertexCirculator = typename Base::VertexAroundVertexCirculator

Definition at line 102 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::VertexData = typename Base::VertexData

Definition at line 72 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::VertexDataCloud = typename Base::VertexDataCloud

Definition at line 84 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::VertexIndex = typename Base::VertexIndex

Definition at line 90 of file triangle_mesh.h.

template<class MeshTraitsT >
using pcl::geometry::TriangleMesh< MeshTraitsT >::VertexIndices = typename Base::VertexIndices

Definition at line 96 of file triangle_mesh.h.

Constructor & Destructor Documentation

template<class MeshTraitsT >
pcl::geometry::TriangleMesh< MeshTraitsT >::TriangleMesh ( )
inline

Constructor.

Definition at line 112 of file triangle_mesh.h.

Member Function Documentation

template<class MeshTraitsT >
FaceIndex pcl::geometry::TriangleMesh< MeshTraitsT >::addFace ( const VertexIndex idx_v_0,
const VertexIndex idx_v_1,
const VertexIndex idx_v_2,
const FaceData face_data = FaceData (),
const EdgeData edge_data = EdgeData (),
const HalfEdgeData half_edge_data = HalfEdgeData () 
)
inline

Add a triangle to the mesh.

Data is only added if it is associated with the elements. The last vertex is connected with the first one.

Parameters
[in]idx_v_0Index to the first vertex.
[in]idx_v_1Index to the second vertex.
[in]idx_v_2Index to the third vertex.
[in]face_dataData that is set for the face.
[in]half_edge_dataData that is set for all added half-edges.
[in]edge_dataData that is set for all added edges.
Returns
Index to the new face. Failure is signaled by returning an invalid face index.
Warning
The vertices must be valid and unique (each vertex may be contained only once). Not complying with this requirement results in undefined behavior!

Definition at line 134 of file triangle_mesh.h.

Referenced by pcl::geometry::TriangleMesh< MeshTraitsT >::addTrianglePair().

template<class MeshTraitsT >
FaceIndexPair pcl::geometry::TriangleMesh< MeshTraitsT >::addTrianglePair ( const VertexIndices vertices,
const FaceData face_data = FaceData (),
const EdgeData edge_data = EdgeData (),
const HalfEdgeData half_edge_data = HalfEdgeData () 
)
inline

Add two triangles for the four given input vertices.

When using a manifold triangle mesh it is not possible to connect two bounded regions without going through a non-manifold intermediate step. This method first tries to add the triangles individually and if this fails connects the whole configuration at once (if possible).

Parameters
[in]verticesIndices to the vertices of the new face. (The size must be equal to four).
[in]face_dataData that is set for the face.
[in]half_edge_dataData that is set for all added half-edges.
[in]edge_dataData that is set for all added edges.
Returns
Pair of face indices. The first index is valid if one triangle was added. Both indices are valid if two triangles were added.
Warning
The vertices must be valid and unique (each vertex may be contained only once). Not complying with this requirement results in undefined behavior!

Definition at line 157 of file triangle_mesh.h.

template<class MeshTraitsT >
FaceIndexPair pcl::geometry::TriangleMesh< MeshTraitsT >::addTrianglePair ( const VertexIndex idx_v_0,
const VertexIndex idx_v_1,
const VertexIndex idx_v_2,
const VertexIndex idx_v_3,
const FaceData face_data = FaceData (),
const EdgeData edge_data = EdgeData (),
const HalfEdgeData half_edge_data = HalfEdgeData () 
)
inline

Add two triangles for the four given input vertices.

When using a manifold triangle mesh it is not possible to connect two bounded regions without going through a non-manifold intermediate step. This method first tries to add the triangles individually and if this fails connects the whole configuration at once (if possible).

Parameters
[in]idx_v_0Index to the first vertex.
[in]idx_v_1Index to the second vertex.
[in]idx_v_2Index to the third vertex.
[in]idx_v_3Index to the fourth vertex.
[in]face_dataData that is set for the face.
[in]half_edge_dataData that is set for all added half-edges.
[in]edge_dataData that is set for all added edges.
Returns
Pair of face indices. The first index is valid if one triangle was added. Both indices are valid if two triangles were added.
Warning
The vertices must be valid and unique (each vertex may be contained only once). Not complying with this requirement results in undefined behavior!

Definition at line 181 of file triangle_mesh.h.

References pcl::geometry::TriangleMesh< MeshTraitsT >::addFace().

Friends And Related Function Documentation

template<class MeshTraitsT >
friend class pcl::geometry::MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, pcl::geometry::TriangleMeshTag >
friend

Definition at line 252 of file triangle_mesh.h.


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