区间扫描线算法

区间扫描线算法

下面介绍区间扫描线算法。该算法放弃了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值最大的面,这就存在一个问题。如何 知道在这个区间上有哪些多边形是和这个区间相关的?

相关文章
相关标签/搜索