n个圆的交叉区域,每个圆的半径为'r'

时间:2010-02-07 06:20:13

标签: math intersection area

问题陈述: 从( - )无穷大到(+)无穷大的图形上绘制'N'个相等的半径圆。找到交叉点的总面积,即图中被两个或多个圆覆盖的所有区域。

2 个答案:

答案 0 :(得分:2)

首先是修正:这些不是圆圈。它们是椭圆(圆圈是椭圆的一种特殊情况,其中a = b)。你可以计算两个椭圆的交集,所以给定N个椭圆,你需要检查每一对,所以整个操作是O(n 2 )(乘以交叉操作的任何一个)。

查看Intersection of EllipsesThe Area of Intersecting Ellipses

编辑:圆圈是一个更容易的问题,但遵循相同的原则。请查看Intersection Of Two CirclesCircle-Circle Intersection

答案 1 :(得分:1)

最简单(不一定是最快或最好)的代码方法是找到包含所有圆的边界框,然后使用数值随机方法进行整合。

现在,通过聪明,你可以将圆圈分组并将它们分开包装,即在许多边界框中工作。甚至完全处理某些特殊情况。

但纯粹的随机方法具有易于实现的优点(但可能很慢)。

只有当您乐意接受“近似”(但任意接近正确)答案时才能接受。