如何正确使用这个函数"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 ());
}
如何获得 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 ());
}