如何检测多边形是否具有自交叉?

时间:2011-07-21 14:58:37

标签: geometry computational-geometry

想象一下,您有一个2D多边形(2D closed polygonal chain更精确)。你如何检查它是否包含自交叉?它可以是凸面或凹面,顺时针或逆时针方向。

现在,我可以运行一个标准O(N log N)算法来检查是否有任何两个段交叉。但我相信,因为我们有一些额外的结构 - 段的顺序以及每两个连续段在端点处相遇的事实 - 可以设计出更简单,更快(可能O(N)?)的算法。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您是否只需检查自我交叉点,或找到所有这些?后者比O(N log N)更难,因为您可以与O(n^2)段进行n交叉。

如果您只需要查明是否存在自我交叉点,或者找到少量自交叉点,那么请查看here。本文似乎只是声称你需要什么,特别是在多边形平面化部分。我怀疑实现所描述的算法将是简单的,或任何合理大小的问题是值得的。但是这样的算法确实存在。免责声明:我没有尝试完成论文并理解它。