さまざまなサイズの長方形があり、それらを中心から大きな長方形に合わせようとしています。以下に、何を行う必要があるかを視覚的に説明するために作成したアニメーションを示します。
私は、この動作をモデル化する方法を考え出すのに苦労しています。これに似たものはありますか?私はただ正しい方向に向けられる必要があります。
以下は非常に大雑把な説明です。
初期化する
n
長方形から始める- 密度順 (実際には 3D 立方体の鳥瞰図です)
- 最初の長方形を中央に配置
残りの長方形(できるだけ多く収まる) は、中央に最も密度の高いものをグループ化し、外側に移動しようとします
Dimensions = { width: 400, height: 300 }
Boundries = {
WEST = 0,
EAST = Dimensions.width,
NORTH = 0,
SOUTH = Dimensions.height
}
// each rectangle has width, height, and other information
rectArr = Array of {width:60, height:40}
root = { x:EAST/2, y:SOUTH/2 }
foreach rect in rectArr {
// I will always traverse from the root and try to go left and right. If I cannot, I move up and try the same thing. I then move down. The problem is if there are 5 or more rows. I will be starting from the root and going up, then down, then up-up, then down. It's like I have two parallel trees.
// Try to branch left or right
if rect.width <= (Boundries.EAST - ('rightmost rectangle'.x + 'rightmost rectangle'.width/2)) branch-right
if rect.width <= (('leftmost rectangle'.x + 'leftmost rectangle'.width/2) - Boundries.WEST) branch-left
// Try to branch up or down
if rect.height <= ((root.x + root.height/2) - Boundries.NORTH) branch-up
if rect.height <= (Boundries.SOUTH - (root.x + root.height/2)) branch-down
}