用另一个多边形拆分多边形

时间:2014-09-09 10:46:02

标签: algorithm math graphics

我需要一个用于分割(凸)多边形的算法(让我们称之为 base 多边形)。多边形应该被另一个多边形的边分割成几个较小的多边形(让我们称之为分裂多边形)。 我知道存在剪切多边形的算法(例如Sutherland-Hodgman算法),但是这些算法丢弃了位于分裂多边形之外的顶点,而不是用它们创建新的多边形。我不想剪裁多边形,我想把它分成几个小部分。 我知道答案似乎很明显,因为我只需要扩展现有的算法。 问题是我无法找到一种很好的高效方法。 是否存在描述如何以高效方式最佳地分割多边形的现有算法? 这个问题必须有一个简单的解决方案,我现在无法弄清楚。

1 个答案:

答案 0 :(得分:1)

您可以将此问题视为查找主题多边形与窗口多边形的补码的交集。因此,您可以使用标准Surtherland-Hodgman算法,采取两项预防措施:

  1. 交换主题和窗口的角色(实际上你的窗口不是凸起的,因为你考虑它的补充,只有主题是凸的),

  2. 将窗口多边形嵌入覆盖两个多边形的大型边界框中,并将该框视为带孔的多边形。

    enter image description here

  3. 示例:主题多边形是矩形,窗口是五边形。形成绿色多边形(带孔的较大矩形)并将其夹在矩形(凸)窗口内。裁剪的结果是蓝色。

    如果需要额外注意,应该可以不使用大型边界框。