我想要计算一条线和一个多边形的交点,或者两条线等。如何使用Boost.Geometry计算这个点?
问问题
1096 次
2 回答
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
。
于 2018-11-19T15:56:56.893 回答
0
虽然我在大学期间从未使用过 boost 库,但我们不得不在一个非常基本的 2d 游戏引擎中进行这种计算。
那时我已经用向量解决了它,我有一个用于位置的向量和一个用于线的方向的向量,并根据给定的信息用另一条线计算出碰撞点。(使用 atan2 了解以弧度/度为单位的方向)
当我用一个对象(一个正方形)这样做时,我已经取了对象的 4 个角并计算了给定 Y 位置的线的位置(即正方形的顶部和底部的 Y 值)是否在 X 区域内广场。
我目前正在工作,所以我不能给你我使用的代码,但这应该让你对这种方法有一个粗略的了解。
我知道这不是您正在寻找的东西,但它可能对将来的参考有所帮助
于 2013-08-09T10:18:11.483 回答