测试多边形是简单还是复杂

时间:2010-10-22 23:57:52

标签: algorithm geometry polygon computational-geometry

对于定义为(x,y)点序列的多边形,如何检测它是否复杂?复杂多边形与自身交叉,如图所示:

example complex polygon image

有没有比检查时间复杂度为O(N 2 )的每一对更好的解决方案?

3 个答案:

答案 0 :(得分:14)

有扫描方法可以比蛮力方法更快地确定这一点。此外,它们可用于将非简单多边形分解为多个简单多边形。

有关详细信息,请参阅this article,尤其是此code to test for a simple polygon

答案 1 :(得分:5)

请参阅Bentley Ottmann Algorithm了解基于扫描的O((N + I)log N)方法。 其中N是线段的数量,I是交叉点的数量。

答案 2 :(得分:2)

实际上,这可以使用Chazelle的三角测量算法在线性时间内完成。它要么对多边形进行三角测量,要么找出多边形并不简单。