我刚刚提交了一个Java作业,我需要在屏幕上随机绘制一些圆圈作为游戏的一部分。给我们的挑战之一是确保没有任何圆圈重叠。我最终采用了一种奇怪的方法(因为我想:D)基本上只是使用trig从屏幕中心创建了一个模式,这很有趣。虽然这种方法中的圆圈从不重叠,但它并不理想......圆圈的分布在屏幕中间相当紧凑,角落中使用的空间非常小。
我还创建了一个(注释掉的)蛮力方法,如果建议的圆的x,y坐标与已经创建的圆相交,它只是重新滚动新坐标,这在理论上能够循环到无限,很可能不会超过10交叉点。
在与朋友讨论解决方案后(以及谷歌搜索引擎优化)后,我们真的非常有兴趣看看如何在没有暴力的情况下完成这项工作。要求:
可能,使用标准库吗?
答案 0 :(得分:10)
重复十次。
答案 1 :(得分:2)
制作覆盖整个屏幕的网格;把网格放在一个集合中。每个网格部分应为十个单位(圆圈的大小)。
您现在有20个随机放置的圆圈,不能重叠。
现在,其他空间分区系统在这里有用以及如何使用?
答案 2 :(得分:2)
答案 3 :(得分:2)
这是我一直在寻找的东西。我在基本相同,但在HTML5中。幸运的是,我只需要在800px×400px画布上布置100个半径为20px的圆圈。使用蛮力方法最多可以工作120个圈子。
这是my solution。
我想尝试使用阵列的Peter优雅方法。我不知道该怎么做,但是一旦我拥有它,我会在这里发布。