Point Cloud Library (PCL)  1.14.1-dev
Classes | Typedefs | Functions
Module geometry

Detailed Description

Overview

The PCL geometry library contains computational geometry data structures and algorithms.

Requirements

Classes

class  pcl::LineIterator
 Organized Index Iterator for iterating over the "pixels" for a given line using the Bresenham algorithm. More...
 
class  pcl::geometry::MeshBase< DerivedT, MeshTraitsT, MeshTagT >
 Base class for the half-edge mesh. More...
 
class  pcl::geometry::VertexAroundVertexCirculator< MeshT >
 Circulates counter-clockwise around a vertex and returns an index to the terminating vertex of the outgoing half-edge (the target). More...
 
class  pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT >
 Circulates counter-clockwise around a vertex and returns an index to the outgoing half-edge (the target). More...
 
class  pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT >
 Circulates counter-clockwise around a vertex and returns an index to the incoming half-edge (the target). More...
 
class  pcl::geometry::FaceAroundVertexCirculator< MeshT >
 Circulates counter-clockwise around a vertex and returns an index to the face of the outgoing half-edge (the target). More...
 
class  pcl::geometry::VertexAroundFaceCirculator< MeshT >
 Circulates clockwise around a face and returns an index to the terminating vertex of the inner half-edge (the target). More...
 
class  pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT >
 Circulates clockwise around a face and returns an index to the inner half-edge (the target). More...
 
class  pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT >
 Circulates clockwise around a face and returns an index to the outer half-edge (the target). More...
 
class  pcl::geometry::FaceAroundFaceCirculator< MeshT >
 Circulates clockwise around a face and returns an index to the face of the outer half-edge (the target). More...
 
class  pcl::geometry::Vertex
 A vertex is a node in the mesh. More...
 
class  pcl::geometry::HalfEdge
 An edge is a connection between two vertices. More...
 
class  pcl::geometry::Face
 A face is a closed loop of edges. More...
 
class  pcl::geometry::MeshIO< MeshT >
 Read / write the half-edge mesh from / to a file. More...
 
struct  pcl::geometry::DefaultMeshTraits< VertexDataT, HalfEdgeDataT, EdgeDataT, FaceDataT >
 The mesh traits are used to set up compile time settings for the mesh. More...
 
class  pcl::OrganizedIndexIterator
 base class for iterators on 2-dimensional maps like images/organized clouds etc. More...
 
class  pcl::geometry::PolygonMesh< MeshTraitsT >
 General half-edge mesh that can store any polygon with a minimum number of vertices of 3. More...
 
class  pcl::geometry::QuadMesh< MeshTraitsT >
 Half-edge mesh that can only store quads. More...
 
class  pcl::geometry::TriangleMesh< MeshTraitsT >
 Half-edge mesh that can only store triangles. More...
 

Typedefs

using pcl::geometry::VertexIndex = pcl::detail::MeshIndex< struct VertexIndexTag >
 Index used to access elements in the half-edge mesh. More...
 
using pcl::geometry::HalfEdgeIndex = pcl::detail::MeshIndex< struct HalfEdgeIndexTag >
 Index used to access elements in the half-edge mesh. More...
 
using pcl::geometry::EdgeIndex = pcl::detail::MeshIndex< struct EdgeIndexTag >
 Index used to access elements in the half-edge mesh. More...
 
using pcl::geometry::FaceIndex = pcl::detail::MeshIndex< struct FaceIndexTag >
 Index used to access elements in the half-edge mesh. More...
 

Functions

Eigen::Vector3f pcl::geometry::projectedAsUnitVector (Eigen::Vector3f const &point, Eigen::Vector3f const &plane_origin, Eigen::Vector3f const &plane_normal)
 Given a plane defined by plane_origin and plane_normal, find the unit vector pointing from plane_origin to the projection of point on the plane. More...
 
Eigen::Vector3f pcl::geometry::randomOrthogonalAxis (Eigen::Vector3f const &axis)
 Define a random unit vector orthogonal to axis. More...
 
template<class MeshT >
void pcl::geometry::getBoundBoundaryHalfEdges (const MeshT &mesh, std::vector< typename MeshT::HalfEdgeIndices > &boundary_he_collection, const std::size_t expected_size=3)
 Get a collection of boundary half-edges for the input mesh. More...
 
template<class HalfEdgeMeshT >
void pcl::geometry::toFaceVertexMesh (const HalfEdgeMeshT &half_edge_mesh, pcl::PolygonMesh &face_vertex_mesh)
 Convert a half-edge mesh to a face-vertex mesh. More...
 
template<class HalfEdgeMeshT >
int pcl::geometry::toHalfEdgeMesh (const pcl::PolygonMesh &face_vertex_mesh, HalfEdgeMeshT &half_edge_mesh)
 Convert a face-vertex mesh to a half-edge mesh. More...
 

Typedef Documentation

◆ EdgeIndex

using pcl::geometry::EdgeIndex = typedef pcl::detail::MeshIndex<struct EdgeIndexTag>

#include <pcl/geometry/mesh_indices.h>

Index used to access elements in the half-edge mesh.

It is basically just a wrapper around an integer with a few added methods.

Author
Martin Saelzle

Definition at line 205 of file mesh_indices.h.

◆ FaceIndex

using pcl::geometry::FaceIndex = typedef pcl::detail::MeshIndex<struct FaceIndexTag>

#include <pcl/geometry/mesh_indices.h>

Index used to access elements in the half-edge mesh.

It is basically just a wrapper around an integer with a few added methods.

Author
Martin Saelzle

Definition at line 211 of file mesh_indices.h.

◆ HalfEdgeIndex

using pcl::geometry::HalfEdgeIndex = typedef pcl::detail::MeshIndex<struct HalfEdgeIndexTag>

#include <pcl/geometry/mesh_indices.h>

Index used to access elements in the half-edge mesh.

It is basically just a wrapper around an integer with a few added methods.

Author
Martin Saelzle

Definition at line 199 of file mesh_indices.h.

◆ VertexIndex

using pcl::geometry::VertexIndex = typedef pcl::detail::MeshIndex<struct VertexIndexTag>

#include <pcl/geometry/mesh_indices.h>

Index used to access elements in the half-edge mesh.

It is basically just a wrapper around an integer with a few added methods.

Author
Martin Saelzle

Definition at line 193 of file mesh_indices.h.

Function Documentation

◆ getBoundBoundaryHalfEdges()

template<class MeshT >
void pcl::geometry::getBoundBoundaryHalfEdges ( const MeshT &  mesh,
std::vector< typename MeshT::HalfEdgeIndices > &  boundary_he_collection,
const std::size_t  expected_size = 3 
)

#include <pcl/geometry/get_boundary.h>

Get a collection of boundary half-edges for the input mesh.

Parameters
[in]meshThe input mesh.
[out]boundary_he_collectionCollection of boundary half-edges. Each element in the vector is one connected boundary. The whole boundary is the union of all elements.
[in]expected_sizeIf you already know the size of the longest boundary you can tell this here. Defaults to 3 (minimum possible boundary).
Author
Martin Saelzle

Definition at line 60 of file get_boundary.h.

References pcl::detail::MeshIndex< IndexTagT >::get(), and pcl::geometry::toEdgeIndex().

◆ projectedAsUnitVector()

Eigen::Vector3f pcl::geometry::projectedAsUnitVector ( Eigen::Vector3f const &  point,
Eigen::Vector3f const &  plane_origin,
Eigen::Vector3f const &  plane_normal 
)
inline

#include <pcl/common/geometry.h>

Given a plane defined by plane_origin and plane_normal, find the unit vector pointing from plane_origin to the projection of point on the plane.

Parameters
[in]pointPoint projected on the plane
[in]plane_originThe plane origin
[in]plane_normalThe plane normal
Returns
unit vector pointing from plane_origin to the projection of point on the plane.

Definition at line 115 of file geometry.h.

References pcl::geometry::project().

Referenced by pcl::FLARELocalReferenceFrameEstimation< PointInT, PointNT, PointOutT, SignedDistanceT >::computePointLRF().

◆ randomOrthogonalAxis()

Eigen::Vector3f pcl::geometry::randomOrthogonalAxis ( Eigen::Vector3f const &  axis)
inline

#include <pcl/common/geometry.h>

Define a random unit vector orthogonal to axis.

Parameters
[in]axisAxis
Returns
random unit vector orthogonal to axis

Definition at line 134 of file geometry.h.

Referenced by pcl::BOARDLocalReferenceFrameEstimation< PointInT, PointNT, PointOutT >::computePointLRF(), and pcl::FLARELocalReferenceFrameEstimation< PointInT, PointNT, PointOutT, SignedDistanceT >::computePointLRF().

◆ toFaceVertexMesh()

template<class HalfEdgeMeshT >
void pcl::geometry::toFaceVertexMesh ( const HalfEdgeMeshT &  half_edge_mesh,
pcl::PolygonMesh face_vertex_mesh 
)

#include <pcl/geometry/mesh_conversion.h>

Convert a half-edge mesh to a face-vertex mesh.

Parameters
[in]half_edge_meshThe input mesh.
[out]face_vertex_meshThe output mesh.
Author
Martin Saelzle

Definition at line 56 of file mesh_conversion.h.

References pcl::PolygonMesh::cloud, pcl::PolygonMesh::polygons, pcl::toPCLPointCloud2(), and pcl::Vertices::vertices.

◆ toHalfEdgeMesh()

template<class HalfEdgeMeshT >
int pcl::geometry::toHalfEdgeMesh ( const pcl::PolygonMesh face_vertex_mesh,
HalfEdgeMeshT &  half_edge_mesh 
)

#include <pcl/geometry/mesh_conversion.h>

Convert a face-vertex mesh to a half-edge mesh.

Parameters
[in]face_vertex_meshThe input mesh.
[out]half_edge_meshThe output mesh. It must have data associated with the vertices.
Returns
The number of faces that could NOT be added to the half-edge mesh.
Author
Martin Saelzle

Definition at line 88 of file mesh_conversion.h.

References pcl::PolygonMesh::cloud, pcl::fromPCLPointCloud2(), and pcl::PolygonMesh::polygons.