The ear clipping triangulation algorithm. The code is inspired by Flavien Brebion implementation, which is in n^3 and does not handle holes. More...
#include <ear_clipping_patched.h>
Public Types | |
typedef boost::shared_ptr < const EarClippingPatched > | ConstPtr |
typedef boost::shared_ptr < EarClippingPatched > | Ptr |
Public Member Functions | |
EarClippingPatched () | |
Empty constructor. | |
Protected Member Functions | |
float | area (const std::vector< uint32_t > &vertices) |
Compute the signed area of a polygon. | |
float | crossProduct (const Eigen::Vector2f &p1, const Eigen::Vector2f &p2) const |
Compute the cross product between 2D vectors. | |
bool | initCompute () |
This method should get called before starting the actual computation. | |
bool | isEar (int u, int v, int w, const std::vector< uint32_t > &vertices) |
Check if the triangle (u,v,w) is an ear. | |
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). | |
void | performProcessing (pcl::PolygonMesh &output) |
The actual surface reconstruction method. | |
void | triangulate (const Vertices &vertices, PolygonMesh &output) |
Triangulate one polygon. | |
Protected Attributes | |
pcl::PointCloud< pcl::PointXYZ > ::Ptr | points_ |
a Pointer to the point cloud data. |
The ear clipping triangulation algorithm. The code is inspired by Flavien Brebion implementation, which is in n^3 and does not handle holes.
Definition at line 51 of file ear_clipping_patched.h.
typedef boost::shared_ptr<const EarClippingPatched> pcl::EarClippingPatched::ConstPtr |
Definition at line 55 of file ear_clipping_patched.h.
typedef boost::shared_ptr<EarClippingPatched> pcl::EarClippingPatched::Ptr |
Definition at line 54 of file ear_clipping_patched.h.
pcl::EarClippingPatched::EarClippingPatched | ( | ) | [inline] |
Empty constructor.
Definition at line 60 of file ear_clipping_patched.h.
float pcl::EarClippingPatched::area | ( | const std::vector< uint32_t > & | vertices | ) | [protected] |
Compute the signed area of a polygon.
[in] | vertices | the vertices representing the polygon |
Definition at line 114 of file ear_clipping_patched.cpp.
float pcl::EarClippingPatched::crossProduct | ( | const Eigen::Vector2f & | p1, |
const Eigen::Vector2f & | p2 | ||
) | const [inline, protected] |
Compute the cross product between 2D vectors.
[in] | p1 | the first 2D vector |
[in] | p2 | the first 2D vector |
Definition at line 117 of file ear_clipping_patched.h.
bool pcl::EarClippingPatched::initCompute | ( | ) | [protected] |
This method should get called before starting the actual computation.
Definition at line 43 of file ear_clipping_patched.cpp.
bool pcl::EarClippingPatched::isEar | ( | int | u, |
int | v, | ||
int | w, | ||
const std::vector< uint32_t > & | vertices | ||
) | [protected] |
Check if the triangle (u,v,w) is an ear.
[in] | u | the first triangle vertex |
[in] | v | the second triangle vertex |
[in] | w | the third triangle vertex |
[in] | vertices | a set of input vertices |
Definition at line 151 of file ear_clipping_patched.cpp.
bool pcl::EarClippingPatched::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).
[in] | u | the first triangle vertex |
[in] | v | the second triangle vertex |
[in] | w | the third triangle vertex |
[in] | p | the point to check |
Definition at line 183 of file ear_clipping_patched.cpp.
void pcl::EarClippingPatched::performProcessing | ( | pcl::PolygonMesh & | output | ) | [protected] |
The actual surface reconstruction method.
[out] | output | the output polygonal mesh |
Definition at line 56 of file ear_clipping_patched.cpp.
void pcl::EarClippingPatched::triangulate | ( | const Vertices & | vertices, |
PolygonMesh & | output | ||
) | [protected] |
Triangulate one polygon.
[in] | vertices | the set of vertices |
[out] | output | the resultant polygonal mesh |
Definition at line 66 of file ear_clipping_patched.cpp.
pcl::PointCloud<pcl::PointXYZ>::Ptr pcl::EarClippingPatched::points_ [protected] |
a Pointer to the point cloud data.
Definition at line 62 of file ear_clipping_patched.h.