【发布时间】:2013-03-17 15:57:38
【问题描述】:
我有一个大矩形(面向轴),其中包含许多小矩形(与父级相同的方向,固定大小为 82x176 像素)。
现在我有一个在外面的小矩形,我必须把它放在大矩形里面,这样它是: - 随机放置; - 除非由于空间不足而必要,否则不要与其他小矩形重叠(在这种情况下,重叠最少)。
在我的代码执行期间将多次使用的算法还需要包含一个良好的分布,以便小矩形很好地分散在大矩形的中心周围,而不是全部聚集在一个角落。
谷歌搜索,我发现了几种关于矩形打包、最大空矩形、随机分布的算法......但没有一个能真正满足我的要求,也没有显示出良好的代码实现。
有没有人有什么好主意(代码或伪代码更好,如果可能的话,因为通常当我看到数学公式时我的大脑会崩溃)?
【问题讨论】:
-
小矩形的坐标是任意的还是 82*n, 176*m ?
-
它们必须是任意的。
-
IDK 是肯定的,但我会使用您之前问过的empty rect 并从最小距离删除开始,然后从任何地方开始并将小矩形放置在那里的任何地方,如果它适合的话。无论如何,您都必须做最大的空矩形问题才能获得最小的重叠。
-
问题是我什至无法为最大的空矩形问题找到一个好的实现。要获得良好的分发效果并不容易。
-
您的要求是矛盾的:小矩形放置不能既随机又在最小化重叠和最大化分散的位置。
标签: c# random geometry distribution bin-packing