【问题标题】:Area of intersection of n circles each having radius 'r'n个圆的交点面积,每个圆的半径为'r'
【发布时间】:2011-01-14 00:59:53
【问题描述】:

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

【问题讨论】:

  • 这道题的编程部分是?听起来对我来说只是数学。你用什么语言做这个?
  • 如果以上链接失效,请参考:i.imagehost.org/0772/circles.png
  • 是的,它更多的是数学。我在 C 中做这件事
  • 图片注意:i)绿色区域需要计算。 ii)图像中的所有曲线都是圆形而不是椭圆形
  • 注意事项:所有圆的半径都相同 'r'

标签: math intersection area


【解决方案1】:

首先更正一下:这些不是圆圈。它们是椭圆(圆是椭圆的一种特殊情况,其中 a = b)。您可以计算两个椭圆的交集,因此给定 N 个椭圆,您需要检查每一对,因此整个操作为 O(n2)(乘以交集操作)。

看看Intersection of EllipsesThe Area of Intersecting Ellipses

编辑:圆的交点是一个更简单的问题,但遵循相同的原则。看看Intersection Of Two CirclesCircle-Circle Intersection

【讨论】:

  • 对不起,我的图像不是那么完美......他图像中的所有曲线都代表等半径圆。
  • 这很难,因为您必须处理超过 2 个重叠的情况。
【解决方案2】:

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

现在,通过聪明,您可能可以对圆圈进行分组并将它们分开装箱,即在多个边界框中工作。甚至可以准确处理某些特殊情况。

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

只有当您乐于获得“近似”(但任意接近正确)答案时,这才是可接受的。

【讨论】:

  • 如果可以接受粗略或适度的精度,则很好。 绝对想要检测重叠组并在每个组周围绘制边界框:否则可能会出现大量空白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 2012-02-02
  • 1970-01-01
  • 2014-07-03
相关资源
最近更新 更多