45 #include <pcl/pcl_config.h> 46 #include <pcl/surface/reconstruction.h> 47 #include <pcl/ModelCoefficients.h> 48 #include <pcl/PolygonMesh.h> 58 comparePoints2D (
const std::pair<int, Eigen::Vector4f> & p1,
const std::pair<int, Eigen::Vector4f> & p2)
60 double angle1 = atan2 (p1.second[1], p1.second[0]) + M_PI;
61 double angle2 = atan2 (p2.second[1], p2.second[0]) + M_PI;
62 return (angle1 > angle2);
70 template<
typename Po
intInT>
80 typedef boost::shared_ptr<ConvexHull<PointInT> >
Ptr;
81 typedef boost::shared_ptr<const ConvexHull<PointInT> >
ConstPtr;
111 std::vector<pcl::Vertices> &polygons);
155 if ((dimension == 2) || (dimension == 3))
158 PCL_ERROR (
"[pcl::%s::setDimension] Invalid input dimension specified!\n",
getClassName ().c_str ());
186 std::vector<pcl::Vertices> &polygons,
187 bool fill_polygon_data =
false);
198 std::vector<pcl::Vertices> &polygons,
199 bool fill_polygon_data =
false);
210 std::vector<pcl::Vertices> &polygons,
211 bool fill_polygon_data =
false);
235 return (
"ConvexHull");
269 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
273 #ifdef PCL_NO_PRECOMPILE 274 #include <pcl/surface/impl/convex_hull.hpp> int dimension_
The dimensionality of the concave hull (2D or 3D).
pcl::PointIndices hull_indices_
ConvexHull using libqhull library.
std::string qhull_flags
Option flag string to be used calling qhull.
void performReconstruction(PointCloud &points, std::vector< pcl::Vertices > &polygons, bool fill_polygon_data=false)
The actual reconstruction method.
boost::shared_ptr< ConvexHull< PointInT > > Ptr
~ConvexHull()
Empty destructor.
double getTotalVolume() const
Returns the total volume of the convex hull.
const Eigen::Vector3d z_axis_
This file defines compatibility wrappers for low level I/O functions.
PointCloud::ConstPtr PointCloudConstPtr
std::string getClassName() const override
Class get name method.
ConvexHull()
Empty constructor.
void calculateInputDimension()
Automatically determines the dimension of input data - 2D or 3D.
PointCloud::Ptr PointCloudPtr
boost::shared_ptr< PointCloud< PointInT > > Ptr
int getDimension() const
Returns the dimensionality (2 or 3) of the calculated hull.
void performReconstruction3D(PointCloud &points, std::vector< pcl::Vertices > &polygons, bool fill_polygon_data=false)
The reconstruction method for 3D data.
void performReconstruction2D(PointCloud &points, std::vector< pcl::Vertices > &polygons, bool fill_polygon_data=false)
The reconstruction method for 2D data.
boost::shared_ptr< const PointCloud< PointInT > > ConstPtr
void getHullPointIndices(pcl::PointIndices &hull_point_indices) const
Retrieve the indices of the input point cloud that for the convex hull.
MeshConstruction represents a base surface reconstruction class.
pcl::PointCloud< PointInT > PointCloud
void reconstruct(PointCloud &points, std::vector< pcl::Vertices > &polygons)
Compute a convex hull for all points given.
void setComputeAreaVolume(bool value)
If set to true, the qhull library is called to compute the total area and volume of the convex hull...
double projection_angle_thresh_
How close can a 2D plane's normal be to an axis to make projection problematic.
const Eigen::Vector3d x_axis_
void setDimension(int dimension)
Sets the dimension on the input data, 2D or 3D.
double getTotalArea() const
Returns the total area of the convex hull.
const Eigen::Vector3d y_axis_
boost::shared_ptr< const ConvexHull< PointInT > > ConstPtr
bool comparePoints2D(const std::pair< int, Eigen::Vector4f > &p1, const std::pair< int, Eigen::Vector4f > &p2)
Sort 2D points in a vector structure.