文章目录
前言
本文分析一下pcl里凸包的源码。什么是凸包以及怎么求解,可以了解一下概念。
一、应用案例
#include <pcl/surface/convex_hull.h>
pcl::ConvexHull<pcl::PointXYZ> convex_hull;
convex_hull.setInputCloud(cloud_in);//输入点云
//convex_hull.setDimension(3);//设置维数,当然不设置,内部算法也会自己计算
//pcl::PointCloud<pcl::PointXYZ>::Ptr hull_out(new pcl::PointCloud<pcl::PointXYZ>);
convex_hull.reconstruct(*cloud_out);//输出凸包(点)
convex_hull.getHullPointIndices(Indices);//输出凸包(点)在输入点云中的id
二、源码分析
1.ConvexHull类
template<typename PointInT>
class ConvexHull : public MeshConstruction<PointInT>
{
...
//构造函数中dimension_(数据的维数) 默认是0
//x_axis_ , y_axis_ , z_axis_ 坐标轴三个参数也在这里确定
/** \brief Empty constructor. */
ConvexHull () : compute_area_ (false), total_area_ (0), total_volume_ (0), dimension_ (0),
projection_angle_thresh_ (cos (0.174532925) ), qhull_flags ("qhull "