Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends
pcl::geometry::TriangleMesh< MeshTraitsT > Class Template Reference

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

#include <triangle_mesh.h>

Inheritance diagram for pcl::geometry::TriangleMesh< MeshTraitsT >:
Inheritance graph
[legend]

List of all members.

Public Types

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

Public Member Functions

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. Data is only added if it is associated with the elements. The last vertex is connected with the first one.
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. 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).
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. 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).
 TriangleMesh ()
 Constructor.

Private Member Functions

FaceIndex addFaceImpl (const VertexIndices &vertices, const FaceData &face_data, const EdgeData &edge_data, const HalfEdgeData &half_edge_data)
 addFace for the triangular mesh.
FaceIndexPair connectTrianglePair (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_cd, const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, const VertexIndex &idx_v_c, const VertexIndex &idx_v_d, const FaceData &face_data, const EdgeData &edge_data, const HalfEdgeData &he_data)
 Connect the triangles a-b-c and a-c-d. The edges a-b and c-d must be old and the edges b-c and d-a must be new.

Private Attributes

VertexIndices add_triangle_
 Storage for adding a triangle.
HalfEdgeIndices inner_he_atp_
 Storage for addTrianglePair.
std::vector< bool > is_new_atp_
 Storage for addTrianglePair.

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::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::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.

template<class MeshTraitsT>
FaceIndex pcl::geometry::TriangleMesh< MeshTraitsT >::addFaceImpl ( const VertexIndices vertices,
const FaceData face_data,
const EdgeData edge_data,
const HalfEdgeData half_edge_data 
) [inline, private]

addFace for the triangular mesh.

Definition at line 261 of file triangle_mesh.h.

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.

template<class MeshTraitsT>
FaceIndexPair pcl::geometry::TriangleMesh< MeshTraitsT >::connectTrianglePair ( const HalfEdgeIndex idx_he_ab,
const HalfEdgeIndex idx_he_cd,
const VertexIndex idx_v_a,
const VertexIndex idx_v_b,
const VertexIndex idx_v_c,
const VertexIndex idx_v_d,
const FaceData face_data,
const EdgeData edge_data,
const HalfEdgeData he_data 
) [inline, private]

Connect the triangles a-b-c and a-c-d. The edges a-b and c-d must be old and the edges b-c and d-a must be new.

Definition at line 277 of file triangle_mesh.h.


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.


Member Data Documentation

template<class MeshTraitsT>
VertexIndices pcl::geometry::TriangleMesh< MeshTraitsT >::add_triangle_ [private]

Storage for adding a triangle.

Definition at line 346 of file triangle_mesh.h.

template<class MeshTraitsT>
HalfEdgeIndices pcl::geometry::TriangleMesh< MeshTraitsT >::inner_he_atp_ [private]

Storage for addTrianglePair.

Definition at line 349 of file triangle_mesh.h.

template<class MeshTraitsT>
std::vector<bool> pcl::geometry::TriangleMesh< MeshTraitsT >::is_new_atp_ [private]

Storage for addTrianglePair.

Definition at line 352 of file triangle_mesh.h.


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


pcl
Author(s): Open Perception
autogenerated on Wed Aug 26 2015 15:43:56