【问题标题】:How to calculate total area covered by overlapping circles in Java如何计算Java中重叠圆圈覆盖的总面积
【发布时间】:2020-02-10 17:31:26
【问题描述】:

我正在开发一个 android 应用程序,该应用程序涉及计算地图上一组圆圈所覆盖的总面积。

假设我有一个ListCircles,每个Circle 都有double longitudedouble latitudedouble radius 字段。

List<Circles> circles;

class Circle {
    double longitude;
    double latitude;
    double radius;
}

这些圆圈可能重叠也可能不重叠,它们可能相距一千英里,也可能全部堆叠在一起。

我想计算这些Circles 的总面积(当然要考虑它们的重叠)。什么是用于此目的的好算法(或库函数,如果存在)?

【问题讨论】:

  • 这更像是一个数学问题,而不是编程问题。你需要找到一个计算重叠圆面积的公式。
  • 在这里寻求工具、库、教程或场外资源推荐是题外话
  • 我正在开发一个 android 应用程序 每个问题的标签不能超过五个。我建议您删除其中一个标签并用android 标签替换它,以吸引可能能够帮助您的Android开发人员。
  • @Abra 谢谢你的建议,但我认为这个问题与 Android 的领域关系不大,但更多的是一个通用的算法问题,这就是为什么我没有把 Android 放在那里以避免令人困惑的上下文。

标签: java google-maps math geolocation geometry


【解决方案1】:

首先你需要对重叠的圆圈进行聚类:

Make each circle its own cluster
Repeat (until convergence):
  For each cluster:
     For each other cluster:
        Merge clusters if any of their circles overlap

然后你使用Combined area of overlapping circles计算每个簇的面积。

最后,对所有集群求和。

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 2018-05-16
    • 2014-05-31
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2012-04-16
    • 2021-03-21
    相关资源
    最近更新 更多