第四章 即時電容配置
4.1 向左_向下緊密擺放的版面規劃
4.1.1 階層式階梯輪廓結構
一個向左_向下的版面規劃的輪廓,由上左至右下看起來就像是一個L 型的 階梯狀,如圖 4_2 所示,這個版面規劃的最外層,總共由五個L 型的階梯所組
B6
B2
B3
B4
B7
B1
B5
L
B Stair3
Stair4
Stair1
Stair2
Stair5
圖 4_2 版面規劃的階梯
合而成,而每個L 型的階梯皆是由一個垂直的邊、一個水平的邊以及一個轉角 點所組成的,其中埀直的邊其實就是某個區塊右邊的界線,水平的邊就是扣除垂 直的邊區塊外,某一個區塊上邊的界線,轉角點就是兩個邊的交點,以此圖為例,
階梯 3 埀直邊的區塊就是區塊 4,水平邊的區塊就是區塊 1。
定義:假設有 n 個區塊分別是B1,B2,...,Bn,有一L 型階梯是Stairi , 1≤i≤m, L 型階梯的集合為ContourF =
{
Stair1,Stair2,...,Stairm}
,若有一L 型階梯垂直邊的區 塊是Bv(i),而水平邊的區塊是Bh(i),則L 型階梯Stair 的相鄰關係會被定義成i) ( )
(i hi
v B
B →
由上面的定義,在版面規劃中,有兩個L 型的階梯的垂直邊或是水平邊是 不屬於任何一個區塊的,其中一個L 型的階梯就是左上角的垂直邊,另一個就 是右下角的水平邊,因此我們會將這兩個邊想像成是一個虛擬的區塊,其中左界
線的邊稱為L,下界線的邊稱為 B,有了這些概念之後,我們就可以將一個階梯 輪廓用一個區塊串列來表示。如下圖 4_3 所示,一個版面規劃總共包含五個L 型的階梯,分別是L→B2,B2 →B4,B4 →B1,B1 →B7,B7 →B,我們可以用一個 區塊串列將它串起來就會變成L→B2 →B4 →B1 →B7 →B。
B6
B2 B3
B4
B7
B1
B5
L B2 B4 B1 B7 B
B3
B2 B6 B5 B
L
B Stair3
Stair4 Stair1
Stair2
Stair5
圖 4_3 L 型階梯版面規劃的輪廓
定義:假設有 n 個區塊分別是B1,B2,...,Bn,有一L 型階梯是Stairi , 1≤i≤m, L 型階梯的集合為ContourF =
{
Stair1,Stair2,...,Stairm}
,L 型階梯轉角點坐標為(
x ,i yi)
,將L 型階梯的寬度w(i)定義成Stair 的水平段的長度,高度i h(i)定義成 Stair 的垂直段長度。 i定義:有一L 型階梯Stairi :Bv(i) →Bh(i),1≤i≤m,假設Stair 為實的i L 型階梯,
Stair 的寬度一定不能大於i Stair 的水平段的長度,長度一定不能大於i Stair 的垂i 直段長度;反之,一個Stair 不屬於實的i L 型階梯的話,就可以稱為空的 L 型階 梯。若只有高度h(i)大於區塊Bv(i)的高度,會在垂直段形成左空的現象,我們稱 之為左空型的L 階梯,若只有寬度w(i)大於區塊Bh(i)的寬度,會在水平段形成下 空的現象,我們稱之為下空型L 階梯。
若一個L 型階梯的集合ContourF =
{
Stair1,Stair2,...,Stairm}
中,每一個階梯都是屬 於實的階梯,那麼區塊串列所記錄版面規劃的輪廓將會緊緊地圍住區塊,但是當 L 型階梯的集合ContourF ={
Stair1,Stair2,...,Stairm}
中,有階梯是屬於空的階梯,那麼區塊串列所記錄版面規劃的輪廓將只會鬆鬆地圍住區塊而已。因此可以將L 型階梯做修改,如圖 4_4 所示,讓原本的L 型階梯可以做水平及垂直的翻轉,
在一個下空型L 階梯中,我們可以利用水平翻轉的階梯將內部的輪廓和上一層
(b) Vertical flip (a) Horizontal flip
圖 4_4 L 型階梯的翻轉運作
的輪廓做一個連接;同理,當有一個左空型L 階梯,我們可以利用垂直翻轉的 階梯將原本的輪廓和下一層的輪廓做一個連接,用此方法,就可以將原本只是鬆 鬆地圍住區塊而已的階梯串列變成緊密地將區塊圍住。有了這個概念原本圖 4_3 中,並沒有辦法緊密地將區塊圍住,但是在加了L 型階梯翻轉這個技巧之後,
新的階層式階梯輪廓如圖 4_5 所示,Stair2 :B2 →B4是一個下空的L 型階梯,因 此會存在一個L 型階梯B2 →B3以及一個水平翻轉的L 型階梯B3 →B4在Stair2 內部;另外,Stair5 :B7 →B是一個左空的L 型階梯,因此會存在一個輪廓
B B
B6 → 5 → 以及一個垂直翻轉的L 型階梯B7 →B6在Stair 的內部。 5
B6 B2
B3 B4
B7
B1
B5
L B2 B4 B1
B3
B B7
B6 B5
L B2 B4 B1 B7 B
B3
B2 B6 B5 B
Vertical-flipL-type stair
Horizontal-flip L-type stair
L
B Stair3
Stair4
Stair1
Stair2
Stair5
圖 4_5 一個版面規劃階層式階梯的結構