44 #include <pcl/pcl_config.h>
48 #include <pcl/surface/reconstruction.h>
49 #include <pcl/PolygonMesh.h>
59 comparePoints2D (
const std::pair<int, Eigen::Vector4f> & p1,
const std::pair<int, Eigen::Vector4f> & p2)
61 double angle1 = std::atan2 (p1.second[1], p1.second[0]) +
M_PI;
62 double angle2 = std::atan2 (p2.second[1], p2.second[0]) +
M_PI;
63 return (angle1 > angle2);
71 template<
typename Po
intInT>
81 using Ptr = shared_ptr<ConvexHull<PointInT> >;
82 using ConstPtr = shared_ptr<const ConvexHull<PointInT> >;
108 std::vector<pcl::Vertices> &polygons);
152 if ((dimension == 2) || (dimension == 3))
155 PCL_ERROR (
"[pcl::%s::setDimension] Invalid input dimension specified!\n",
getClassName ().c_str ());
183 std::vector<pcl::Vertices> &polygons,
184 bool fill_polygon_data =
false);
195 std::vector<pcl::Vertices> &polygons,
196 bool fill_polygon_data =
false);
207 std::vector<pcl::Vertices> &polygons,
208 bool fill_polygon_data =
false);
232 return (
"ConvexHull");
270 #ifdef PCL_NO_PRECOMPILE
271 #include <pcl/surface/impl/convex_hull.hpp>
ConvexHull using libqhull library.
double getTotalArea() const
Returns the total area of the convex hull.
shared_ptr< const ConvexHull< PointInT > > ConstPtr
std::string getClassName() const override
Class get name method.
void setComputeAreaVolume(bool value)
If set to true, the qhull library is called to compute the total area and volume of the convex hull.
typename PointCloud::ConstPtr PointCloudConstPtr
void calculateInputDimension()
Automatically determines the dimension of input data - 2D or 3D.
void performReconstruction2D(PointCloud &points, std::vector< pcl::Vertices > &polygons, bool fill_polygon_data=false)
The reconstruction method for 2D data.
~ConvexHull() override=default
Empty destructor.
void setDimension(int dimension)
Sets the dimension on the input data, 2D or 3D.
ConvexHull()=default
Empty constructor.
const Eigen::Vector3d z_axis_
double getTotalVolume() const
Returns the total volume of the convex hull.
std::string qhull_flags
Option flag string to be used calling qhull.
void getHullPointIndices(pcl::PointIndices &hull_point_indices) const
Retrieve the indices of the input point cloud that for the convex hull.
pcl::PointIndices hull_indices_
shared_ptr< ConvexHull< PointInT > > Ptr
void performReconstruction(PointCloud &points, std::vector< pcl::Vertices > &polygons, bool fill_polygon_data=false)
The actual reconstruction method.
int getDimension() const
Returns the dimensionality (2 or 3) of the calculated hull.
double projection_angle_thresh_
How close can a 2D plane's normal be to an axis to make projection problematic.
typename PointCloud::Ptr PointCloudPtr
void reconstruct(PointCloud &points, std::vector< pcl::Vertices > &polygons)
Compute a convex hull for all points given.
const Eigen::Vector3d y_axis_
const Eigen::Vector3d x_axis_
void performReconstruction3D(PointCloud &points, std::vector< pcl::Vertices > &polygons, bool fill_polygon_data=false)
The reconstruction method for 3D data.
int dimension_
The dimensionality of the concave hull (2D or 3D).
MeshConstruction represents a base surface reconstruction class.
shared_ptr< PointCloud< PointInT > > Ptr
shared_ptr< const PointCloud< PointInT > > ConstPtr
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
bool comparePoints2D(const std::pair< int, Eigen::Vector4f > &p1, const std::pair< int, Eigen::Vector4f > &p2)
Sort 2D points in a vector structure.
Defines functions, macros and traits for allocating and using memory.
Defines all the PCL and non-PCL macros used.