我有两个多边形,其最小和最大,纬度和经度如下:
Polygon A: minimum_latitude=2.089 degree, maximum_latitude=2.93 degree, minimum_longitude=-122.95 degree, maximum_longitude=-122.85 degree
Polygon B: minimum_latitude=2.1 degree, maximum_latitude=2.83 degree, minimum_longitude=-121.95 degree, maximum_longitude=-120.85 degree
如何在c ++中检查Polygon A是否与Polygon B相交(或包含在内)?
我的纬度和经度都是度数。我是否需要将它们转换为弧度以检查多边形是否相交?
检查交叉点的一种方法是检查多边形B的minimum_latitude是否位于多边形A的minimum_latitude和maximum_latitude之间,反之亦然?这是正确的检查方式吗?我是否需要将纬度和经度转换为弧度才能执行相交测试。
答案 0 :(得分:2)
如果多边形不相交,您可以使用最小值/最大值作为快速检查;如果边界矩形重叠,封闭的多边形可能会相交......但您需要进一步检查以确保。除非您使用多边形仅存储简单的矩形;)
答案 1 :(得分:2)
有一个很棒的Polygon Collision算法可能正是您所寻找的: 基本上,你检查多边形之间的最短距离。
答案 2 :(得分:2)
不需要任何外部库等。
就是这样。
这是最简单,最快捷的方式。如果您希望通过使用排序数据或八叉树等进行多次优化。