如何计算多个多边形的面积?

时间:2012-03-22 16:11:04

标签: algorithm computational-geometry area

我几天前发布了这个问题:How to intersect multiple polygons?。现在我按照推荐实施了扫描线算法(具体来自Martinez,Rueda和Feito)。

结果是一组不重叠的多边形。但是这些多边形可以包含彼此(孔)或触摸边界(孔或岛多边形)。

我的意思的图片:

a picture of what I mean

我认为这应涵盖所有特殊情况;交叉点由扫描线算法处理。

现在我需要多边形的区域(标记为灰色)。我的第一个想法是通过多边形添加多边形并检查它们是否相互包含,并使用一些智能选择机制来仅选择所需的多边形。但是这会产生一些O(n ^ 2)算法:对于要处理的每个多边形,必须将每个边缘与已经处理的每个边缘进行比较。

不太好。你能给我一个如何计算总面积的提示吗?

1 个答案:

答案 0 :(得分:3)

标准顶点顺序对于多边形是逆时针方向,对于孔是顺时针方向。如果使用此约定存储数据,只需使用标准polygon area calculation method计算区域。孔的区域将是负的。

如果你有其他顺序,那么你有问题。现在更好地解决它。