问题陈述: 从( - )无穷大到(+)无穷大的图形上绘制'N'个相等的半径圆。找到交叉点的总面积,即图中被两个或多个圆覆盖的所有区域。
答案 0 :(得分:2)
首先是修正:这些不是圆圈。它们是椭圆(圆圈是椭圆的一种特殊情况,其中a = b)。你可以计算两个椭圆的交集,所以给定N个椭圆,你需要检查每一对,所以整个操作是O(n 2 )(乘以交叉操作的任何一个)。
查看Intersection of Ellipses和The Area of Intersecting Ellipses。
编辑:圆圈是一个更容易的问题,但遵循相同的原则。请查看Intersection Of Two Circles和Circle-Circle Intersection。
答案 1 :(得分:1)
最简单(不一定是最快或最好)的代码方法是找到包含所有圆的边界框,然后使用数值随机方法进行整合。
现在,通过聪明,你可以将圆圈分组并将它们分开包装,即在许多边界框中工作。甚至完全处理某些特殊情况。
但纯粹的随机方法具有易于实现的优点(但可能很慢)。
只有当您乐意接受“近似”(但任意接近正确)答案时才能接受。