Point Cloud Library (PCL)  1.11.0-dev
List of all members | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes
pcl::EarClipping Class Reference

The ear clipping triangulation algorithm. More...

#include <pcl/surface/ear_clipping.h>

+ Inheritance diagram for pcl::EarClipping:

Public Types

using Ptr = shared_ptr< EarClipping >
 
using ConstPtr = shared_ptr< const EarClipping >
 
- Public Types inherited from pcl::MeshProcessing
using Ptr = shared_ptr< MeshProcessing >
 
using ConstPtr = shared_ptr< const MeshProcessing >
 
using PolygonMeshConstPtr = PolygonMesh::ConstPtr
 

Public Member Functions

 EarClipping ()
 Empty constructor. More...
 
virtual bool initCompute ()
 Initialize computation. More...
 
- Public Member Functions inherited from pcl::MeshProcessing
 MeshProcessing ()
 Constructor. More...
 
virtual ~MeshProcessing ()
 Destructor. More...
 
void setInputMesh (const pcl::PolygonMeshConstPtr &input)
 Set the input mesh that we want to process. More...
 
pcl::PolygonMeshConstPtr getInputMesh () const
 Get the input mesh to be processed. More...
 
void process (pcl::PolygonMesh &output)
 Process the input surface mesh and store the results. More...
 

Public Attributes

pcl::PolygonMeshConstPtr input_mesh_
 Input polygonal mesh. More...
 

Protected Member Functions

bool initCompute () override
 This method should get called before starting the actual computation. More...
 
void performProcessing (pcl::PolygonMesh &output) override
 The actual surface reconstruction method. More...
 
void triangulate (const Vertices &vertices, PolygonMesh &output)
 Triangulate one polygon. More...
 
float area (const std::vector< std::uint32_t > &vertices)
 Compute the signed area of a polygon. More...
 
bool isEar (int u, int v, int w, const std::vector< std::uint32_t > &vertices)
 Check if the triangle (u,v,w) is an ear. More...
 
bool isInsideTriangle (const Eigen::Vector3f &u, const Eigen::Vector3f &v, const Eigen::Vector3f &w, const Eigen::Vector3f &p)
 Check if p is inside the triangle (u,v,w). More...
 
float crossProduct (const Eigen::Vector2f &p1, const Eigen::Vector2f &p2) const
 Compute the cross product between 2D vectors. More...
 
- Protected Member Functions inherited from pcl::MeshProcessing
virtual void deinitCompute ()
 UnInitialize computation. More...
 
virtual std::string getClassName () const
 Abstract class get name method. More...
 

Protected Attributes

pcl::PointCloud< pcl::PointXYZ >::Ptr points_
 a Pointer to the point cloud data. More...
 
- Protected Attributes inherited from pcl::MeshProcessing
pcl::PolygonMeshConstPtr input_mesh_
 Input polygonal mesh. More...
 

Detailed Description

The ear clipping triangulation algorithm.

The code is inspired by Flavien Brebion implementation, which is in n^3 and does not handle holes.

Author
Nicolas Burrus

Definition at line 52 of file ear_clipping.h.

Member Typedef Documentation

◆ ConstPtr

using pcl::EarClipping::ConstPtr = shared_ptr<const EarClipping>

Definition at line 56 of file ear_clipping.h.

◆ Ptr

using pcl::EarClipping::Ptr = shared_ptr<EarClipping>

Definition at line 55 of file ear_clipping.h.

Constructor & Destructor Documentation

◆ EarClipping()

pcl::EarClipping::EarClipping ( )
inline

Empty constructor.

Definition at line 61 of file ear_clipping.h.

Member Function Documentation

◆ area()

float pcl::EarClipping::area ( const std::vector< std::uint32_t > &  vertices)
protected

Compute the signed area of a polygon.

Parameters
[in]verticesthe vertices representing the polygon

◆ crossProduct()

float pcl::EarClipping::crossProduct ( const Eigen::Vector2f &  p1,
const Eigen::Vector2f &  p2 
) const
inlineprotected

Compute the cross product between 2D vectors.

Parameters
[in]p1the first 2D vector
[in]p2the first 2D vector

Definition at line 118 of file ear_clipping.h.

◆ initCompute() [1/2]

virtual bool pcl::MeshProcessing::initCompute

Initialize computation.

Must be called before processing starts.

◆ initCompute() [2/2]

bool pcl::EarClipping::initCompute ( )
overrideprotectedvirtual

This method should get called before starting the actual computation.

Reimplemented from pcl::MeshProcessing.

◆ isEar()

bool pcl::EarClipping::isEar ( int  u,
int  v,
int  w,
const std::vector< std::uint32_t > &  vertices 
)
protected

Check if the triangle (u,v,w) is an ear.

Parameters
[in]uthe first triangle vertex
[in]vthe second triangle vertex
[in]wthe third triangle vertex
[in]verticesa set of input vertices

◆ isInsideTriangle()

bool pcl::EarClipping::isInsideTriangle ( const Eigen::Vector3f &  u,
const Eigen::Vector3f &  v,
const Eigen::Vector3f &  w,
const Eigen::Vector3f &  p 
)
protected

Check if p is inside the triangle (u,v,w).

Parameters
[in]uthe first triangle vertex
[in]vthe second triangle vertex
[in]wthe third triangle vertex
[in]pthe point to check

◆ performProcessing()

void pcl::EarClipping::performProcessing ( pcl::PolygonMesh output)
overrideprotectedvirtual

The actual surface reconstruction method.

Parameters
[out]outputthe output polygonal mesh

Implements pcl::MeshProcessing.

◆ triangulate()

void pcl::EarClipping::triangulate ( const Vertices vertices,
PolygonMesh output 
)
protected

Triangulate one polygon.

Parameters
[in]verticesthe set of vertices
[out]outputthe resultant polygonal mesh

Member Data Documentation

◆ input_mesh_

pcl::PolygonMeshConstPtr pcl::MeshProcessing::input_mesh_

Input polygonal mesh.

Definition at line 146 of file processing.h.

◆ points_

pcl::PointCloud<pcl::PointXYZ>::Ptr pcl::EarClipping::points_
protected

a Pointer to the point cloud data.

Definition at line 63 of file ear_clipping.h.


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