正在加载图片...
2.深度缓存ZB(一维数组)置为负无穷大 3.将对应扫描线i的多边形y表中的多边形加入到活化多边形表A中。 4.对新加入的多边形,生成其相应的边Y表 5.对A中每一个多边形,若其边Y表中对应扫描线Ⅰ增加了新的边,将新的边配对,加到活化边 对表AET中。 6.对AET中的每一对边: 6.1对x1〈x<x的每一个象素,按增量公式z=z+△z计算各点深度 depth e 6.2与B中的量比较, depth〉ZB(I),则令ZB(I)= depth,并计算颜色值,写帧缓存。 7.删除APT中,多边形顶点最大y坐标为I的多边形,并删除相应的边。 8.对AET中的每一个边对,作如下处理: 8.1删除y或ym已等于I的边。若一边对中只删除了其中一边,需对该多边形的边 重新配对。 8.2用增量公式计算新的x1、x和z1。用增量公式计算新的x=x+△x1、x=x1+△x2 和z1=z1+△x△Z。+△zb 734区间扫描线算法 与Z- buffer算法相比,扫描线Z- buffer算法做了两点改进。一、将整个绘图窗口内的消隐问题 分解到一条条扫描线上解决,使所需的Z缓冲器大大减少。二、计算深度值时,利用了面连贯性,只 用了一个加法。但它在每个象素处都计算深度值,进行深度比较。因此,被多个多边形覆盖的象素区 处还要进行多次计算,计算量仍然很大。区间扫描线算法克服了这一缺陷,使得在一条扫描线上每个 区间只计算一次深度值,并且不需要Z缓冲器。它是把当前扫描线与各多边形在投影平面的投影的交 点进行排序后,使扫描线分为若干子区间。因此,只要在区间任一点处找出在该处z值最大的一个面, 这个区间上的每一个象素就用这个面的颜色来显示 a/a2△a3|as/a587 图2.7.20扫描线与多边形的投影相交得到若干子区间 a1 a2 b a3 a4 a4 图2.7.21(a)两个平面在屏幕上的投影(b)无贯穿的情形(c)相互贯穿的情形 如何确定小区间的颜色可分为三种情况 7.小区间上没有任何多边形,如[a4a5,这时该小区间用背景色显示。 8.小区间上只有一个多边形,如ala2aa6这时可以对应多边形在该处的颜色显示 9.小区间上存在两个或两个以上的多边形如a6,a7,必须通过深度测试判断哪个多边形可见。若允许物体表面 相互贯穿时,还必须求出它们在扫描平面(ZX平面)的交点。用这些交点把该小区间分成更小的子区间(称 为间隔),在这些间隔上决定哪个多边形可见。如将[a2a3区间分成[a2bb,a3两个子区间。为了确定某间隔2. 深度缓存 ZB (一维数组) 置为负无穷大。 3. 将对应扫描线 i 的多边形 y 表中的多边形加入到活化多边形表 APT 中。 4. 对新加入的多边形,生成其相应的边 Y 表。 5. 对 APT 中每一个多边形,若其边 Y 表中对应扫描线 I 增加了新的边,将新的边配对,加到活化边 对表 AET 中。 6. 对 AET 中的每一对边: 6.1 对 xl < x < xr 的每一个象素,按增量公式 z = z +  za计算各点深度 depth。 6.2 与 ZB 中的量比较,depth > ZB(I), 则令 ZB(I) =depth,并计算颜色值, 写帧缓存。 7. 删除 APT 中,多边形顶点最大 y 坐标为 I 的多边形,并删除相应的边。 8. 对 AET 中的每一个边对,作如下处理: 8.1 删除 ylmax或 ylmax 已等于 I 的边。若一边对中只删除了其中一边,需对该多边形的边 重新配对。 8.2 用增量公式计算新的 xl 、xr 和 zl 。用增量公式计算新的 xl=xl+ xl、xr=xr+ xr 和 zl=zl+ xl  za + zb } } 2.7.3.4 区间扫描线算法 与 Z-buffer 算法相比,扫描线 Z-buffer 算法做了两点改进。一、将整个绘图窗口内的消隐问题 分解到一条条扫描线上解决,使所需的 Z 缓冲器大大减少。二、计算深度值时,利用了面连贯性,只 用了一个加法。但它在每个象素处都计算深度值,进行深度比较。因此,被多个多边形覆盖的象素区 处还要进行多次计算,计算量仍然很大。区间扫描线算法克服了这一缺陷,使得在一条扫描线上每个 区间只计算一次深度值,并且不需要 Z 缓冲器。 它是把当前扫描线与各多边形在投影平面的投影的交 点进行排序后,使扫描线分为若干子区间。因此,只要在区间任一点处找出在该处 z 值最大的一个面, 这个区间上的每一个象素就用这个面的颜色来显示。 图 2.7.20 扫描线与多边形的投影相交得到若干子区间 图 2.7.21 (a)两个平面在屏幕上的投影 (b)无贯穿的情形 (c) 相互贯穿的情形 如何确定小区间的颜色可分为三种情况: 7. 小区间上没有任何多边形,如[a4,a5],这时该小区间用背景色显示。 8. 小区间上只有一个多边形,如[a1,a2][a5,a6]这时可以对应多边形在该处的颜色显示。 9. 小区间上存在两个或两个以上的多边,形如[a6,a7],必须通过深度测试判断哪个多边形可见。若允许物体表面 相互贯穿时,还必须求出它们在扫描平面(ZX 平面)的交点。用这些交点把该小区间分成更小的子区间(称 为间隔),在这些间隔上决定哪个多边形可见。如将[a2,a3]区间分成[a2,b][b,a3]两个子区间。为了确定某间隔
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有