pcl::geometry::PolygonMesh< MeshTraitsT > Class Template Reference
Module geometry

General half-edge mesh that can store any polygon with a minimum number of vertices of 3. More...

`#include <pcl/geometry/polygon_mesh.h>`

Inheritance diagram for pcl::geometry::PolygonMesh< MeshTraitsT >:

## Public Types

typedef pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag > | Base
typedef PolygonMesh< MeshTraitsT > | Self
typedef boost::shared_ptr< Self > | Ptr
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 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 Types inherited from pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag >
typedef MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag > | Self
typedef boost::shared_ptr< Self > | Ptr
typedef boost::shared_ptr< const Self > | ConstPtr
typedef PolygonMesh< MeshTraitsT > | Derived
typedef MeshTraitsT::VertexData | VertexData
typedef MeshTraitsT::HalfEdgeData | HalfEdgeData
typedef MeshTraitsT::EdgeData | EdgeData
typedef MeshTraitsT::FaceData | FaceData
typedef MeshTraitsT::IsManifold | IsManifold
typedef PolygonMeshTag | MeshTag
typedef boost::integral_constant< bool, !boost::is_same< VertexData, pcl::geometry::NoData >::value > | HasVertexData
typedef boost::integral_constant< bool, !boost::is_same< HalfEdgeData, pcl::geometry::NoData >::value > | HasHalfEdgeData
typedef boost::integral_constant< bool, !boost::is_same< EdgeData, pcl::geometry::NoData >::value > | HasEdgeData
typedef boost::integral_constant< bool, !boost::is_same< FaceData, pcl::geometry::NoData >::value > | HasFaceData
typedef pcl::PointCloud< VertexData > | VertexDataCloud
typedef pcl::PointCloud< HalfEdgeData > | HalfEdgeDataCloud
typedef pcl::PointCloud< EdgeData > | EdgeDataCloud
typedef pcl::PointCloud< FaceData > | FaceDataCloud
typedef pcl::geometry::VertexIndex | VertexIndex
typedef pcl::geometry::HalfEdgeIndex | HalfEdgeIndex
typedef pcl::geometry::EdgeIndex | EdgeIndex
typedef pcl::geometry::FaceIndex | FaceIndex
typedef std::vector< VertexIndex > | VertexIndices
typedef std::vector< HalfEdgeIndex > | HalfEdgeIndices
typedef std::vector< EdgeIndex > | EdgeIndices
typedef std::vector< FaceIndex > | FaceIndices
typedef pcl::geometry::VertexAroundVertexCirculator< const Self > | VertexAroundVertexCirculator
typedef pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< const Self > | OutgoingHalfEdgeAroundVertexCirculator
typedef pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< const Self > | IncomingHalfEdgeAroundVertexCirculator
typedef pcl::geometry::FaceAroundVertexCirculator< const Self > | FaceAroundVertexCirculator
typedef pcl::geometry::VertexAroundFaceCirculator< const Self > | VertexAroundFaceCirculator
typedef pcl::geometry::InnerHalfEdgeAroundFaceCirculator< const Self > | InnerHalfEdgeAroundFaceCirculator
typedef pcl::geometry::OuterHalfEdgeAroundFaceCirculator< const Self > | OuterHalfEdgeAroundFaceCirculator
typedef pcl::geometry::FaceAroundFaceCirculator< const Self > | FaceAroundFaceCirculator

## Public Member Functions

| PolygonMesh ()
| 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...
FaceIndex | addFace (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 a quad to the mesh. More...
Public Member Functions inherited from pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag >
| BOOST_CONCEPT_ASSERT ((boost::Convertible< IsManifold, bool >))
| MeshBase ()
| Constructor. More...
VertexIndex | addVertex (const VertexData &vertex_data=VertexData())
| Add a vertex to the mesh. More...
FaceIndex | addFace (const VertexIndices &vertices, const FaceData &face_data=FaceData(), const EdgeData &edge_data=EdgeData(), const HalfEdgeData &half_edge_data=HalfEdgeData())
| Add a face to the mesh. More...
void | deleteVertex (const VertexIndex &idx_vertex)
| Mark the given vertex and all connected half-edges and faces as deleted. More...
void | deleteEdge (const HalfEdgeIndex &idx_he)
| Mark the given half-edge, the opposite half-edge and the associated faces as deleted. More...
void | deleteEdge (const EdgeIndex &idx_edge)
| Mark the given edge (both half-edges) and the associated faces as deleted. More...
void | deleteFace (const FaceIndex &idx_face)
| Mark the given face as deleted. More...
void | cleanUp ()
| Removes all mesh elements and data that are marked as deleted. More...
HalfEdgeIndex | getOutgoingHalfEdgeIndex (const VertexIndex &idx_vertex) const
| Get the outgoing half-edge index to a given vertex. More...
HalfEdgeIndex | getIncomingHalfEdgeIndex (const VertexIndex &idx_vertex) const
| Get the incoming half-edge index to a given vertex. More...
VertexIndex | getTerminatingVertexIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the terminating vertex index to a given half-edge. More...
VertexIndex | getOriginatingVertexIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the originating vertex index to a given half-edge. More...
HalfEdgeIndex | getOppositeHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the opposite half-edge index to a given half-edge. More...
HalfEdgeIndex | getNextHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the next half-edge index to a given half-edge. More...
HalfEdgeIndex | getPrevHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the previous half-edge index to a given half-edge. More...
FaceIndex | getFaceIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the face index to a given half-edge. More...
FaceIndex | getFaceIndex (const FaceData &face_data) const
| Get the index associated to the given face data. More...
FaceIndex | getOppositeFaceIndex (const HalfEdgeIndex &idx_half_edge) const
| Get the face index to a given half-edge. More...
HalfEdgeIndex | getInnerHalfEdgeIndex (const FaceIndex &idx_face) const
| Get the inner half-edge index to a given face. More...
HalfEdgeIndex | getOuterHalfEdgeIndex (const FaceIndex &idx_face) const
| Get the outer half-edge inex to a given face. More...
VertexAroundVertexCirculator | getVertexAroundVertexCirculator (const VertexIndex &idx_vertex) const
VertexAroundVertexCirculator | getVertexAroundVertexCirculator (const HalfEdgeIndex &idx_outgoing_half_edge) const
OutgoingHalfEdgeAroundVertexCirculator | getOutgoingHalfEdgeAroundVertexCirculator (const VertexIndex &idx_vertex) const
OutgoingHalfEdgeAroundVertexCirculator | getOutgoingHalfEdgeAroundVertexCirculator (const HalfEdgeIndex &idx_outgoing_half_edge) const
IncomingHalfEdgeAroundVertexCirculator | getIncomingHalfEdgeAroundVertexCirculator (const VertexIndex &idx_vertex) const
IncomingHalfEdgeAroundVertexCirculator | getIncomingHalfEdgeAroundVertexCirculator (const HalfEdgeIndex &idx_incoming_half_edge) const
FaceAroundVertexCirculator | getFaceAroundVertexCirculator (const VertexIndex &idx_vertex) const
FaceAroundVertexCirculator | getFaceAroundVertexCirculator (const HalfEdgeIndex &idx_outgoing_half_edge) const
VertexAroundFaceCirculator | getVertexAroundFaceCirculator (const FaceIndex &idx_face) const
VertexAroundFaceCirculator | getVertexAroundFaceCirculator (const HalfEdgeIndex &idx_inner_half_edge) const
InnerHalfEdgeAroundFaceCirculator | getInnerHalfEdgeAroundFaceCirculator (const FaceIndex &idx_face) const
InnerHalfEdgeAroundFaceCirculator | getInnerHalfEdgeAroundFaceCirculator (const HalfEdgeIndex &idx_inner_half_edge) const
OuterHalfEdgeAroundFaceCirculator | getOuterHalfEdgeAroundFaceCirculator (const FaceIndex &idx_face) const
OuterHalfEdgeAroundFaceCirculator | getOuterHalfEdgeAroundFaceCirculator (const HalfEdgeIndex &idx_inner_half_edge) const
FaceAroundFaceCirculator | getFaceAroundFaceCirculator (const FaceIndex &idx_face) const
FaceAroundFaceCirculator | getFaceAroundFaceCirculator (const HalfEdgeIndex &idx_inner_half_edge) const
bool | isEqualTopology (const Self &other) const
| Check if the other mesh has the same topology as this mesh. More...
bool | isValid (const VertexIndex &idx_vertex) const
| Check if the given vertex index is a valid index into the mesh. More...
bool | isValid (const HalfEdgeIndex &idx_he) const
| Check if the given half-edge index is a valid index into the mesh. More...
bool | isValid (const EdgeIndex &idx_edge) const
| Check if the given edge index is a valid index into the mesh. More...
bool | isValid (const FaceIndex &idx_face) const
| Check if the given face index is a valid index into the mesh. More...
bool | isDeleted (const VertexIndex &idx_vertex) const
| Check if the given vertex is marked as deleted. More...
bool | isDeleted (const HalfEdgeIndex &idx_he) const
| Check if the given half-edge is marked as deleted. More...
bool | isDeleted (const EdgeIndex &idx_edge) const
| Check if the given edge (any of the two half-edges) is marked as deleted. More...
bool | isDeleted (const FaceIndex &idx_face) const
| Check if the given face is marked as deleted. More...
bool | isIsolated (const VertexIndex &idx_vertex) const
| Check if the given vertex is isolated (not connected to other elements). More...
bool | isBoundary (const VertexIndex &idx_vertex) const
| Check if the given vertex lies on the boundary. More...
bool | isBoundary (const HalfEdgeIndex &idx_he) const
| Check if the given half-edge lies on the bounddary. More...
bool | isBoundary (const EdgeIndex &idx_edge) const
| Check if the given edge lies on the boundary (any of the two half-edges lies on the boundary. More...
bool | isBoundary (const FaceIndex &idx_face) const
| Check if the given face lies on the boundary. More...
bool | isBoundary (const FaceIndex &idx_face) const
| Check if the given face lies on the boundary. More...
bool | isManifold (const VertexIndex &idx_vertex) const
| Check if the given vertex is manifold. More...
bool | isManifold () const
| Check if the mesh is manifold. More...
size_t | sizeVertices () const
| Get the number of the vertices. More...
size_t | sizeHalfEdges () const
| Get the number of the half-edges. More...
size_t | sizeEdges () const
| Get the number of the edges. More...
size_t | sizeFaces () const
| Get the number of the faces. More...
bool | empty () const
| Check if the mesh is empty. More...
bool | emptyVertices () const
| Check if the vertices are empty. More...
bool | emptyEdges () const
| Check if the edges are empty. More...
bool | emptyFaces () const
| Check if the faces are empty. More...
void | reserveVertices (const size_t n)
| Reserve storage space n vertices. More...
void | reserveEdges (const size_t n)
| Reserve storage space for n edges (2*n storage space is reserved for the half-edges). More...
void | reserveFaces (const size_t n)
| Reserve storage space for n faces. More...
void | resizeVertices (const size_t n, const VertexData &data=VertexData())
| Resize the the vertices to n elements. More...
void | resizeEdges (const size_t n, const EdgeData &edge_data=EdgeData(), const HalfEdgeData he_data=HalfEdgeData())
| Resize the edges to n elements (half-edges will hold 2*n elements). More...
void | resizeFaces (const size_t n, const FaceData &data=FaceData())
| Resize the faces to n elements. More...
void | clear ()
| Clear all mesh elements and data. More...
VertexDataCloud & | getVertexDataCloud ()
| Get access to the stored vertex data. More...
VertexDataCloud | getVertexDataCloud () const
| Get the stored vertex data. More...
bool | setVertexDataCloud (const VertexDataCloud &vertex_data_cloud)
| Change the stored vertex data. More...
HalfEdgeDataCloud & | getHalfEdgeDataCloud ()
| Get access to the stored half-edge data. More...
HalfEdgeDataCloud | getHalfEdgeDataCloud () const
| Get the stored half-edge data. More...
bool | setHalfEdgeDataCloud (const HalfEdgeDataCloud &half_edge_data_cloud)
| Change the stored half-edge data. More...
EdgeDataCloud & | getEdgeDataCloud ()
| Get access to the stored edge data. More...
EdgeDataCloud | getEdgeDataCloud () const
| Get the stored edge data. More...
bool | setEdgeDataCloud (const EdgeDataCloud &edge_data_cloud)
| Change the stored edge data. More...
FaceDataCloud & | getFaceDataCloud ()
| Get access to the stored face data. More...
FaceDataCloud | getFaceDataCloud () const
| Get the stored face data. More...
bool | setFaceDataCloud (const FaceDataCloud &face_data_cloud)
| Change the stored face data. More...
VertexIndex | getVertexIndex (const VertexData &vertex_data) const
| Get the index associated to the given vertex data. More...
HalfEdgeIndex | getHalfEdgeIndex (const HalfEdgeData &half_edge_data) const
| Get the index associated to the given half-edge data. More...
EdgeIndex | getEdgeIndex (const EdgeData &edge_data) const
| Get the index associated to the given edge data. More...

## Friends

class | pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, pcl::geometry::PolygonMeshTag >

## Additional Inherited Members

Protected Types inherited from pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag >
typedef pcl::geometry::Vertex | Vertex
typedef pcl::geometry::HalfEdge | HalfEdge
typedef pcl::geometry::Face | Face
typedef std::vector< Vertex > | Vertices
typedef std::vector< HalfEdge > | HalfEdges
typedef std::vector< Face > | Faces
typedef Vertices::iterator | VertexIterator
typedef HalfEdges::iterator | HalfEdgeIterator
typedef Faces::iterator | FaceIterator
typedef Vertices::const_iterator | VertexConstIterator
typedef HalfEdges::const_iterator | HalfEdgeConstIterator
typedef Faces::const_iterator | FaceConstIterator
Protected Member Functions inherited from pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag >
void | deleteFace (const FaceIndex &idx_face, boost::true_type)
| Manifold version of deleteFace. More...
void | deleteFace (const FaceIndex &idx_face, boost::false_type)
| Non-manifold version of deleteFace. More...
bool | isBoundary (const FaceIndex &idx_face, boost::true_type) const
| Check if any vertex of the face lies on the boundary. More...
bool | isBoundary (const FaceIndex &idx_face, boost::false_type) const
| Check if any edge of the face lies on the boundary. More...
bool | isManifold (const VertexIndex &, boost::true_type) const
| Always manifold. More...
bool | isManifold (const VertexIndex &idx_vertex, boost::false_type) const
| Check if the given vertex is manifold. More...
bool | isManifold (boost::true_type) const
| Always manifold. More...
bool | isManifold (boost::false_type) const
| Check if all vertices in the mesh are manifold. More...
FaceIndex | addFaceImplBase (const VertexIndices &vertices, const FaceData &face_data, const EdgeData &edge_data, const HalfEdgeData &half_edge_data)
| General implementation of addFace. More...
HalfEdgeIndex | addEdge (const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, const HalfEdgeData &he_data, const EdgeData &edge_data)
| Add an edge between the two given vertices and connect them with the vertices. More...
bool | checkTopology1 (const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, HalfEdgeIndex &idx_he_ab, std::vector< bool >::reference is_new_ab, boost::true_type) const
| Check if the edge between the two vertices can be added. More...
bool | checkTopology1 (const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, HalfEdgeIndex &idx_he_ab, std::vector< bool >::reference is_new_ab, boost::false_type) const
| Non manifold version of checkTopology1. More...
bool | checkTopology2 (const HalfEdgeIndex &, const HalfEdgeIndex &, const bool is_new_ab, const bool is_new_bc, const bool is_isolated_b, std::vector< bool >::reference, HalfEdgeIndex &, boost::true_type) const
| Check if the face may be added (mesh does not become non-manifold). More...
bool | checkTopology2 (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const bool is_new_ab, const bool is_new_bc, const bool, std::vector< bool >::reference make_adjacent_ab_bc, HalfEdgeIndex &idx_free_half_edge, boost::false_type) const
| Check if the half-edge bc is the next half-edge of ab. More...
void | makeAdjacent (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, HalfEdgeIndex &idx_free_half_edge)
| Make the half-edges bc the next half-edge of ab. More...
FaceIndex | connectFace (const HalfEdgeIndices &inner_he, const FaceData &face_data)
| Add a face to the mesh and connect it to the half-edges. More...
void | connectPrevNext (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc)
| Connect the next and prev indices of the two half-edges with each other. More...
void | connectNewNew (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, boost::true_type)
| Both half-edges are new (manifold version). More...
void | connectNewNew (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, boost::false_type)
| Both half-edges are new (non-manifold version). More...
void | connectNewOld (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b)
| The first half-edge is new. More...
void | connectOldNew (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b)
| The second half-edge is new. More...
void | connectOldOld (const HalfEdgeIndex &, const HalfEdgeIndex &, const VertexIndex &, boost::true_type)
| Both half-edges are old (manifold version). More...
void | connectOldOld (const HalfEdgeIndex &, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, boost::false_type)
| Both half-edges are old (non-manifold version). More...
void | addData (pcl::PointCloud< DataT > &cloud, const DataT &data, boost::true_type)
| Add mesh data. More...
void | addData (pcl::PointCloud< DataT > &, const DataT &, boost::false_type)
| Does nothing. More...
void | reconnect (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const bool is_boundary_ba, const bool is_boundary_cb)
| Deconnect the input half-edges from the mesh and adjust the indices of the connected half-edges. More...
void | reconnectNBNB (const HalfEdgeIndex &idx_he_bc, const HalfEdgeIndex &idx_he_cb, const VertexIndex &idx_v_b, boost::true_type)
| Both edges are not on the boundary. More...
void | reconnectNBNB (const HalfEdgeIndex &idx_he_bc, const HalfEdgeIndex &, const VertexIndex &idx_v_b, boost::false_type)
| Both edges are not on the boundary. More...
void | markDeleted (const VertexIndex &idx_vertex)
| Mark the given vertex as deleted. More...
void | markDeleted (const HalfEdgeIndex &idx_he)
| Mark the given half-edge as deleted. More...
void | markDeleted (const EdgeIndex &idx_edge)
| Mark the given edge (both half-edges) as deleted. More...
void | markDeleted (const FaceIndex &idx_face)
| Mark the given face as deleted. More...
IndexContainerT | remove (ElementContainerT &elements, DataContainerT &data_cloud)
| Removes mesh elements and data that are marked as deleted from the container. More...
void | incrementIf (IteratorT &it, boost::true_type) const
| Increment the iterator. More...
void | incrementIf (IteratorT &, boost::false_type) const
| Does nothing. More...
void | assignIf (const ConstIteratorT source, IteratorT target, boost::true_type) const
| Assign the source iterator to the target iterator. More...
void | assignIf (const ConstIteratorT, IteratorT, boost::false_type) const
| Does nothing. More...
void | setOutgoingHalfEdgeIndex (const VertexIndex &idx_vertex, const HalfEdgeIndex &idx_outgoing_half_edge)
| Set the outgoing half-edge index to a given vertex. More...
void | setTerminatingVertexIndex (const HalfEdgeIndex &idx_half_edge, const VertexIndex &idx_terminating_vertex)
| Set the terminating vertex index to a given half-edge. More...
void | setNextHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge, const HalfEdgeIndex &idx_next_half_edge)
| Set the next half_edge index to a given half-edge. More...
void | setPrevHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge, const HalfEdgeIndex &idx_prev_half_edge)
| Set the previous half-edge index to a given half-edge. More...
void | setFaceIndex (const HalfEdgeIndex &idx_half_edge, const FaceIndex &idx_face)
| Set the face index to a given half-edge. More...
void | setInnerHalfEdgeIndex (const FaceIndex &idx_face, const HalfEdgeIndex &idx_inner_half_edge)
| Set the inner half-edge index to a given face. More...
void | reserveData (DataCloudT &cloud, const size_t n, boost::true_type) const
| Reserve storage space for the mesh data. More...
void | reserveData (DataCloudT &, const size_t, boost::false_type) const
| Does nothing. More...
void | resizeData (DataCloudT &, const size_t n, const typename DataCloudT::value_type &data, boost::true_type) const
| Resize the mesh data. More...
void | resizeData (DataCloudT &, const size_t, const typename DataCloudT::value_type &, boost::false_type) const
| Does nothing. More...
void | clearData (DataCloudT &cloud, boost::true_type) const
| Clear the mesh data. More...
void | clearData (DataCloudT &, boost::false_type) const
| Does nothing. More...
Vertex & | getVertex (const VertexIndex &idx_vertex)
| Get the vertex for the given index. More...
Vertex | getVertex (const VertexIndex &idx_vertex) const
| Get the vertex for the given index. More...
void | setVertex (const VertexIndex &idx_vertex, const Vertex &vertex)
| Set the vertex at the given index. More...
HalfEdge & | getHalfEdge (const HalfEdgeIndex &idx_he)
| Get the half-edge for the given index. More...
HalfEdge | getHalfEdge (const HalfEdgeIndex &idx_he) const
| Get the half-edge for the given index. More...
void | setHalfEdge (const HalfEdgeIndex &idx_he, const HalfEdge &half_edge)
| Set the half-edge at the given index. More...
Face & | getFace (const FaceIndex &idx_face)
| Get the face for the given index. More...
Face | getFace (const FaceIndex &idx_face) const
| Get the face for the given index. More...
void | setFace (const FaceIndex &idx_face, const Face &face)
| Set the face at the given index. More...

## Detailed Description

### template<class MeshTraitsT>
class pcl::geometry::PolygonMesh< MeshTraitsT >

General half-edge mesh that can store any polygon with a minimum number of vertices of 3.

Template Parameters

  MeshTraitsT | Please have a look at pcl::geometry::DefaultMeshTraits.

Author
  Martin Saelzle

Definition at line 59 of file polygon_mesh.h.

## Member Typedef Documentation

## Base

template<class MeshTraitsT >

typedef pcl::geometry::MeshBase<PolygonMesh <MeshTraitsT>, MeshTraitsT, PolygonMeshTag> pcl::geometry::PolygonMesh< MeshTraitsT >::Base

Definition at line 63 of file polygon_mesh.h.

## ConstPtr

template<class MeshTraitsT >

typedef boost::shared_ptr<const Self> pcl::geometry::PolygonMesh< MeshTraitsT >::ConstPtr

Definition at line 67 of file polygon_mesh.h.

## EdgeData

template<class MeshTraitsT >

typedef Base::EdgeData pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeData

Definition at line 71 of file polygon_mesh.h.

## EdgeDataCloud

template<class MeshTraitsT >

typedef Base::EdgeDataCloud pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeDataCloud

Definition at line 83 of file polygon_mesh.h.

## EdgeIndex

template<class MeshTraitsT >

typedef Base::EdgeIndex pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeIndex

Definition at line 89 of file polygon_mesh.h.

## EdgeIndices

template<class MeshTraitsT >

typedef Base::EdgeIndices pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeIndices

Definition at line 94 of file polygon_mesh.h.

## FaceAroundFaceCirculator

template<class MeshTraitsT >

typedef Base::FaceAroundFaceCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::FaceAroundFaceCirculator

Definition at line 105 of file polygon_mesh.h.

## FaceAroundVertexCirculator

template<class MeshTraitsT >

typedef Base::FaceAroundVertexCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::FaceAroundVertexCirculator

Definition at line 101 of file polygon_mesh.h.

## FaceData

template<class MeshTraitsT >

typedef Base::FaceData pcl::geometry::PolygonMesh< MeshTraitsT >::FaceData

Definition at line 72 of file polygon_mesh.h.

## FaceDataCloud

template<class MeshTraitsT >

typedef Base::FaceDataCloud pcl::geometry::PolygonMesh< MeshTraitsT >::FaceDataCloud

Definition at line 84 of file polygon_mesh.h.

## FaceIndex

template<class MeshTraitsT >

typedef Base::FaceIndex pcl::geometry::PolygonMesh< MeshTraitsT >::FaceIndex

Definition at line 90 of file polygon_mesh.h.

## FaceIndices

template<class MeshTraitsT >

typedef Base::FaceIndices pcl::geometry::PolygonMesh< MeshTraitsT >::FaceIndices

Definition at line 95 of file polygon_mesh.h.

## HalfEdgeData

template<class MeshTraitsT >

typedef Base::HalfEdgeData pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeData

Definition at line 70 of file polygon_mesh.h.

## HalfEdgeDataCloud

template<class MeshTraitsT >

typedef Base::HalfEdgeDataCloud pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeDataCloud

Definition at line 82 of file polygon_mesh.h.

## HalfEdgeIndex

template<class MeshTraitsT >

typedef Base::HalfEdgeIndex pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeIndex

Definition at line 88 of file polygon_mesh.h.

## HalfEdgeIndices

template<class MeshTraitsT >

typedef Base::HalfEdgeIndices pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeIndices

Definition at line 93 of file polygon_mesh.h.

## HasEdgeData

template<class MeshTraitsT >

typedef Base::HasEdgeData pcl::geometry::PolygonMesh< MeshTraitsT >::HasEdgeData

Definition at line 78 of file polygon_mesh.h.

## HasFaceData

template<class MeshTraitsT >

typedef Base::HasFaceData pcl::geometry::PolygonMesh< MeshTraitsT >::HasFaceData

Definition at line 79 of file polygon_mesh.h.

## HasHalfEdgeData

template<class MeshTraitsT >

typedef Base::HasHalfEdgeData pcl::geometry::PolygonMesh< MeshTraitsT >::HasHalfEdgeData

Definition at line 77 of file polygon_mesh.h.

## HasVertexData

template<class MeshTraitsT >

typedef Base::HasVertexData pcl::geometry::PolygonMesh< MeshTraitsT >::HasVertexData

Definition at line 76 of file polygon_mesh.h.

## IncomingHalfEdgeAroundVertexCirculator

template<class MeshTraitsT >

typedef Base::IncomingHalfEdgeAroundVertexCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::IncomingHalfEdgeAroundVertexCirculator

Definition at line 100 of file polygon_mesh.h.

## InnerHalfEdgeAroundFaceCirculator

template<class MeshTraitsT >

typedef Base::InnerHalfEdgeAroundFaceCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::InnerHalfEdgeAroundFaceCirculator

Definition at line 103 of file polygon_mesh.h.

## IsManifold

template<class MeshTraitsT >

typedef Base::IsManifold pcl::geometry::PolygonMesh< MeshTraitsT >::IsManifold

Definition at line 73 of file polygon_mesh.h.

## MeshTag

template<class MeshTraitsT >

typedef Base::MeshTag pcl::geometry::PolygonMesh< MeshTraitsT >::MeshTag

Definition at line 74 of file polygon_mesh.h.

## OuterHalfEdgeAroundFaceCirculator

template<class MeshTraitsT >

typedef Base::OuterHalfEdgeAroundFaceCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::OuterHalfEdgeAroundFaceCirculator

Definition at line 104 of file polygon_mesh.h.

## OutgoingHalfEdgeAroundVertexCirculator

template<class MeshTraitsT >

typedef Base::OutgoingHalfEdgeAroundVertexCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::OutgoingHalfEdgeAroundVertexCirculator

Definition at line 99 of file polygon_mesh.h.

## Ptr

template<class MeshTraitsT >

typedef boost::shared_ptr<Self> pcl::geometry::PolygonMesh< MeshTraitsT >::Ptr

Definition at line 66 of file polygon_mesh.h.

## Self

template<class MeshTraitsT >

typedef PolygonMesh<MeshTraitsT> pcl::geometry::PolygonMesh< MeshTraitsT >::Self

Definition at line 65 of file polygon_mesh.h.

## VertexAroundFaceCirculator

template<class MeshTraitsT >

typedef Base::VertexAroundFaceCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::VertexAroundFaceCirculator

Definition at line 102 of file polygon_mesh.h.

## VertexAroundVertexCirculator

template<class MeshTraitsT >

typedef Base::VertexAroundVertexCirculator pcl::geometry::PolygonMesh< MeshTraitsT >::VertexAroundVertexCirculator

Definition at line 98 of file polygon_mesh.h.

## VertexData

template<class MeshTraitsT >

typedef Base::VertexData pcl::geometry::PolygonMesh< MeshTraitsT >::VertexData

Definition at line 69 of file polygon_mesh.h.

## VertexDataCloud

template<class MeshTraitsT >

typedef Base::VertexDataCloud pcl::geometry::PolygonMesh< MeshTraitsT >::VertexDataCloud

Definition at line 81 of file polygon_mesh.h.

## VertexIndex

template<class MeshTraitsT >

typedef Base::VertexIndex pcl::geometry::PolygonMesh< MeshTraitsT >::VertexIndex

Definition at line 87 of file polygon_mesh.h.

## VertexIndices

template<class MeshTraitsT >

typedef Base::VertexIndices pcl::geometry::PolygonMesh< MeshTraitsT >::VertexIndices

Definition at line 92 of file polygon_mesh.h.

## Constructor & Destructor Documentation

## PolygonMesh()

template<class MeshTraitsT >

pcl::geometry::PolygonMesh< MeshTraitsT >::PolygonMesh | ( |  | ) |

inline

Constructor.

Definition at line 108 of file polygon_mesh.h.

## Member Function Documentation

## addFace() [1/2]

template<class MeshTraitsT >

FaceIndex pcl::geometry::PolygonMesh< 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_0 | Index to the first vertex.
  [in] | idx_v_1 | Index to the second vertex.
  [in] | idx_v_2 | Index to the third vertex.
  [in] | face_data | Data that is set for the face.
  [in] | half_edge_data | Data that is set for all added half-edges.
  [in] | edge_data | Data 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 129 of file polygon_mesh.h.

## addFace() [2/2]

template<class MeshTraitsT >

FaceIndex pcl::geometry::PolygonMesh< MeshTraitsT >::addFace | ( | 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 a quad 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_0 | Index to the first vertex.
  [in] | idx_v_1 | Index to the second vertex.
  [in] | idx_v_2 | Index to the third vertex.
  [in] | idx_v_3 | Index to the fourth vertex.
  [in] | face_data | Data that is set for the face.
  [in] | half_edge_data | Data that is set for all added half-edges.
  [in] | edge_data | Data 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 155 of file polygon_mesh.h.

## Friends And Related Function Documentation

## pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, pcl::geometry::PolygonMeshTag >

template<class MeshTraitsT >

friend class pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, pcl::geometry::PolygonMeshTag >

friend

Definition at line 174 of file polygon_mesh.h.

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

- /build/pcl-qv3n_B/pcl-1.8.1+dfsg1/geometry/include/pcl/geometry/polygon_mesh.h