0
在2D空間中,有一些矩形。它們會增長或縮小,有些會同時增長/縮小。當一個矩形增長時,它的左上角將不會移動,即只有底部或右邊緣可以移動。在2D空間中排列展開/縮小的矩形
我們需要重新定位重疊的矩形。我們要確保重新定位的二維空間在視覺上與先前的空間相似(即我們不應該混洗它們,不應該引入不必要的空白空間(如果可能的話)不應該更改每個矩形的最接近的矩形)。
已知值:空間
- 大小
- 兩個相鄰矩形
- 尺寸的矩形(尺寸&之前,改變之後)的矩形的
- 位置之間的距離
矩形如何有效地重新定位?應該使用什麼算法,以便一組操作可以解決一組衝突(因爲某些矩形可能對齊並且具有相同的大小)?我們如何根據座標猜測相鄰矩形之間的關係,並巧妙地重新定位它們。
一些例子:
- 殼體1:生長/收縮垂直(簡單)
- 情況2:生長/在水平方向收縮(複雜它假定有2個矩形基,
left
和right
,而不是。top
和bottom
當left
變化,right
重新定位爲如圖中所示下文) - 情況3:生長/收縮水平(簡單)
電流溶液
//required values: distance between two adjacent rectangles, sizes of rectangles
sort(rectangles) // from top-left to bottom-right
foreach (rect in rectangles)
if (distance between two adjacent rectangles changed)
get number of grown/shrunk rows/columns
foreach (rect2 in rectangles below/to the right of rect)
move rect2 according to the grown/shrunk rows
if collision is solved after vertical movement
continue
else
move horizontally
將該溶液在情況2發生故障時,因爲小藍色矩形的相對距離發生變化,但其大小不被改變。底部兩個矩形之間的距離將不爲0.
*「這將是完美的,如果相對位置/兩個矩形之間的距離不是在某些情況下,改變」 * - 我認爲你真的需要澄清的意思'相對位置'和'一些案例',以獲得有用的答案。 –