如何获取PCL中2个点之间的距离?我知道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中的一个错误(已在链接提交中修复(。
这是一个简单的功能,所以你不必更新到PCL:的新版本
返回2个点之间的欧氏距离
template <typename PointT> inline float
distance (const PointT& p1, const PointT& p2)
{
Eigen::Vector3f diff = p1.getVector3fMap () - p2.getVector3fMap ();
return (diff.norm ());
}
返回2个点之间的平方欧几里得距离(计算速度比真实欧几里得距离快(
template<typename PointT> inline float
squaredDistance (const PointT& p1, const PointT& p2)
{
Eigen::Vector3f diff = p1.getVector3fMap () - p2.getVector3fMap ();
return (diff.squaredNorm ());
}