Java中如何计算重叠圆所覆盖的总面积

Java中如何计算重叠圆所覆盖的总面积,java,google-maps,math,geolocation,geometry,Java,Google Maps,Math,Geolocation,Geometry,我正在开发一个android应用程序,其中包括计算地图上一组圆圈所覆盖的总面积 假设我有一个列表的圆s,每个圆都有字段双经度,双纬度,和双半径 List<Circles> circles; class Circle { double longitude; double latitude; double radius; } 列表圈; 班级圈子{ 双经度; 双纬度; 双半径; } 这些圆圈可能重叠,也可能不重叠,它们可能彼此相距一千英里,也可能彼此叠在一起

我正在开发一个android应用程序,其中包括计算地图上一组圆圈所覆盖的总面积

假设我有一个
列表
s,每个
都有字段
双经度
双纬度
,和
双半径

List<Circles> circles;

class Circle {
    double longitude;
    double latitude;
    double radius;
}
列表圈;
班级圈子{
双经度;
双纬度;
双半径;
}
这些圆圈可能重叠,也可能不重叠,它们可能彼此相距一千英里,也可能彼此叠在一起


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

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

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

然后使用计算每个簇的面积


最后,对所有簇进行求和。

这更像是一个数学问题,而不是一个编程问题。你需要找到一个计算重叠圆面积的公式。检查这个,询问工具、库、教程或非现场资源建议在这里是离题的。我正在开发一个android应用程序,每个问题最多有五个标签。我建议您删除其中一个标记,并用标记替换它,以吸引可能能够帮助您的Android开发人员。@Abra感谢您的建议,但我认为问题与Android领域无关,而更多的是一个通用算法问题,这就是为什么我没有把Android放在那里,以避免混淆上下文。