如何正确使用这个函数"pcl::geometry::squaredDistance"

how t use this function "pcl::geometry::squaredDistance" correctly

如何获得 PCL 中两点之间的距离? 我知道 PCL 中有一个函数 pcl::geometry::squaredDistance,但是当我调用这个函数时我得到这个错误

/usr/include/pcl-1.7/pcl/common/geometry.h: In instantiation of ‘float pcl::geometry::squaredDistance(const PointT&, const PointT&) [with PointT = pcl::PointXYZ]’:
error: no match for ‘operator-’ (operand types are ‘const pcl::PointXYZ’ and ‘const pcl::PointXYZ’)
Eigen::Vector3f diff = p1 -p2;
                          ^

这是显示我如何使用函数的代码

    pcl::PointXYZ p1(3, 4, 5);

    pcl::PointXYZ p2(0, 0, 0);

    double d = pcl::geometry::squaredDistance(p1, p2);

    std::cout << d << std::endl;

如有任何帮助,我们将不胜感激。

这是 PCL 1.7 (that was fixed in linked commit) 中的错误。

这是一个简单的功能,因此您不必更新到更新版本 PCL:

return 2点之间的欧氏距离

    template <typename PointT> inline float 
    distance (const PointT& p1, const PointT& p2)
    {
      Eigen::Vector3f diff = p1.getVector3fMap () - p2.getVector3fMap ();
      return (diff.norm ());
    }

return 2 点之间的平方欧氏距离(比真正的欧氏距离计算速度更快)

    template<typename PointT> inline float 
    squaredDistance (const PointT& p1, const PointT& p2)
    {
      Eigen::Vector3f diff = p1.getVector3fMap () - p2.getVector3fMap ();
      return (diff.squaredNorm ());
    }