geometry - 如何计算多个重叠直角多边形的面积?

标签 geometry overlap area polygons

我正在寻找一种方法来计算多个重叠多边形覆盖的公共(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/

相关文章:

java - 计算圆中的每个笛卡尔点

c++ - 2D 几何库 : LGPL alternative to CGAL?

android - Tabwidget 与我的 Activity 内容重叠

WPF slider 拇指重叠重复按钮

python - 给定三个坐标点,如何检测它们之间的角度何时超过 180 度?

opengl - 为什么我会在 GLSL 中看到这个 OpenGL 球形映射工件?

java - Java 中的重叠继承

Javascript梯形面积计算与用户输入,不正确的结果

Android 在 ImageView 中创建一个矩形

java - 三角形的面积(给出 3 分)