2009-02-06 58 views
0

在有限的空间中生成已知数量的非重叠固定半径圆的最佳方式是什么?如何在固定区域生成不重叠的圆圈?

+0

你应该更具体。这个圈子的分布是一个问题吗?是否应该覆盖大部分表面?最简单的方法是从x = r,y = r开始,对于半径为r的圆,并逐行放置它们,直到其中有足够多的... – 2009-02-06 21:05:00

回答

3

用最少的剩余空间做到这一点的方法是将圆心置于六边形网格上,就像您制作金字塔金字塔时所获得的图案一样。

2

你可以把屏幕分割为一个网格,并绘制在每个“方”了一圈:)

0

这将取决于空间和其他限制的圈子里,你没有指定的自然形状。例如,要在高度为Y和长度为X的矩形中生成N个非重叠圆,请将每个圆的直径设为X/10 * N或Y/10 * N中的较小者,并让每个中心间隔一段距离均匀地分布在划分矩形的水平线上,跨越其长度的一半。

1

我不认为你的问题是明确的。对世代有什么限制?

下面是固定半径的非重叠的圆随机收集丢弃算法:

  1. 维持各界的列表
  2. 通过
    1. 生成候选生成随机中心允许区域
    2. 测试列表中的每个现有圆以与候选人发生碰撞,并拒绝是否发现任何碰撞。如果全部通过,请将此候选人添加到您的列表中。
  3. 转到#1,直到你满意的数量产生

编辑:阅读问题更加紧密,半径指定...

相关问题