如何在矩形容器内分配不同宽度和高度的矩形列表,最大化项目之间的距离?

How to distribute a list of rectangles of varying width and height, maximizing distance between items, inside a rectangular container?

我需要一个接受两个输入的函数:

它将输出一个包含相同项目的数组,并附加 position 属性(可以改变原始项目),xy 使得距离项目之间最大化(注意 - 不是点之间的距离,需要考虑项目的尺寸)。

它不一定是经过数学证明的最佳解决方案,足够好的启发式方法就可以了

我看过装箱,但它似乎与我想要的相反。

任何语言都可以,甚至是伪代码。

我不知道从哪里开始。现在我只是随机化位置,偶尔会出现重叠的项目,这是不可取的。

因为你只需要一个启发式的,而不是一个最优的解决方案(没有人可以给你 ATM,因为 "distances between items are maximized" 是一个模糊的术语):

虽然bin-packing好像是"opposite",但是可以用。取一个适合它们的较小(最小)的盒子,并进行包装,然后将其与计算出的位置一起拉伸。