【问题标题】:How to detect if a polygon has self-intersections?如何检测多边形是否有自相交?
【发布时间】:2011-07-21 14:58:37
【问题描述】:

假设您有一个 2D 多边形(更准确地说是 2D closed polygonal chain)。你如何检查它是否包含自相交?它可以是凸面或凹面,顺时针或逆时针方向。

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

有什么想法吗?

【问题讨论】:

    标签: geometry computational-geometry


    【解决方案1】:

    您只需要检查自交点还是找到所有自交点?后者比O(N log N) 更难,因为您可以将O(n^2)n 段相交。

    如果您只需要找出是否存在自相交,或者找到少量自相交,请查看here。这篇论文似乎正是你所需要的,特别是在多边形平面化部分。对于任何规模合理的问题,我怀疑实现那里描述的算法是否简单或值得。但是这样的算法确实存在。免责声明:我没有尝试过阅读这篇论文并理解它。

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 2014-03-21
      • 2014-01-24
      • 2021-07-13
      • 2017-04-20
      • 2014-09-20
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      相关资源
      最近更新 更多