pcl::ModelCoefficients定义一个平面与三点确定平面的法向量计算

点云投影需要用到pcl::ModelCoefficients,定义一个平面。实验过程中发现pcl::ModelCoefficients设置4个参数分别为ax+by+cz+d=0的a,b,c,d时,投影后的坐标是错误的(创建了一个近似于平行xy平面的平面,其z轴坐标与定义的平面高度不一致)

因为pcl老文档404了,查了很久都没有查到pcl::ModelCoefficients的Plane定义。

实验中发现对pcl::ModelCoefficients中的value1,value2,value3等比例缩放,value4不变的情况下,平面投影结果不变。所以猜测value1,value2,value3是经过比例缩放再和value4相加的,很可能是单位向量,实验后发现确实如此。

也就是说 ax+by+cz+d=0的平面,在pcl::ModelCoefficients中定义时,value1=a,value2=b,value3=c,value4=d/(a**2+b**2+c**2)**0.5。

---------------------

顺便存以下三点确定平面法向量的代码

struct Plane
{
  float a;
  float b;
  float c;
  float d;
};

int compute_plane(pcl::PointCloud::Ptr PlanePoints,Plane *pm)
{
    float x[3];
    float y[3];
    float z[3];


    for(int i=0;i<3;i++)
    {
      x[i]=PlanePoints->points[i].x;
      y[i]=PlanePoints->p

你可能感兴趣的:(平面,几何学,计算机视觉,点云)