我有各種大小的矩形,我試圖將它們放到從中心開始的較大的矩形中。下面你會發現一個我創建的動畫,用於直觀地描述需要發生的事情。從中心開始用較小的矩形填充大矩形的算法
我一直在努力想出一種方法來模擬這種行爲。有沒有類似於這個的東西?我只需要指出正確的方向。
下面是一個非常粗略的解釋:
初始化
- 開始
n
矩形 - 訂購密度(他們是真正的3D立方體鳥瞰圖) 在中心10
- 將第一個矩形
剩餘矩形(適合多達我可以) 嘗試組密度最高的中心向外移動
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
}
好的動畫。你對單個矩形有一些限制嗎?例如,它們總是有九個,或者它們通常大約相同,比如在一些小數目的因素內? – rici 2013-02-26 01:46:41
我會更新我的問題以更具描述性。 – 2013-02-26 01:49:04
你的解決方案有什麼問題?預期什麼?你沒有達到它嗎?小面積的總面積≈大面積的面積?這裏有什麼其他限制? – SparKot 2013-02-26 02:06:09