區間掃描線算法


區間掃描線算法

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

 

因為不管是哪一種z-buffer算法,都是在像素級上處理問題 ,要進行消隱,

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

 

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

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

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

算法的優點:將象素計算改為逐段計算,效率大大提高!

 

如何實現這個算法?

首先要有投影多邊形,然后求交點,然后交點進行排序排序

 

排序的結果就分成了一個個區間,然后在每個區間找當中的 一個像素(i,j),

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

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

 

如何確定小區間的顏色 ?

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

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

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

 

這個算法存在幾個問題:

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM