區間掃描線算法

區間掃描線算法

下面介紹區間掃描線算法。該算法放棄了z-buffer的思想,是 一個新的算法,這個算法被認爲是消隱算法中最快的算法

 

由於無論是哪種z-buffer算法,都是在像素級上處理問題 ,要進行消隱,測試

每一個像素都要進行計算判別,甚至一個像素 要進行屢次(一個像素可能會被多個多邊形覆蓋)blog

 

掃描線的交點把這條掃描線分紅了若干個區間,每一個區間 上必然是一樣一種顏色排序

對於有重合的區間,如a6a7這個區間,要麼顯示F2的顏 色,要麼顯示F3的顏色,不會出現顏色的跳躍效率

若是把掃描線和多邊形的這些交點都求出來,對每一個區間, 只要判斷一個像素的要畫什麼顏色,那麼整個區間的顏色都 解決了,這就是區間掃描線算法的主要思想im

算法的優勢:將象素計算改成逐段計算,效率大大提升!db

 

如何實現這個算法?

首先要有投影多邊形,而後求交點,而後交點進行排序排序img

 

排序的結果就分紅了一個個區間,而後在每一個區間找當中的 一個像素(i,j),co

在(i,j)處計算每一個相關面的z值,對 相關深度值z進行比較,其中最大的一個就表示是可見的。ps

整 個這段區間就畫這個z值最大面的顏色

 

如何肯定小區間的顏色 ?

(1)小區間上沒有任何多邊形,如[a4,a5],用背景色顯示

(2)小區間只有一個多邊形,如[a1,a2],顯示該多邊形的顏色

(3)小區間上存在兩個或兩個以上的多邊,好比[a6,a7], 必須通 過深度測試判斷哪一個多邊形可見

 

這個算法存在幾個問題:

一、真的去求交點嗎?利用增量算法簡化求交!

二、每段區間上要求z值最大的面,這就存在一個問題。如何 知道在這個區間上有哪些多邊形是和這個區間相關的?

相關文章
相關標籤/搜索