我想计算一条线和一条多边形或两条线等的交点。如何使用Boost.Geometry计算这个点?
答案 0 :(得分:1)
如this answer所暗示的那样,如果有人像我一样偶然发现了这个问题,bg::intersection
执行的操作实际上取决于您提供的对象类型。
让我们定义
typedef bg::model::d2::point_xy<double> BPoint;
typedef bg::model::multi_point<BPoint> BMultiPoint;
typedef bg::model::multi_linestring<BLineString> BMultiLineString;
然后运行
BMultiPoint mp;
bg::intersection(line, polygon, mp);
bg::intersection(line, other_line, mp);
将返回polygon
和line
之间的交点,然后返回line
和other_line
之间的交点。
另一方面,请注意
BMultiLineString mls;
bg::intersection(line, polygon, mls);
将返回line
与polygon
重叠的子部分。
答案 1 :(得分:0)
我用矢量解决了它,我有一个位置矢量和一个线的方向,并根据给定的信息计算了另一条线的校正点。 (使用atan2以弧度/度数知道方向)
当我用一个物体(一个正方形)做到这一点时,我已经拍摄了物体的四个角并计算出在给定Y位置的线的位置(Y值是正方形的顶部和底部)是否在广场的X区域。
我目前在工作,所以我无法给你我使用的代码,但这应该让你大致了解这种方法。
我知道这不是您正在寻找的,但它可能对将来的参考有用