Algorithm 如何使多个多边形相交?

Algorithm 如何使多个多边形相交?,algorithm,math,geometry,polygons,Algorithm,Math,Geometry,Polygons,我正在寻找具有以下输入和输出的算法: 输入:平面中的一组多边形。例如P1…Pn和S。(P1…Pn可能是凹的,S是凸的。) 输出:此平面中多边形集的面积,等于S的差和P1…Pn的并集 我找到了两个多边形相交或合并的算法。但是,由于这些操作中的每一个都可能产生几个多边形,如果我做得很幼稚的话,我会创建成吨的多边形 那么:如何处理多个多边形的相交 如果所有多边形都连接在一起就可以了,因为我要的只是这个区域。我的想法是使用有向多边形来模拟孔,但是我又一次遇到了一个问题,即我是否有一个“最小表示”,因为n

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

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

输出:此平面中多边形集的面积,等于S的差和P1…Pn的并集

我找到了两个多边形相交或合并的算法。但是,由于这些操作中的每一个都可能产生几个多边形,如果我做得很幼稚的话,我会创建成吨的多边形

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


如果所有多边形都连接在一起就可以了,因为我要的只是这个区域。我的想法是使用有向多边形来模拟孔,但是我又一次遇到了一个问题,即我是否有一个“最小表示”,因为n可能会爆炸。[你明白我在说什么吗?这很奇怪…

一个解决方案是将每个多边形转换成一组三角形。一旦你这样做,就很容易找到一组区域之间的并集/交集/差异,因为你可以在三角形上执行相同的功能(两个三角形上的结果可能包括多达6个三角形)。

一个解决方案是将每个多边形转换为一组三角形。一旦这样做,就很容易找到一组区域之间的并集/交集/差异,因为您可以在三角形上执行相同的功能(两个三角形上的结果可能包括多达6个三角形).

您可以将所有边组合成一个。它可能不是最优的(?),但至少您将得到您所寻找的最小表示。

您可以将所有边组合成一个。它可能不是最优的(?)但至少你会得到你想要的最小表示。

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

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

顺便说一句,在第266页以及其他来源中描述了使用扫描线算法使两个(非)凸多边形相交。这远远优于划分为凸块或三角剖分。顺便说一句,使用扫描线算法使两个(非)凸多边形相交凸面多边形在第266页以及其他来源中有描述。这远远优于分割成凸面块或三角剖分。是的,这就是问题所在:每次迭代可能会使多边形数量增加三倍。因此,如果我有n个三角形,我将得到约n*3^(n-1)个三角形…如果n增加,这将爆炸。有必要“压缩”在前面的步骤中,通过组合可能的多边形或删除空交点来解决问题。那么:如何做到这一点呢?是的,这就是问题所在:每次迭代可能会使多边形的数量增加三倍。因此,如果我有n个三角形,我将得到大约n*3^(n-1)个三角形……如果n增加,这将爆炸。有必要“压缩”在前面的步骤中,通过组合可能的多边形或删除空交点来解决问题。那么:如何做到这一点?