[英]Calculate intersection point between line and polygon with Boost.Geometry
我想计算一条线和一个多边形的交点,或两条线等。如何使用Boost.Geometry计算该点?
如果有人像我一样偶然发现了这个问题,如该答案所示 , 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
之间的other_line
。
另一方面,请注意
BMultiLineString mls;
bg::intersection(line, polygon, mls);
将返回与polygon
重叠的line
的子部分。
尽管我在大学期间从未使用过Boost库,但我们必须在非常基本的2D游戏引擎中进行这种计算。
那时我已经用向量解决了这个问题,我有一个向量用于位置,一个向量用于一条线的方向,并根据给定的信息用另一条线计算了大肠菌病点。 (使用atan2以弧度/度为单位知道方向)
当我对一个对象(一个正方形)执行此操作时,我已经获取了该对象的4个角,并计算了在给定的Y位置处的线的位置(Y值位于正方形的顶部和底部)是否在X的X区域内广场。
我目前正在工作,所以我不能给您我使用的代码,但这应该可以使您大致了解该方法。
我知道这并不完全是您要找的东西,但可能对将来的参考有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.