如何交叉多个多边形?

时间:2012-02-22 17:17:39

标签: algorithm math geometry polygons

我正在寻找具有以下输入和输出的算法:

输入:平面中的一组多边形。例如。 P1 ... Pn和S.(P1 ... Pn可能是凹的,S是凸的。)

输出:此平面中多边形的面积等于S与P1 ... Pn的并集的差值。

我发现算法可以交叉或合并两个多边形。但是,由于这些操作中的每一个都可能产生多个多边形,所以如果我天真地做的话,我会创建大量的多边形。

那么:如何处理多个多边形的交集?

如果所有多边形连接在一起都没问题,因为只有这个区域才是我所追求的。我的想法是使用有向多边形来模拟洞,然后我再次有问题找出我是否有“最小表示”,因为n可能爆炸。 [你明白我在说什么吗?这很奇怪......)

3 个答案:

答案 0 :(得分:4)

您可以将所有边缘放在一起sweep line algorithm。它可能不是最佳的(?)但至少你会得到你想要的最小代表。

答案 1 :(得分:0)

一种解决方案是将每个多边形转换为一堆三角形。一旦你这样做,很容易找到一组区域之间的联合/交集/区别,因为你可以在一个三角形上平凡地执行相同的功能(两个三角形的结果可能包括最多6个三角形)。

答案 2 :(得分:0)

最直接的方法是将凹多边形分解为凸多边形。然后交叉两个凸多边形几乎是微不足道的。

相关问题