我正在寻找一种方法来计算多个重叠多边形覆盖的公共(public)区域。多边形都是直角的,如果这能让事情变得更容易的话。
例如:
BBBBB BBBBB AAA---BB AAA---BB AAAAAA AA--AA AA--AA LL LL LLLLLL LLLLLL
我想找到 A、B 和 L 覆盖的公共(public)区域,这等于: B = 5x4 = 20 + A = 6x5 = 30 + L = 4x2 + 6x2 = 20 = 70 减去重叠区域: - 10 = 60(所有多边形覆盖的公共(public)区域)
我需要能够满足 3 个或更多多边形占据同一区域的情况。 是否有合适的算法,可以将 x/y 坐标数组的数组作为输入? (非常欢迎示例 Java 源代码)。
最佳答案
计算此类面积的经典方法是使用扫描算法。你可以看看问题Area of overlapping rectangles获得更简单的矩形情况下的算法描述。
然后,您可以将多边形分解为矩形,或者调整扫描算法,以便在扫描期间隐式完成此分解。
关于geometry - 如何计算多个重叠直角多边形的面积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1390656/