2017-10-30 4 views
0

私は、10 * 10の100の領域である大きな矩形を持っています。例えば、固定された領域の6つの矩形10 * 10です。固定された領域の四角形を大きな矩形に合わせる

6つの矩形は固定された領域を持ちますが、固定幅/高さはありません。彼らのエリアは常に100になるので、実際にはより大きなエリアのパーセンテージです。

私は1行を持ちたくなく、各矩形の幅を変更したくありません。私は可能な限り正方形に近いものを維持しようとする最も効率的な方法で四角形を配置する方法が欲しいです。

ありがとうございます。

-Solved-

+2

これは役に立ちますが、googleの2Dビンのパッキングアルゴリズムを使用するとわかりません。たくさんの例が見つかります – Yeak

答えて

1

あり、これを行うためのいくつかの方法があるので、私はちょうどまだかなりまともな結果を与える必要があります(多少非効率的な場合)を理解することは簡単な方法の一例をあげます。

  1. まず、ボックスを最大から最小に並べます。
  2. 最初のボックスが正方形になることを前提としています(そのようには終わりませんが、終わりに終わります)。その側面の長さを得るにはsqrt(area[1])とする。その幅を最初の列の幅にします。
  3. 幅を指定すると、その列でできるだけ多くの行を入力します。
  4. あなたが列に入れた総面積をどれだけ追加しますか?その幅をサイズに合わせて調整します(これは少し薄くなります)。
  5. 残りのボックスで手順1〜3を繰り返します。列の最初のボックスのターゲット幅が残っているスペースの幅よりも広い場合は、その幅を使用してください。
  6. 残りのボックスは、その列の残りのスペースにきれいに収まる必要があります。

これは、さまざまな高さの区切りを持つ整列した列を提供します。別の方法として、「行」と「列」を反転して、列の分割を変えて行の分割を一定にすることができます。

+0

ありがとうございます!これはまさに私が探していたものです:D –

+0

hmm、私はそれをやろうとしました。矩形が正しい領域であっても、大きな矩形全体のランダムな幅が常にあります。私は余分な領域がどこに来て行くのかわからない。 –

+0

なぜそれが起こるのかわかりませんが、内側に収まるように最後のすべてのボックスの幅を変更しました。 –

関連する問題