W3cubDocs

/PointCloudLibrary

Base class for the half-edge mesh. More...

#include <pcl/geometry/mesh_base.h>

Public Types

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

Public Member Functions

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 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...
template<bool CheckVerticesT>
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...
std::size_t sizeVertices () const
Get the number of the vertices. More...
std::size_t sizeHalfEdges () const
Get the number of the half-edges. More...
std::size_t sizeEdges () const
Get the number of the edges. More...
std::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 std::size_t n)
Reserve storage space n vertices. More...
void reserveEdges (const std::size_t n)
Reserve storage space for n edges (2*n storage space is reserved for the half-edges). More...
void reserveFaces (const std::size_t n)
Reserve storage space for n faces. More...
void resizeVertices (const std::size_t n, const VertexData &data=VertexData())
Resize the the vertices to n elements. More...
void resizeEdges (const std::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 std::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...
FaceIndex getFaceIndex (const FaceData &face_data) const
Get the index associated to the given face data. More...

Protected Types

using Vertex = pcl::geometry::Vertex
using HalfEdge = pcl::geometry::HalfEdge
using Face = pcl::geometry::Face
using Vertices = std::vector< Vertex >
using HalfEdges = std::vector< HalfEdge >
using Faces = std::vector< Face >
using VertexIterator = typename Vertices::iterator
using HalfEdgeIterator = typename HalfEdges::iterator
using FaceIterator = typename Faces::iterator
using VertexConstIterator = typename Vertices::const_iterator
using HalfEdgeConstIterator = typename HalfEdges::const_iterator
using FaceConstIterator = typename Faces::const_iterator

Protected Member Functions

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, std::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, std::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 &, std::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, std::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, std::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, std::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 &, std::true_type)
Both half-edges are old (manifold version). More...
void connectOldOld (const HalfEdgeIndex &, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, std::false_type)
Both half-edges are old (non-manifold version). More...
template<class DataT >
void addData (pcl::PointCloud< DataT > &cloud, const DataT &data, std::true_type)
Add mesh data. More...
template<class DataT >
void addData (pcl::PointCloud< DataT > &, const DataT &, std::false_type)
Does nothing. More...
void deleteFace (const FaceIndex &idx_face, std::true_type)
Manifold version of deleteFace. More...
void deleteFace (const FaceIndex &idx_face, std::false_type)
Non-manifold version of deleteFace. 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, std::true_type)
Both edges are not on the boundary. More...
void reconnectNBNB (const HalfEdgeIndex &idx_he_bc, const HalfEdgeIndex &, const VertexIndex &idx_v_b, std::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...
template<class ElementContainerT , class DataContainerT , class IndexContainerT , class HasDataT >
IndexContainerT remove (ElementContainerT &elements, DataContainerT &data_cloud)
Removes mesh elements and data that are marked as deleted from the container. More...
template<class IteratorT >
void incrementIf (IteratorT &it, std::true_type) const
Increment the iterator. More...
template<class IteratorT >
void incrementIf (IteratorT &, std::false_type) const
Does nothing. More...
template<class ConstIteratorT , class IteratorT >
void assignIf (const ConstIteratorT source, IteratorT target, std::true_type) const
Assign the source iterator to the target iterator. More...
template<class ConstIteratorT , class IteratorT >
void assignIf (const ConstIteratorT, IteratorT, std::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...
bool isBoundary (const FaceIndex &idx_face, std::true_type) const
Check if any vertex of the face lies on the boundary. More...
bool isBoundary (const FaceIndex &idx_face, std::false_type) const
Check if any edge of the face lies on the boundary. More...
bool isManifold (const VertexIndex &, std::true_type) const
Always manifold. More...
bool isManifold (const VertexIndex &idx_vertex, std::false_type) const
Check if the given vertex is manifold. More...
bool isManifold (std::true_type) const
Always manifold. More...
bool isManifold (std::false_type) const
Check if all vertices in the mesh are manifold. More...
template<class DataCloudT >
void reserveData (DataCloudT &cloud, const std::size_t n, std::true_type) const
Reserve storage space for the mesh data. More...
template<class DataCloudT >
void reserveData (DataCloudT &, const std::size_t, std::false_type) const
Does nothing. More...
template<class DataCloudT >
void resizeData (DataCloudT &, const std::size_t n, const typename DataCloudT::value_type &data, std::true_type) const
Resize the mesh data. More...
template<class DataCloudT >
void resizeData (DataCloudT &, const std::size_t, const typename DataCloudT::value_type &, std::false_type) const
Does nothing. More...
template<class DataCloudT >
void clearData (DataCloudT &cloud, std::true_type) const
Clear the mesh data. More...
template<class DataCloudT >
void clearData (DataCloudT &, std::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...

Friends

template<class MeshT >
class pcl::geometry::MeshIO

Detailed Description

template<class DerivedT, class MeshTraitsT, class MeshTagT>
class pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >

Base class for the half-edge mesh.

Template Parameters
DerivedT Has to implement the method 'addFaceImpl'. Please have a look at pcl::geometry::TriangleMesh, pcl::geometry::QuadMesh and pcl::geometry::PolygonMesh.
MeshTraitsT Please have a look at pcl::geometry::DefaultMeshTraits.
MeshTagT Tag describing the type of the mesh, e.g. TriangleMeshTag, QuadMeshTag, PolygonMeshTag.
Author
Martin Saelzle
Todo:
Add documentation

Definition at line 95 of file mesh_base.h.

Member Typedef Documentation

ConstPtr

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::ConstPtr = shared_ptr<const Self>

Definition at line 99 of file mesh_base.h.

Derived

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Derived = DerivedT

Definition at line 101 of file mesh_base.h.

EdgeData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::EdgeData = typename MeshTraitsT::EdgeData

Definition at line 106 of file mesh_base.h.

EdgeDataCloud

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::EdgeDataCloud = pcl::PointCloud<EdgeData>

Definition at line 132 of file mesh_base.h.

EdgeIndex

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::EdgeIndex = pcl::geometry::EdgeIndex

Definition at line 138 of file mesh_base.h.

EdgeIndices

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::EdgeIndices = std::vector<EdgeIndex>

Definition at line 143 of file mesh_base.h.

Face

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Face = pcl::geometry::Face
protected

Definition at line 1141 of file mesh_base.h.

FaceAroundFaceCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceAroundFaceCirculator = pcl::geometry::FaceAroundFaceCirculator<const Self>

Definition at line 161 of file mesh_base.h.

FaceAroundVertexCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceAroundVertexCirculator = pcl::geometry::FaceAroundVertexCirculator<const Self>

Definition at line 154 of file mesh_base.h.

FaceConstIterator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceConstIterator = typename Faces::const_iterator
protected

Definition at line 1153 of file mesh_base.h.

FaceData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceData = typename MeshTraitsT::FaceData

Definition at line 107 of file mesh_base.h.

FaceDataCloud

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceDataCloud = pcl::PointCloud<FaceData>

Definition at line 133 of file mesh_base.h.

FaceIndex

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceIndex = pcl::geometry::FaceIndex

Definition at line 139 of file mesh_base.h.

FaceIndices

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceIndices = std::vector<FaceIndex>

Definition at line 144 of file mesh_base.h.

FaceIterator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::FaceIterator = typename Faces::iterator
protected

Definition at line 1149 of file mesh_base.h.

Faces

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Faces = std::vector<Face>
protected

Definition at line 1145 of file mesh_base.h.

HalfEdge

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdge = pcl::geometry::HalfEdge
protected

Definition at line 1140 of file mesh_base.h.

HalfEdgeConstIterator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdgeConstIterator = typename HalfEdges::const_iterator
protected

Definition at line 1152 of file mesh_base.h.

HalfEdgeData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdgeData = typename MeshTraitsT::HalfEdgeData

Definition at line 105 of file mesh_base.h.

HalfEdgeDataCloud

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdgeDataCloud = pcl::PointCloud<HalfEdgeData>

Definition at line 131 of file mesh_base.h.

HalfEdgeIndex

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdgeIndex = pcl::geometry::HalfEdgeIndex

Definition at line 137 of file mesh_base.h.

HalfEdgeIndices

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdgeIndices = std::vector<HalfEdgeIndex>

Definition at line 142 of file mesh_base.h.

HalfEdgeIterator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdgeIterator = typename HalfEdges::iterator
protected

Definition at line 1148 of file mesh_base.h.

HalfEdges

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HalfEdges = std::vector<HalfEdge>
protected

Definition at line 1144 of file mesh_base.h.

HasEdgeData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HasEdgeData = std::integral_constant<bool, !std::is_same<EdgeData, pcl::geometry::NoData>::value>

Definition at line 125 of file mesh_base.h.

HasFaceData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HasFaceData = std::integral_constant<bool, !std::is_same<FaceData, pcl::geometry::NoData>::value>

Definition at line 128 of file mesh_base.h.

HasHalfEdgeData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HasHalfEdgeData = std::integral_constant<bool, !std::is_same<HalfEdgeData, pcl::geometry::NoData>::value>

Definition at line 122 of file mesh_base.h.

HasVertexData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::HasVertexData = std::integral_constant<bool, !std::is_same<VertexData, pcl::geometry::NoData>::value>

Definition at line 119 of file mesh_base.h.

IncomingHalfEdgeAroundVertexCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::IncomingHalfEdgeAroundVertexCirculator = pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<const Self>

Definition at line 152 of file mesh_base.h.

InnerHalfEdgeAroundFaceCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::InnerHalfEdgeAroundFaceCirculator = pcl::geometry::InnerHalfEdgeAroundFaceCirculator<const Self>

Definition at line 158 of file mesh_base.h.

IsManifold

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::IsManifold = typename MeshTraitsT::IsManifold

Definition at line 108 of file mesh_base.h.

MeshTag

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::MeshTag = MeshTagT

Definition at line 114 of file mesh_base.h.

OuterHalfEdgeAroundFaceCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::OuterHalfEdgeAroundFaceCirculator = pcl::geometry::OuterHalfEdgeAroundFaceCirculator<const Self>

Definition at line 160 of file mesh_base.h.

OutgoingHalfEdgeAroundVertexCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::OutgoingHalfEdgeAroundVertexCirculator = pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<const Self>

Definition at line 150 of file mesh_base.h.

Ptr

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Ptr = shared_ptr<Self>

Definition at line 98 of file mesh_base.h.

Self

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Self = MeshBase<DerivedT, MeshTraitsT, MeshTagT>

Definition at line 97 of file mesh_base.h.

Vertex

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Vertex = pcl::geometry::Vertex
protected

Definition at line 1139 of file mesh_base.h.

VertexAroundFaceCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexAroundFaceCirculator = pcl::geometry::VertexAroundFaceCirculator<const Self>

Definition at line 156 of file mesh_base.h.

VertexAroundVertexCirculator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexAroundVertexCirculator = pcl::geometry::VertexAroundVertexCirculator<const Self>

Definition at line 148 of file mesh_base.h.

VertexConstIterator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexConstIterator = typename Vertices::const_iterator
protected

Definition at line 1151 of file mesh_base.h.

VertexData

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexData = typename MeshTraitsT::VertexData

Definition at line 104 of file mesh_base.h.

VertexDataCloud

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexDataCloud = pcl::PointCloud<VertexData>

Definition at line 130 of file mesh_base.h.

VertexIndex

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexIndex = pcl::geometry::VertexIndex

Definition at line 136 of file mesh_base.h.

VertexIndices

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexIndices = std::vector<VertexIndex>

Definition at line 141 of file mesh_base.h.

VertexIterator

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::VertexIterator = typename Vertices::iterator
protected

Definition at line 1147 of file mesh_base.h.

Vertices

template<class DerivedT , class MeshTraitsT , class MeshTagT >
using pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::Vertices = std::vector<Vertex>
protected

Definition at line 1143 of file mesh_base.h.

Constructor & Destructor Documentation

MeshBase()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::MeshBase ( )
inline

Constructor.

Definition at line 164 of file mesh_base.h.

Member Function Documentation

addData() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::addData ( pcl::PointCloud< DataT > & ,
const DataT & ,
std::false_type
)
inlineprotected

Does nothing.

Definition at line 1556 of file mesh_base.h.

addData() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::addData ( pcl::PointCloud< DataT > & cloud,
const DataT & data,
std::true_type
)
inlineprotected

addEdge()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::addEdge ( const VertexIndex & idx_v_a,
const VertexIndex & idx_v_b,
const HalfEdgeData & he_data,
const EdgeData & edge_data
)
inlineprotected

Add an edge between the two given vertices and connect them with the vertices.

Parameters
[in] idx_v_a The first vertex index
[in] idx_v_b The second vertex index
[in] he_data Data associated with the half-edges. This is only added if the mesh has data associated with the half-edges.
[in] edge_data Data associated with the edge. This is only added if the mesh has data associated with the edges.
Returns
Index to the half-edge from vertex a to vertex b.

Definition at line 1241 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

addFace()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::addFace ( const VertexIndices & vertices,
const FaceData & face_data = FaceData(),
const EdgeData & edge_data = EdgeData(),
const HalfEdgeData & half_edge_data = HalfEdgeData()
)
inline

Add a face 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] vertices Indices to the vertices of the new face.
[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 202 of file mesh_base.h.

addFaceImplBase()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::addFaceImplBase ( const VertexIndices & vertices,
const FaceData & face_data,
const EdgeData & edge_data,
const HalfEdgeData & half_edge_data
)
inlineprotected

General implementation of addFace.

Definition at line 1157 of file mesh_base.h.

addVertex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::addVertex ( const VertexData & vertex_data = VertexData() )
inline

Add a vertex to the mesh.

Parameters
[in] vertex_data Data that is stored in the vertex. This is only added if the mesh has data associated with the vertices.
Returns
Index to the new vertex.

Definition at line 182 of file mesh_base.h.

assignIf() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class ConstIteratorT , class IteratorT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::assignIf ( const ConstIteratorT source,
IteratorT target,
std::true_type
) const
inlineprotected

Assign the source iterator to the target iterator.

Definition at line 1856 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::remove().

assignIf() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class ConstIteratorT , class IteratorT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::assignIf ( const ConstIteratorT,
IteratorT ,
std::false_type
) const
inlineprotected

Does nothing.

Definition at line 1866 of file mesh_base.h.

checkTopology1() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::checkTopology1 ( const VertexIndex & idx_v_a,
const VertexIndex & idx_v_b,
HalfEdgeIndex & idx_he_ab,
std::vector< bool >::reference is_new_ab,
std::false_type
) const
inlineprotected

Non manifold version of checkTopology1.

Definition at line 1290 of file mesh_base.h.

checkTopology1() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::checkTopology1 ( const VertexIndex & idx_v_a,
const VertexIndex & idx_v_b,
HalfEdgeIndex & idx_he_ab,
std::vector< bool >::reference is_new_ab,
std::true_type
) const
inlineprotected

Check if the edge between the two vertices can be added.

Parameters
[in] idx_v_a Index to the first vertex.
[in] idx_v_b Index to the second vertex.
[out] idx_he_ab Index to the half-edge ab if is_new_ab=false.
[out] is_new_ab true if the edge between the vertices exists already. Must be initialized with true!
Returns
true if the half-edge may be added.

Definition at line 1269 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

checkTopology2() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::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 & ,
std::true_type
) const
inlineprotected

Check if the face may be added (mesh does not become non-manifold).

Definition at line 1322 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

checkTopology2() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::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,
std::false_type
) const
inlineprotected

Check if the half-edge bc is the next half-edge of ab.

Parameters
[in] idx_he_ab Index to the half-edge between the vertices a and b.
[in] idx_he_bc Index to the half-edge between the vertices b and c.
[in] is_new_ab Half-edge ab is new.
[in] is_new_bc Half-edge bc is new.
[out] make_adjacent_ab_bc Half-edges ab and bc need to be made adjacent.
[out] idx_free_half_edge Free half-edge (needed for makeAdjacent)
Returns
true if addFace may be continued.

Definition at line 1344 of file mesh_base.h.

cleanUp()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::cleanUp ( )
inline

Removes all mesh elements and data that are marked as deleted.

Note
This removes all isolated vertices as well.

Definition at line 298 of file mesh_base.h.

clear()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::clear ( )
inline

Clear all mesh elements and data.

Definition at line 928 of file mesh_base.h.

clearData() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataCloudT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::clearData ( DataCloudT & ,
std::false_type
) const
inlineprotected

Does nothing.

Definition at line 2054 of file mesh_base.h.

clearData() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataCloudT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::clearData ( DataCloudT & cloud,
std::true_type
) const
inlineprotected

Clear the mesh data.

Definition at line 2046 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::clear().

connectFace()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectFace ( const HalfEdgeIndices & inner_he,
const FaceData & face_data
)
inlineprotected

Add a face to the mesh and connect it to the half-edges.

Parameters
[in] inner_he Inner half-edges of the face.
[in] face_data Data that is stored in the face. This is only added if the mesh has data associated with the faces.
Returns
Index to the new face.

Definition at line 1414 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

connectNewNew() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectNewNew ( const HalfEdgeIndex & idx_he_ab,
const HalfEdgeIndex & idx_he_bc,
const VertexIndex & idx_v_b,
std::false_type
)
inlineprotected

Both half-edges are new (non-manifold version).

Definition at line 1454 of file mesh_base.h.

connectNewNew() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectNewNew ( const HalfEdgeIndex & idx_he_ab,
const HalfEdgeIndex & idx_he_bc,
const VertexIndex & idx_v_b,
std::true_type
)
inlineprotected

connectNewOld()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectNewOld ( const HalfEdgeIndex & idx_he_ab,
const HalfEdgeIndex & idx_he_bc,
const VertexIndex & idx_v_b
)
inlineprotected

The first half-edge is new.

Definition at line 1478 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

connectOldNew()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectOldNew ( const HalfEdgeIndex & idx_he_ab,
const HalfEdgeIndex & idx_he_bc,
const VertexIndex & idx_v_b
)
inlineprotected

The second half-edge is new.

Definition at line 1494 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

connectOldOld() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectOldOld ( const HalfEdgeIndex & ,
const HalfEdgeIndex & ,
const VertexIndex & ,
std::true_type
)
inlineprotected

Both half-edges are old (manifold version).

Definition at line 1510 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

connectOldOld() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::connectOldOld ( const HalfEdgeIndex & ,
const HalfEdgeIndex & idx_he_bc,
const VertexIndex & idx_v_b,
std::false_type
)
inlineprotected

Both half-edges are old (non-manifold version).

Definition at line 1518 of file mesh_base.h.

connectPrevNext()

deleteEdge() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::deleteEdge ( const EdgeIndex & idx_edge )
inline

Mark the given edge (both half-edges) and the associated faces as deleted.

Note
Call cleanUp () to finally delete all mesh-elements.

Definition at line 270 of file mesh_base.h.

deleteEdge() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::deleteEdge ( const HalfEdgeIndex & idx_he )
inline

Mark the given half-edge, the opposite half-edge and the associated faces as deleted.

Note
Call cleanUp () to finally delete all mesh-elements.

Definition at line 247 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteEdge().

deleteFace() [1/3]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::deleteFace ( const FaceIndex & idx_face )
inline

Mark the given face as deleted.

More faces are deleted if the manifold mesh would become non-manifold.

Note
Call cleanUp () to finally delete all mesh-elements.

Definition at line 284 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteEdge(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteFace(), and pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteVertex().

deleteFace() [2/3]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::deleteFace ( const FaceIndex & idx_face,
std::false_type
)
inlineprotected

Non-manifold version of deleteFace.

Definition at line 1587 of file mesh_base.h.

deleteFace() [3/3]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::deleteFace ( const FaceIndex & idx_face,
std::true_type
)
inlineprotected

Manifold version of deleteFace.

If the mesh becomes non-manifold due to the delete operation the faces around the non-manifold vertex are deleted until the mesh becomes manifold again.

Definition at line 1569 of file mesh_base.h.

deleteVertex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::deleteVertex ( const VertexIndex & idx_vertex )
inline

Mark the given vertex and all connected half-edges and faces as deleted.

Note
Call cleanUp () to finally delete all mesh-elements.

Definition at line 218 of file mesh_base.h.

empty()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::empty ( ) const
inline

Check if the mesh is empty.

Definition at line 835 of file mesh_base.h.

emptyEdges()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::emptyEdges ( ) const
inline

Check if the edges are empty.

Definition at line 849 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::empty().

emptyFaces()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::emptyFaces ( ) const
inline

Check if the faces are empty.

Definition at line 856 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::empty().

emptyVertices()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::emptyVertices ( ) const
inline

Check if the vertices are empty.

Definition at line 842 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::empty().

getEdgeDataCloud() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
EdgeDataCloud& pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getEdgeDataCloud ( )
inline

Get access to the stored edge data.

Warning
Please make sure to NOT add or remove elements from the cloud.

Definition at line 1018 of file mesh_base.h.

getEdgeDataCloud() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
EdgeDataCloud pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getEdgeDataCloud ( ) const
inline

Get the stored edge data.

Definition at line 1025 of file mesh_base.h.

getEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
EdgeIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getEdgeIndex ( const EdgeData & edge_data ) const
inline

Get the index associated to the given edge data.

Definition at line 1111 of file mesh_base.h.

getFace() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
Face& pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFace ( const FaceIndex & idx_face )
inlineprotected

getFace() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
Face pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFace ( const FaceIndex & idx_face ) const
inlineprotected

Get the face for the given index.

Definition at line 2127 of file mesh_base.h.

getFaceAroundFaceCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceAroundFaceCirculator ( const FaceIndex & idx_face ) const
inline
See also
pcl::geometry::FaceAroundFaceCirculator

Definition at line 573 of file mesh_base.h.

getFaceAroundFaceCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceAroundFaceCirculator ( const HalfEdgeIndex & idx_inner_half_edge ) const
inline
See also
pcl::geometry::FaceAroundFaceCirculator

Definition at line 581 of file mesh_base.h.

getFaceAroundVertexCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceAroundVertexCirculator ( const HalfEdgeIndex & idx_outgoing_half_edge ) const
inline
See also
pcl::geometry::FaceAroundVertexCirculator

Definition at line 517 of file mesh_base.h.

getFaceAroundVertexCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceAroundVertexCirculator ( const VertexIndex & idx_vertex ) const
inline

getFaceDataCloud() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceDataCloud& pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceDataCloud ( )
inline

Get access to the stored face data.

Warning
Please make sure to NOT add or remove elements from the cloud.

Definition at line 1052 of file mesh_base.h.

getFaceDataCloud() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceDataCloud pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceDataCloud ( ) const
inline

Get the stored face data.

Definition at line 1059 of file mesh_base.h.

getFaceIndex() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getFaceIndex ( const FaceData & face_data ) const
inline

Get the index associated to the given face data.

Definition at line 1123 of file mesh_base.h.

getFaceIndex() [2/2]

getHalfEdge() [1/2]

getHalfEdge() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdge pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getHalfEdge ( const HalfEdgeIndex & idx_he ) const
inlineprotected

Get the half-edge for the given index.

Definition at line 2099 of file mesh_base.h.

getHalfEdgeDataCloud() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeDataCloud& pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getHalfEdgeDataCloud ( )
inline

Get access to the stored half-edge data.

Warning
Please make sure to NOT add or remove elements from the cloud.

Definition at line 983 of file mesh_base.h.

getHalfEdgeDataCloud() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeDataCloud pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getHalfEdgeDataCloud ( ) const
inline

Get the stored half-edge data.

Definition at line 990 of file mesh_base.h.

getHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getHalfEdgeIndex ( const HalfEdgeData & half_edge_data ) const
inline

Get the index associated to the given half-edge data.

Definition at line 1098 of file mesh_base.h.

getIncomingHalfEdgeAroundVertexCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
IncomingHalfEdgeAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getIncomingHalfEdgeAroundVertexCirculator ( const HalfEdgeIndex & idx_incoming_half_edge ) const
inline

getIncomingHalfEdgeAroundVertexCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
IncomingHalfEdgeAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getIncomingHalfEdgeAroundVertexCirculator ( const VertexIndex & idx_vertex ) const
inline

getIncomingHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getIncomingHalfEdgeIndex ( const VertexIndex & idx_vertex ) const
inline

Get the incoming half-edge index to a given vertex.

Definition at line 364 of file mesh_base.h.

getInnerHalfEdgeAroundFaceCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
InnerHalfEdgeAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getInnerHalfEdgeAroundFaceCirculator ( const FaceIndex & idx_face ) const
inline

getInnerHalfEdgeAroundFaceCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
InnerHalfEdgeAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getInnerHalfEdgeAroundFaceCirculator ( const HalfEdgeIndex & idx_inner_half_edge ) const
inline

getInnerHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getInnerHalfEdgeIndex ( const FaceIndex & idx_face ) const
inline

getNextHalfEdgeIndex()

getOppositeFaceIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
FaceIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOppositeFaceIndex ( const HalfEdgeIndex & idx_half_edge ) const
inline

Get the face index to a given half-edge.

Definition at line 427 of file mesh_base.h.

getOppositeHalfEdgeIndex()

getOriginatingVertexIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOriginatingVertexIndex ( const HalfEdgeIndex & idx_half_edge ) const
inline

Get the originating vertex index to a given half-edge.

Definition at line 384 of file mesh_base.h.

getOuterHalfEdgeAroundFaceCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
OuterHalfEdgeAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOuterHalfEdgeAroundFaceCirculator ( const FaceIndex & idx_face ) const
inline

getOuterHalfEdgeAroundFaceCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
OuterHalfEdgeAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOuterHalfEdgeAroundFaceCirculator ( const HalfEdgeIndex & idx_inner_half_edge ) const
inline

getOuterHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
HalfEdgeIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOuterHalfEdgeIndex ( const FaceIndex & idx_face ) const
inline

Get the outer half-edge inex to a given face.

Definition at line 447 of file mesh_base.h.

getOutgoingHalfEdgeAroundVertexCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
OutgoingHalfEdgeAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOutgoingHalfEdgeAroundVertexCirculator ( const HalfEdgeIndex & idx_outgoing_half_edge ) const
inline

getOutgoingHalfEdgeAroundVertexCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
OutgoingHalfEdgeAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getOutgoingHalfEdgeAroundVertexCirculator ( const VertexIndex & idx_vertex ) const
inline

getOutgoingHalfEdgeIndex()

getPrevHalfEdgeIndex()

getTerminatingVertexIndex()

getVertex() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
Vertex& pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertex ( const VertexIndex & idx_vertex )
inlineprotected

getVertex() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
Vertex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertex ( const VertexIndex & idx_vertex ) const
inlineprotected

Get the vertex for the given index.

Definition at line 2071 of file mesh_base.h.

getVertexAroundFaceCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexAroundFaceCirculator ( const FaceIndex & idx_face ) const
inline

getVertexAroundFaceCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexAroundFaceCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexAroundFaceCirculator ( const HalfEdgeIndex & idx_inner_half_edge ) const
inline
See also
pcl::geometry::VertexAroundFaceCirculator

Definition at line 533 of file mesh_base.h.

getVertexAroundVertexCirculator() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexAroundVertexCirculator ( const HalfEdgeIndex & idx_outgoing_half_edge ) const
inline
See also
pcl::geometry::VertexAroundVertexCirculator

Definition at line 467 of file mesh_base.h.

getVertexAroundVertexCirculator() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexAroundVertexCirculator pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexAroundVertexCirculator ( const VertexIndex & idx_vertex ) const
inline

getVertexDataCloud() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexDataCloud& pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexDataCloud ( )
inline

Get access to the stored vertex data.

Warning
Please make sure to NOT add or remove elements from the cloud.

Definition at line 948 of file mesh_base.h.

getVertexDataCloud() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexDataCloud pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexDataCloud ( ) const
inline

Get the stored vertex data.

Definition at line 955 of file mesh_base.h.

getVertexIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
VertexIndex pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::getVertexIndex ( const VertexData & vertex_data ) const
inline

Get the index associated to the given vertex data.

Returns
Invalid index if the mesh does not have associated vertex data.

Definition at line 1086 of file mesh_base.h.

incrementIf() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class IteratorT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::incrementIf ( IteratorT & ,
std::false_type
) const
inlineprotected

Does nothing.

Definition at line 1850 of file mesh_base.h.

incrementIf() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class IteratorT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::incrementIf ( IteratorT & it,
std::true_type
) const
inlineprotected

Increment the iterator.

Definition at line 1842 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::remove().

isBoundary() [1/7]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isBoundary ( const EdgeIndex & idx_edge ) const
inline

Check if the given edge lies on the boundary (any of the two half-edges lies on the boundary.

Definition at line 743 of file mesh_base.h.

isBoundary() [2/7]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<bool CheckVerticesT>
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isBoundary ( const FaceIndex & idx_face ) const
inline

Check if the given face lies on the boundary.

There are two versions of this method, selected by the template parameter.

Template Parameters
CheckVerticesT Check if any vertex lies on the boundary (true) or check if any edge lies on the boundary (false).

Definition at line 759 of file mesh_base.h.

isBoundary() [3/7]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isBoundary ( const FaceIndex & idx_face ) const
inline

Check if the given face lies on the boundary.

This method uses isBoundary true which checks if any vertex lies on the boundary.

Definition at line 768 of file mesh_base.h.

isBoundary() [4/7]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isBoundary ( const FaceIndex & idx_face,
std::false_type
) const
inlineprotected

Check if any edge of the face lies on the boundary.

Definition at line 1950 of file mesh_base.h.

isBoundary() [5/7]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isBoundary ( const FaceIndex & idx_face,
std::true_type
) const
inlineprotected

Check if any vertex of the face lies on the boundary.

Definition at line 1934 of file mesh_base.h.

isBoundary() [6/7]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isBoundary ( const HalfEdgeIndex & idx_he ) const
inline

Check if the given half-edge lies on the bounddary.

Definition at line 734 of file mesh_base.h.

isBoundary() [7/7]

isDeleted() [1/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isDeleted ( const EdgeIndex & idx_edge ) const
inline

Check if the given edge (any of the two half-edges) is marked as deleted.

Definition at line 690 of file mesh_base.h.

isDeleted() [2/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isDeleted ( const FaceIndex & idx_face ) const
inline

Check if the given face is marked as deleted.

Definition at line 699 of file mesh_base.h.

isDeleted() [3/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isDeleted ( const HalfEdgeIndex & idx_he ) const
inline

Check if the given half-edge is marked as deleted.

Definition at line 681 of file mesh_base.h.

isDeleted() [4/4]

isEqualTopology()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isEqualTopology ( const Self & other ) const
inline

Check if the other mesh has the same topology as this mesh.

Definition at line 593 of file mesh_base.h.

isIsolated()

isManifold() [1/6]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isManifold ( ) const
inline

Check if the mesh is manifold.

Definition at line 790 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::isManifold().

isManifold() [2/6]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isManifold ( const VertexIndex & ,
std::true_type
) const
inlineprotected

Always manifold.

Definition at line 1967 of file mesh_base.h.

isManifold() [3/6]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isManifold ( const VertexIndex & idx_vertex ) const
inline

Check if the given vertex is manifold.

Isolated vertices are manifold.

Definition at line 780 of file mesh_base.h.

isManifold() [4/6]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isManifold ( const VertexIndex & idx_vertex,
std::false_type
) const
inlineprotected

Check if the given vertex is manifold.

Definition at line 1974 of file mesh_base.h.

isManifold() [5/6]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isManifold ( std::false_type ) const
inlineprotected

Check if all vertices in the mesh are manifold.

Definition at line 1994 of file mesh_base.h.

isManifold() [6/6]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isManifold ( std::true_type ) const
inlineprotected

Always manifold.

Definition at line 1991 of file mesh_base.h.

isValid() [1/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isValid ( const EdgeIndex & idx_edge ) const
inline

Check if the given edge index is a valid index into the mesh.

Definition at line 655 of file mesh_base.h.

isValid() [2/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isValid ( const FaceIndex & idx_face ) const
inline

Check if the given face index is a valid index into the mesh.


Definition at line 662 of file mesh_base.h.

isValid() [3/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isValid ( const HalfEdgeIndex & idx_he ) const
inline

Check if the given half-edge index is a valid index into the mesh.


Definition at line 648 of file mesh_base.h.

isValid() [4/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::isValid ( const VertexIndex & idx_vertex ) const
inline

Check if the given vertex index is a valid index into the mesh.

Definition at line 640 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteEdge(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteFace(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteVertex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getFace(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getFaceAroundFaceCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getFaceAroundVertexCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getFaceIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getHalfEdge(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getIncomingHalfEdgeAroundVertexCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getIncomingHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getInnerHalfEdgeAroundFaceCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getInnerHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getNextHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOppositeFaceIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOppositeHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOriginatingVertexIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOuterHalfEdgeAroundFaceCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOuterHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOutgoingHalfEdgeAroundVertexCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getOutgoingHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getPrevHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getTerminatingVertexIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getVertex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getVertexAroundFaceCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::getVertexAroundVertexCirculator(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::isBoundary(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::isDeleted(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::isIsolated(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::isManifold(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::markDeleted(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setFace(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setFaceIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setHalfEdge(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setInnerHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setNextHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setOutgoingHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setPrevHalfEdgeIndex(), pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setTerminatingVertexIndex(), and pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::setVertex().

makeAdjacent()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::makeAdjacent ( const HalfEdgeIndex & idx_he_ab,
const HalfEdgeIndex & idx_he_bc,
HalfEdgeIndex & idx_free_half_edge
)
inlineprotected

Make the half-edges bc the next half-edge of ab.

Parameters
[in] idx_he_ab Index to the half-edge between the vertices a and b.
[in] idx_he_bc Index to the half-edge between the vertices b and c.
[in,out] idx_free_half_edge Free half-edge needed to re-connect the half-edges around vertex b.

Definition at line 1388 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::addFaceImplBase().

markDeleted() [1/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::markDeleted ( const EdgeIndex & idx_edge )
inlineprotected

Mark the given edge (both half-edges) as deleted.

Definition at line 1751 of file mesh_base.h.

markDeleted() [2/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::markDeleted ( const FaceIndex & idx_face )
inlineprotected

Mark the given face as deleted.

Definition at line 1760 of file mesh_base.h.

markDeleted() [3/4]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::markDeleted ( const HalfEdgeIndex & idx_he )
inlineprotected

Mark the given half-edge as deleted.

Definition at line 1743 of file mesh_base.h.

markDeleted() [4/4]

reconnect()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reconnect ( const HalfEdgeIndex & idx_he_ab,
const HalfEdgeIndex & idx_he_bc,
const bool is_boundary_ba,
const bool is_boundary_cb
)
inlineprotected

Deconnect the input half-edges from the mesh and adjust the indices of the connected half-edges.

Definition at line 1636 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::deleteFace().

reconnectNBNB() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reconnectNBNB ( const HalfEdgeIndex & idx_he_bc,
const HalfEdgeIndex & ,
const VertexIndex & idx_v_b,
std::false_type
)
inlineprotected

Both edges are not on the boundary.

Non-manifold version.

Definition at line 1719 of file mesh_base.h.

reconnectNBNB() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reconnectNBNB ( const HalfEdgeIndex & idx_he_bc,
const HalfEdgeIndex & idx_he_cb,
const VertexIndex & idx_v_b,
std::true_type
)
inlineprotected

Both edges are not on the boundary.

Manifold version.

Definition at line 1683 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::reconnect().

remove()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class ElementContainerT , class DataContainerT , class IndexContainerT , class HasDataT >
IndexContainerT pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::remove ( ElementContainerT & elements,
DataContainerT & data_cloud
)
inlineprotected

Removes mesh elements and data that are marked as deleted from the container.

Template Parameters
ElementContainerT e.g. std::vector <Vertex>
DataContainerT e.g. std::vector <VertexData>
IndexContainerT e.g. std::vector <VertexIndex>
HasDataT Integral constant specifying if the mesh has data associated with the elements.
Parameters
[in,out] elements Container for the mesh elements. Resized to the new size.
[in,out] data_cloud Container for the mesh data. Resized to the new size.
Returns
Container with the same size as the old input data. Holds the indices to the new elements for each non-deleted element and an invalid index if it is deleted.

Definition at line 1788 of file mesh_base.h.

reserveData() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataCloudT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reserveData ( DataCloudT & ,
const std::size_t ,
std::false_type
) const
inlineprotected

Does nothing.

Definition at line 2018 of file mesh_base.h.

reserveData() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataCloudT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reserveData ( DataCloudT & cloud,
const std::size_t n,
std::true_type
) const
inlineprotected

reserveEdges()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reserveEdges ( const std::size_t n )
inline

Reserve storage space for n edges (2*n storage space is reserved for the half-edges).

Definition at line 876 of file mesh_base.h.

reserveFaces()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reserveFaces ( const std::size_t n )
inline

Reserve storage space for n faces.

Definition at line 885 of file mesh_base.h.

reserveVertices()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::reserveVertices ( const std::size_t n )
inline

Reserve storage space n vertices.

Definition at line 867 of file mesh_base.h.

resizeData() [1/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataCloudT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::resizeData ( DataCloudT & ,
const std::size_t n,
const typename DataCloudT::value_type & data,
std::true_type
) const
inlineprotected

resizeData() [2/2]

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class DataCloudT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::resizeData ( DataCloudT & ,
const std::size_t ,
const typename DataCloudT::value_type & ,
std::false_type
) const
inlineprotected

Does nothing.

Definition at line 2037 of file mesh_base.h.

resizeEdges()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::resizeEdges ( const std::size_t n,
const EdgeData & edge_data = EdgeData(),
const HalfEdgeData he_data = HalfEdgeData()
)
inline

Resize the edges to n elements (half-edges will hold 2*n elements).

Definition at line 905 of file mesh_base.h.

resizeFaces()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::resizeFaces ( const std::size_t n,
const FaceData & data = FaceData()
)
inline

Resize the faces to n elements.

Definition at line 916 of file mesh_base.h.

resizeVertices()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::resizeVertices ( const std::size_t n,
const VertexData & data = VertexData()
)
inline

Resize the the vertices to n elements.

Definition at line 897 of file mesh_base.h.

setEdgeDataCloud()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setEdgeDataCloud ( const EdgeDataCloud & edge_data_cloud )
inline

Change the stored edge data.

Parameters
[in] edge_data_cloud The new edge data. Must be the same as the current data.
Returns
true if the cloud could be set.

Definition at line 1035 of file mesh_base.h.

setFace()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setFace ( const FaceIndex & idx_face,
const Face & face
)
inlineprotected

Set the face at the given index.

Definition at line 2135 of file mesh_base.h.

setFaceDataCloud()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setFaceDataCloud ( const FaceDataCloud & face_data_cloud )
inline

Change the stored face data.

Parameters
[in] face_data_cloud The new face data. Must be the same as the current data.
Returns
true if the cloud could be set.

Definition at line 1069 of file mesh_base.h.

setFaceIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setFaceIndex ( const HalfEdgeIndex & idx_half_edge,
const FaceIndex & idx_face
)
inlineprotected

Set the face index to a given half-edge.

Definition at line 1913 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::connectFace().

setHalfEdge()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setHalfEdge ( const HalfEdgeIndex & idx_he,
const HalfEdge & half_edge
)
inlineprotected

Set the half-edge at the given index.

Definition at line 2107 of file mesh_base.h.

setHalfEdgeDataCloud()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setHalfEdgeDataCloud ( const HalfEdgeDataCloud & half_edge_data_cloud )
inline

Change the stored half-edge data.

Parameters
[in] half_edge_data_cloud The new half-edge data. Must be the same as the current data.
Returns
true if the cloud could be set.

Definition at line 1001 of file mesh_base.h.

setInnerHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setInnerHalfEdgeIndex ( const FaceIndex & idx_face,
const HalfEdgeIndex & idx_inner_half_edge
)
inlineprotected

Set the inner half-edge index to a given face.

Definition at line 1921 of file mesh_base.h.

setNextHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setNextHalfEdgeIndex ( const HalfEdgeIndex & idx_half_edge,
const HalfEdgeIndex & idx_next_half_edge
)
inlineprotected

Set the next half_edge index to a given half-edge.

Definition at line 1895 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::connectPrevNext().

setOutgoingHalfEdgeIndex()

setPrevHalfEdgeIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setPrevHalfEdgeIndex ( const HalfEdgeIndex & idx_half_edge,
const HalfEdgeIndex & idx_prev_half_edge
)
inlineprotected

Set the previous half-edge index to a given half-edge.

Definition at line 1904 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::connectPrevNext().

setTerminatingVertexIndex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setTerminatingVertexIndex ( const HalfEdgeIndex & idx_half_edge,
const VertexIndex & idx_terminating_vertex
)
inlineprotected

Set the terminating vertex index to a given half-edge.

Definition at line 1886 of file mesh_base.h.

setVertex()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
void pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setVertex ( const VertexIndex & idx_vertex,
const Vertex & vertex
)
inlineprotected

Set the vertex at the given index.

Definition at line 2079 of file mesh_base.h.

setVertexDataCloud()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
bool pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::setVertexDataCloud ( const VertexDataCloud & vertex_data_cloud )
inline

Change the stored vertex data.

Parameters
[in] vertex_data_cloud The new vertex data. Must be the same as the current data.
Returns
true if the cloud could be set.

Definition at line 966 of file mesh_base.h.

sizeEdges()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
std::size_t pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::sizeEdges ( ) const
inline

Get the number of the edges.

Definition at line 816 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::cleanUp().

sizeFaces()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
std::size_t pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::sizeFaces ( ) const
inline

sizeHalfEdges()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
std::size_t pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::sizeHalfEdges ( ) const
inline

Get the number of the half-edges.

Definition at line 808 of file mesh_base.h.

Referenced by pcl::geometry::MeshBase< QuadMesh< MeshTraitsT >, MeshTraitsT, QuadMeshTag >::isEqualTopology().

sizeVertices()

template<class DerivedT , class MeshTraitsT , class MeshTagT >
std::size_t pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >::sizeVertices ( ) const
inline

Friends And Related Function Documentation

pcl::geometry::MeshIO

template<class DerivedT , class MeshTraitsT , class MeshTagT >
template<class MeshT >
friend class pcl::geometry::MeshIO
friend

Definition at line 2192 of file mesh_base.h.


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

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1geometry_1_1_mesh_base.html