对于由一系列(x,y)点定义的多边形,如何检测它是否为复杂多边形?复杂多边形与自身相交,如下所示:
有没有比O(N^2)更好的解决方案来检查每对多边形点?
有扫描方法可以比暴力算法更快地确定这一点。此外,它们可以用于将非简单多边形分解为多个简单多边形。
详情请参见本文,特别是测试简单多边形的代码。
关于这一点,可以查看 Bentley Ottmann算法,它是基于扫描线的O((N + I)log N)方法。 其中 N 是线段的数量,I 是交点的数量。