如何将自相交多边形划分为简单多边形?

Posted

技术标签:

【中文标题】如何将自相交多边形划分为简单多边形?【英文标题】:How divide self-intersecting polygon into simple polygons? 【发布时间】:2014-12-05 11:18:20 【问题描述】:

我有一个由点列表定义的多边形。该多边形可以与多个交点自相交。我通过蛮力找到了所有点。 (Bentley-Ottmann 扫描方法尚未实现)。例如, http://i.imgur.com/3F3LbfB.png 我有 4 个顶点,边 1-2 与边 4-0(点 A)相交,边 2-3 与边 4-0(点 B)相交。我有简单的多边形 0-1-A-0 和休息,这个休息也分为两个多边形:A-B-2-A 和 B-3-4-B 通用算法如何?

【问题讨论】:

【参考方案1】:

一种直接的方法是通过在交点处细分多边形段来计算planar straight-line graph (PSLG)(Bentley--Ottmann 自然地扩展为同时执行此操作),然后枚举其有限面。后者可以通过准备一个组合嵌入然后traversing it as described in this previous answer of mine来完成。

【讨论】:

以上是关于如何将自相交多边形划分为简单多边形?的主要内容,如果未能解决你的问题,请参考以下文章

非零缠绕规则和奇偶规则

凸多边形的划分 LibreOJ - 10149

如何重绘一个完全自相交的多边形?

多边形相交的简单算法

[DP 区间 剖分 高精] 凸多边形划分

不相交多边形中的点