Javascript 如何分散形状而不重叠,同时保持形状紧密?

Javascript 如何分散形状而不重叠,同时保持形状紧密?,javascript,statistics,processing,p5.js,Javascript,Statistics,Processing,P5.js,有一件事我一直想弄明白,但因为我数学或统计学很差,所以没能弄明白:s 有很多方法可以分散,例如一堆div或一个p5画布元素(大小稍有不同)而不重叠,这是使用圆进行分散的一个例子。但是,如果这些元素的总数很低,那么这个星系团就有可能彼此相距很远,总体密度可能会非常不一致。有没有一种方法可以分散大小相似的矩形而不重叠,并且彼此之间保持最小距离,但永远不会太远 理想情况下是这样的: 而不是这个(如果唯一的标准是“无重叠”,那么这就是结果): 您可以在绘制形状之前平移到中心,然后使用随机函数给它们一个

有一件事我一直想弄明白,但因为我数学或统计学很差,所以没能弄明白:s

有很多方法可以分散,例如一堆div或一个p5画布元素(大小稍有不同)而不重叠,这是使用圆进行分散的一个例子。但是,如果这些元素的总数很低,那么这个星系团就有可能彼此相距很远,总体密度可能会非常不一致。有没有一种方法可以分散大小相似的矩形而不重叠,并且彼此之间保持最小距离,但永远不会太远

理想情况下是这样的:

而不是这个(如果唯一的标准是“无重叠”,那么这就是结果):

您可以在绘制形状之前平移到中心,然后使用随机函数给它们一个距离中心的距离,其中随机函数的最大值将根据元素总数进行计算。执行此操作时,还可以检查重叠,如果任意两个对象重叠,则再次调用random函数