計算機圖形學(三)_圖元的屬性_9_ 填充區屬性
來源:程序員人生 發布時間:2016-11-03 08:08:03 閱讀次數:2545次
9填充區屬性
多數圖形軟件包將填充區限定為多邊形,由于它們用線性方程來描寫。更進1步的限制是要求填充區是1個凸多邊形,因此掃描線不會與兩條以上的邊相交。但是,我們1般可以填充任意指定的區域,包括圓、橢圓和其他有曲線邊界的對象。而像繪畫程序等利用系統則提供針對任意形狀區域的填充功能。
在將填充區映照到像素坐標后,光柵系統中填允1個區域有兩個基本進程。1個進程先肯定穿過區域的掃描線堆疊段。然后,沿這些堆疊段的位置被設定為填充色。另外一個區域填充方法是從1個給定內點開始,逐一像素向外“繪畫”,直到碰到指定的邊界條件。掃描線方法經常使用于簡單的形狀如圓或多邊形邊界的區域,而1般的圖形軟件包都使用這1填充方法。使用起始內點的填充方用于有較復雜邊界的填充區及交互式繪畫系統。
9.1填充模式
1般的圖形軟件包提供的基本填充屬性是內部的顯示模式。我們可以將1區域顯示為單1色彩、指定填充圖案或只給出邊界的“空心”模式。圖4.17給出了這3種模式。我們也能夠使用各種筆刷模式、色彩調和或紋理對場景中的指定區域進行填充。其他選項包括指定填充區域邊界。對多邊形來講,可使用不同色彩、線寬和線型來給出其邊。還可以為區域的前向面和后向面選擇不同的顯示屬性。

填充圖案可以用1個為不同位置指定不同色彩的矩形色彩陣列來給出。或說,1個填充圖案可當作1個點陣來指定,其中每位置指定顯示1個選定色彩。描寫填充圖案的矩陣是1個利用于顯示區域的掩模。有些圖形系統提供對覆蓋掩模的初始位置的選擇。從該初始位置開始,掩模在水平和垂直方向反復填充直到所有顯示區域都填滿無堆疊的掩模。在使用圖案覆蓋的填充區,矩陣掩模指出哪些像素應當使用特定色彩顯示。這類用矩形圖案填充1個區域的處理稱為平鋪(tiling),而矩形填充圖有時稱為平鋪圖案(tiling
pattern)有時,系統中有預定義的填充圖案,如圖4.18所示的影線。

可以通過肯定圖案在何處覆蓋穿過填允區的掃描線來實現圖案填充。從1個為圖案填充指定的起始位置動身,將矩形圖案按在垂直方向上逾越掃描線而在水平方向上逾越掃描線的像素位置的方式進行映照。圖案矩陣按掩模的寬度和高度肯定的間隔而重復使用。在圖案覆蓋的填充區域處,像素的色彩按掩模中存儲的值進行設定。
影線填充通過在區域內繪制1組線段來顯示單影線或交叉影線。影線的間隔和斜率可作為影線表的參數來設定。作為1種選擇,影線填充可當作1個生成1組對角線的圖案矩陣來指定。
作為填充圖案開始位置的參考點(xp, yp)可設定在填允區內的任意位置。例如,該參考點可指定在多邊形的1個端點處。也可將參考點設在由區域坐標范圍肯定的包圍矩形(或包圍盒)的左下角。為了簡化參考點的選擇,有些軟件包總是將顯示窗口的坐標系原點作為圖案起始位置。將(xp, yp)總是設定在座標系原點還簡化了在圖案的每元素映照到單個像素時的平鋪操作。例如,如果圖案中行的位置從1開始、從下往上計數,則圖案位置(y
mod ny+l, x mod nx+l)的色彩值賦給屏幕上的像素位置(x,y)。這里,ny和nx指定圖案矩陣的行數和列數。但是,將圖案起始點設在座標系原點時,圖案貼到屏幕背景上比貼到填充區更高效。使用同1圖案的相鄰或堆疊填充不會在區域間生成邊界。一樣,使用同1圖案重新定位或重新填充1個對象可能致使對象內部像素賦值的移位。相對靜止圖案背景,移動的對象表現為透明的,而不是帶著固定的內部圖案移動。
9.2色彩調和填充區域
也能夠依照多種方式將填充圖案和背風景相混合。圖案和背風景混合時使用透明因子來肯定背景中有多少應當混合到對象色彩中。我們也能夠使用簡單的邏輯操作或替換操作。圖4.19給出了1個2進制(黑和白)系統中邏輯和替換操作怎樣將2x2的填充圖案與背景圖案相混合的例子。

某些使用調和色彩的填充方法稱為軟填充(soft-fill)或色采填充(tint-fill)算法。這些填充方法的1種作用是,減弱在已模糊的對象邊界上的填充色彩,從而實現對邊的反走樣。另外一種用處是允許對原來用半透明筆刷填充的色彩區域進行重新涂色。這時候,當前色彩與筆刷色彩和區域“后面”的背風景進行混合。不管是何種情況,都要求新的色彩在區域上與當前填充色彩具有相同的變化。
線性軟填充算法(linear soft-fill algorithm)是這類填充的1個例子,該算法在將前風景F與單1背風景B (F=B)合并后繪制的區域上重新繪制。假設F和B的值為已知,那末通過檢測幀緩存中當前的色彩內容,便可肯定這些色彩原來是怎樣組合的。區域內將要重新填充的每一個像素確當前RGB色彩P,則是F和B的線性組合:
其中,“透明度”系數t對每一個像素,其值在0與1之間。t值小于0.5,則背風景對區域內部色彩的作用比填充色彩要大。向量方程(4.2)包括了色彩的RGB3個成份,即
因此,我們可使用任意1個RGB色彩成份來計算參數t的值:
其中,k = R, G或B,并且Fk ≠ Ba。理論1上參數t對每一個RGB成份具有相同的值,但取整到整數會使得t對不同的成份具有不同的值。我們可以通過選擇F和B間具有最大差的成份,從而使取整誤差最小,然后采取修改的泛濫填充或邊界填充程序,根據這個t值將新的填充色彩NF與背風景相混合。如以后13節所述的使用修改的泛濫填充或邊界填充進程可實現這1混合。
類似的軟填充進程可以用于前風景與多個背風景相混合的區域,例如檢測板圖案。當兩種背景
色B1和B2與前風景F相混合時,產生的像素色彩P為
其中,色彩項系數t0, t1和(1- t0 - t1)的和必須等于1。我們可用RGB色彩3個份量中的兩個來
建立兩個聯立方程,
從而求解兩個比例項參數t0和t1。然后,使用這些參數將新的填充色彩與兩種背風景相混合以得到新的像素色彩。
對3個背風景和1個前風景或兩個背風景和兩個前風景,則需要所有3個RGB方程來得到4種色彩的相對量。但是,
對有些前風景和背風景的混合,使用兩個或3個RGB方程則沒法求解。在色彩值非常類似或相互成比例時,將出現這類情況。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈