Point Cloud Library (PCL)  1.7.0
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 >:

List of all members.

Public Types

typedef
pcl::geometry::MeshBase
< TriangleMesh< MeshTraitsT >
, MeshTraitsT, TriangleMeshTag
Base
typedef TriangleMesh< MeshTraitsT > Self
typedef boost::shared_ptr< SelfPtr
typedef boost::shared_ptr
< const Self
ConstPtr
typedef Base::VertexData VertexData
typedef Base::HalfEdgeData HalfEdgeData
typedef Base::EdgeData EdgeData
typedef Base::FaceData FaceData
typedef Base::IsManifold IsManifold
typedef Base::MeshTag MeshTag
typedef Base::HasVertexData HasVertexData
typedef Base::HasHalfEdgeData HasHalfEdgeData
typedef Base::HasEdgeData HasEdgeData
typedef Base::HasFaceData HasFaceData
typedef Base::VertexDataCloud VertexDataCloud
typedef Base::HalfEdgeDataCloud HalfEdgeDataCloud
typedef Base::EdgeDataCloud EdgeDataCloud
typedef Base::FaceDataCloud FaceDataCloud
typedef Base::VertexIndex VertexIndex
typedef Base::HalfEdgeIndex HalfEdgeIndex
typedef Base::EdgeIndex EdgeIndex
typedef Base::FaceIndex FaceIndex
typedef std::pair< FaceIndex,
FaceIndex
FaceIndexPair
typedef Base::VertexIndices VertexIndices
typedef Base::HalfEdgeIndices HalfEdgeIndices
typedef Base::EdgeIndices EdgeIndices
typedef Base::FaceIndices FaceIndices
typedef
Base::VertexAroundVertexCirculator 
VertexAroundVertexCirculator
typedef
Base::OutgoingHalfEdgeAroundVertexCirculator 
OutgoingHalfEdgeAroundVertexCirculator
typedef
Base::IncomingHalfEdgeAroundVertexCirculator 
IncomingHalfEdgeAroundVertexCirculator
typedef
Base::FaceAroundVertexCirculator 
FaceAroundVertexCirculator
typedef
Base::VertexAroundFaceCirculator 
VertexAroundFaceCirculator
typedef
Base::InnerHalfEdgeAroundFaceCirculator 
InnerHalfEdgeAroundFaceCirculator
typedef
Base::OuterHalfEdgeAroundFaceCirculator 
OuterHalfEdgeAroundFaceCirculator
typedef
Base::FaceAroundFaceCirculator 
FaceAroundFaceCirculator

Public Member Functions

 TriangleMesh ()
 Constructor.
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.
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.
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.

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 61 of file triangle_mesh.h.


Member Typedef Documentation

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

Definition at line 65 of file triangle_mesh.h.

template<class MeshTraitsT >
typedef boost::shared_ptr<const Self> pcl::geometry::TriangleMesh< MeshTraitsT >::ConstPtr
template<class MeshTraitsT >
typedef Base::EdgeData pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeData
template<class MeshTraitsT >
typedef Base::EdgeDataCloud pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeDataCloud
template<class MeshTraitsT >
typedef Base::EdgeIndex pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeIndex
template<class MeshTraitsT >
typedef Base::EdgeIndices pcl::geometry::TriangleMesh< MeshTraitsT >::EdgeIndices
template<class MeshTraitsT >
typedef Base::FaceAroundFaceCirculator pcl::geometry::TriangleMesh< MeshTraitsT >::FaceAroundFaceCirculator
template<class MeshTraitsT >
typedef Base::FaceAroundVertexCirculator pcl::geometry::TriangleMesh< MeshTraitsT >::FaceAroundVertexCirculator
template<class MeshTraitsT >
typedef Base::FaceData pcl::geometry::TriangleMesh< MeshTraitsT >::FaceData
template<class MeshTraitsT >
typedef Base::FaceDataCloud pcl::geometry::TriangleMesh< MeshTraitsT >::FaceDataCloud
template<class MeshTraitsT >
typedef Base::FaceIndex pcl::geometry::TriangleMesh< MeshTraitsT >::FaceIndex
template<class MeshTraitsT >
typedef std::pair<FaceIndex, FaceIndex> pcl::geometry::TriangleMesh< MeshTraitsT >::FaceIndexPair

Definition at line 93 of file triangle_mesh.h.

template<class MeshTraitsT >
typedef Base::FaceIndices pcl::geometry::TriangleMesh< MeshTraitsT >::FaceIndices
template<class MeshTraitsT >
typedef Base::HalfEdgeData pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeData
template<class MeshTraitsT >
typedef Base::HalfEdgeDataCloud pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeDataCloud
template<class MeshTraitsT >
typedef Base::HalfEdgeIndex pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeIndex
template<class MeshTraitsT >
typedef Base::HalfEdgeIndices pcl::geometry::TriangleMesh< MeshTraitsT >::HalfEdgeIndices
template<class MeshTraitsT >
typedef Base::HasEdgeData pcl::geometry::TriangleMesh< MeshTraitsT >::HasEdgeData
template<class MeshTraitsT >
typedef Base::HasFaceData pcl::geometry::TriangleMesh< MeshTraitsT >::HasFaceData
template<class MeshTraitsT >
typedef Base::HasHalfEdgeData pcl::geometry::TriangleMesh< MeshTraitsT >::HasHalfEdgeData
template<class MeshTraitsT >
typedef Base::HasVertexData pcl::geometry::TriangleMesh< MeshTraitsT >::HasVertexData
template<class MeshTraitsT >
typedef Base::IsManifold pcl::geometry::TriangleMesh< MeshTraitsT >::IsManifold
template<class MeshTraitsT >
typedef Base::MeshTag pcl::geometry::TriangleMesh< MeshTraitsT >::MeshTag
template<class MeshTraitsT >
typedef boost::shared_ptr<Self> pcl::geometry::TriangleMesh< MeshTraitsT >::Ptr
template<class MeshTraitsT >
typedef TriangleMesh<MeshTraitsT> pcl::geometry::TriangleMesh< MeshTraitsT >::Self
template<class MeshTraitsT >
typedef Base::VertexAroundFaceCirculator pcl::geometry::TriangleMesh< MeshTraitsT >::VertexAroundFaceCirculator
template<class MeshTraitsT >
typedef Base::VertexData pcl::geometry::TriangleMesh< MeshTraitsT >::VertexData
template<class MeshTraitsT >
typedef Base::VertexDataCloud pcl::geometry::TriangleMesh< MeshTraitsT >::VertexDataCloud
template<class MeshTraitsT >
typedef Base::VertexIndex pcl::geometry::TriangleMesh< MeshTraitsT >::VertexIndex
template<class MeshTraitsT >
typedef Base::VertexIndices pcl::geometry::TriangleMesh< MeshTraitsT >::VertexIndices

Constructor & Destructor Documentation

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

Constructor.

Definition at line 111 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 133 of file triangle_mesh.h.

References pcl::geometry::MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, TriangleMeshTag >::addFaceImplBase().

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 156 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 183 of file triangle_mesh.h.

References pcl::geometry::TriangleMesh< MeshTraitsT >::addFace(), pcl::geometry::MeshBase< TriangleMesh< MeshTraitsT >, MeshTraitsT, TriangleMeshTag >::checkTopology1(), and pcl::geometry::FaceIndex::isValid().


Friends And Related Function Documentation

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

Definition at line 257 of file triangle_mesh.h.


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