2011-02-06 51 views
2

幅wと高さhの四角形を指定すると、矩形を多かれ少なかれ等しいサイズと形状の矩形に分割して計算する単純なアルゴリズムを探していますこれらの長方形の中心。長方形をn個の小さな矩形に分割し、各中心を計算するアルゴリズム

編集:形状が可能な限り正方形に似ている必要があることを忘れてしまった。

開始のヒント

+2

@マークの答えがあなたの要件を満たしていますが、 "シェイプ"に制約があるのでしょうか? – payne

+0

@payne:はいマークの答えは、記載された要件を満たしていますが、私は新しい形状が可能な限り正方形に似ているべきであると忘れてしまいました。 –

+0

私は多くの疑いがあります、明確化のためにあなたに感謝します。 :-) – payne

答えて

8

単純なアルゴリズムは、高さhと幅w/nの等しいサイズのn個のストリップに垂直に分割することです。

最初の矩形が角(0,0)と(w、h)を持っていると仮定すると、このアルゴリズムを使用してi 番目のの矩形は中心(w/n *(i + 2)、0 < = i < nである。


更新:因子の比が最も近いような数のn iはjは* = N、および因子のペアを見つけるように、因子対(i、j)の中にすべての因数分解を発見してみてください矩形の辺の比率。次に、2つの要素を使用して、小さな四角形の規則的なグリッドを作成します。

たとえば、nが10の場合、(1,10)、(2,5)、(5,2)、(10,1)のいずれかを選択できます。初期矩形因子対を用いて、次に、幅60および高さ20を有している(5、2)サイズの10個の四角形(60 /与える場合

 
------------------------------------ 
|  |  |  |  |  | 
|  |  |  |  |  | 
------------------------------------ 
|  |  |  |  |  | 
|  |  |  |  |  | 
------------------------------------ 

:ここで係数を用いて、例えば格子(5、2) 5,20/2)=(12,10)であり、正方形に近い。

+0

ありがとうございます。これは正解ですが、別の要件については言及していませんでした。ごめんなさい。 – RoflcoptrException

+0

アップデートに感謝します。私はこの要因のペアを理解しています。あなたはファクターペアを選ぶ方法をお勧めしますか?おそらく、iとjの間の最小距離を持つ要素のペア? – RoflcoptrException

+0

そして別の質問。あなたは奇数nをどう扱うか考えていますか?たとえば、n = 11、width = 400 height = 400とします。アルゴリズムでは11個の四角形が連続して計算されます。しかし、より良い例2 X 5と1つの正方形のint 3行です。 – RoflcoptrException

関連する問題