找到N个多边形中的所有交点

时间:2018-04-24 17:51:06

标签: geospatial computational-geometry

给定由边界点表示的 N 多边形,找到所有相交的多边形组。

例如,输入[polygon_A, polygon_B, polygon_C, polygon_D]如下所示,输出[(polygon_A, polygon_B), (polygon_B, polygon_C)](请注意,polygon_A是包含uniq_IDlist[points]的结构。)

我是否有可能比O(n ^ 2)更快地处理(假设每个多边形包含不超过10个点)

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以将轮廓视为独立线段的集合,并使用(例如)扫描线技术查找所有交叉点。复杂性达到O((n+k) log n),其中k是有效的交叉点数。

https://en.wikipedia.org/wiki/Line_segment_intersection https://fr.wikipedia.org/wiki/Algorithme_de_Bentley-Ottmann

在您的情况下,如果多边形是紧凑和分散的,您还可以考虑它们的轴对齐边界框并找到重叠。已知O(n log n + k)算法。