gpt4 book ai didi

c++ - 模板点类型的 boost::geometry::model::segment 构造函数?

转载 作者:行者123 更新时间:2023-11-30 03:46:03 25 4
gpt4 key购买 nike

如何将 boost::geometry::model::segment 与模板点类型一起使用?

例如,我可以使用模板点类型来计算 EuclideanDistanceDotProduct,但是要计算 PointSegmentDistance 我需要使用 boost::geometry::model::segment,但我不知道如何初始化它。

此代码有效 看来我弄错了此代码也不适用于模板点类型。我们如何将此代码与模板点类型一起使用?

template <typename TPoint>
double EuclideanDistance(const TPoint &pt1, const TPoint &pt2)
{
double distance= boost::geometry::distance(pt1, pt2);

return distance;
}

template <typename TPoint>
double DotProduct(const TPoint &pt1, const TPoint &pt2)
{
double product= boost::geometry::dot_product(pt1, pt2);

return product;
}

此代码无效

template <typename TPoint>
double PointSegmentDistance(const TPoint &pt1, const TPoint &pt2, const TPoint &pt3)
{
double distance= boost::geometry::distance(boost::geometry::model::segment(pt1, pt2), pt3);

return distance;
}

另一种选择是将其重写为:

template <typename TPoint>
double PointSegmentDistance(const TPoint &pt1, const TPoint &pt2, const TPoint &pt3)
{
boost::geometry::model::segment<TPoint> segment(pt1,pt2);

double distance= boost::geometry::distance(segment, pt3);

return distance;
}

template <typename TPoint>
bool SegmentSegmentIntersection(const TPoint &pt1, const TPoint &pt2, const TPoint &pt3, const TPoint &pt4)
{
boost::geometry::model::segment<TPoint> segment1(pt1,pt2);
boost::geometry::model::segment<TPoint> segment2(pt3,pt4);

bool result= boost::geometry::intersects(segment1, segment2);

return result;
}

最佳答案

你忘记了模板参数:

template <typename TPoint>
double PointSegmentDistance(const TPoint &pt1, const TPoint &pt2, const TPoint &pt3)
{
double distance= boost::geometry::distance(boost::geometry::model::segment<TPoint>(pt1,pt2), pt3);
// ^ template parameter
return distance;
}

关于c++ - 模板点类型的 boost::geometry::model::segment 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34355840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com