关于正方形中圆的随机分布算法的思路

Mar*_*arc 10 random algorithm

我正在寻找一个概念,在一个正方形中随机分布圆圈,这样它们就不会重叠.所有圆圈的大小相同.圆圈覆盖的区域可以很高,直到理论最大值为ca. 90%的正方形(其中它们是完全有序的).应该放置大约200个圆圈,我想准确指定圆圈数.(需要分配作为FE分析的模型生成的输入,顺便说一句)

使用直接将算法顺序放置在空闲点上的算法,不可能覆盖超过54%,这并不奇怪,因为在某些时候没有剩余空间.因此,之前的SO线程并没有真正涵盖我的问题(越来越接近:放置无重叠的随机圆圈(并且不使用暴力)?)

随着一组有序圆圈的圆圈的简单随机位移,分布似乎"不够随机".

到目前为止,我提出的所有概念,无论是复杂还是蛮力风格.我最喜欢的方法是确定下一个圆圈可以放置的所有可能位置,以便剩余空间足够大以放置剩余的圆圈.然后随机选择其中一个位置,依此类推.但是:确定剩余空间的"容量"并不容易,而且在数值上非常复杂.我真的不知道怎么做,以及是否可以通过合理的数值努力来完成.

第二个想法是一个billard模拟:将所有圆圈放在任何模式中并模拟一个大池子.相当蛮力和数字也非常昂贵.我也有点害怕去世问题.

数字3更具数学性,并且基于为每个圆圈定义具有随机"强度"的潜在场,因此在圆之间存在某种引力并计算平衡状态.为此开发数学模型并非易事,而且是一项非常重要的任务......

所以 - 最后 - 问题:你有什么建议解决这个问题尽可能轻量级?你知道我应该考虑解决这个问题的算法吗?你对我的想法有何看法?

非常感谢你们提前了!我很高兴看到你的答案.

cyb*_*org 2

首先使用基本算法绘制尽可能多的不碰撞的圆圈。完成后(无法达到 200 圈),开始推圈。我的意思是用物理引擎将它们物理推入: http://www.sgtconker.com/2010/09/article-xna-farseer-platform-physicals-tutorial/(不使用重力)。