将相等的矩形拟合为更大的矩形

时间:2015-02-24 03:48:02

标签: algorithm geometry rectangles

我有一个dimensions L*Wn smaller rectangles的大矩形,每个矩形都有相同的维度l * w。每个小矩形都具有相同的dimensions

我的目标是将所有n of smaller矩形拟合到大矩形中,同时尽可能最有效地利用大矩形中的空间。 l和w可以根据需要按比例放大或缩小,只要比例保持不变即可。

如何确定较小的矩形应如何缩放以适应大矩形?

1 个答案:

答案 0 :(得分:1)

这是一种算法,可以找到缩放系数F的最大值,这样当按a x b缩放时,所有小F矩形都适合包含的矩形{{1} }:

  1. 对于每对A x B的正整数,

    • (p, q)
    • p <= n
    • 对于满足q <= nn = p * q - r 的某个整数r >= 0
    • r < p

    计算p < q

  2. f = min(A/(a*p), B/(b*q)).为1中计算的所有因子F的最大值。
  3. 所有对f的计算可以如下进行:

    1. [初始化] (p, q)
    2. [增量] p := 0
    3. [结束?]如果p := p + 1,请停止
    4. [Next]设p > n(整数除法)。下一对q := n + p - 1 / p
    5. [重复]转到2.
    6. 算法的想法

      每对(p, q)表示缩放矩形的特定布局,其中(p, q)矩形位于水平行和p行,最后一行可能不完整。以下是q写为n = 13的示例: enter image description here

      由于宽度为3 * 5 - 2的{​​{1}}缩放矩形必须符合宽度为p的矩形,因此我们有:f*aA。同样p*f*a <= A因此,此配置的最大比例为f <= A/(p*a)