要建立一个边表ET。ET中各登记项 按边的较小的y坐标递增排列;每一登 记项下的“吊桶”,按所记x坐标递增 排列。“吊桶”中各项的内容依次是: 1.与较小的y坐标对应的端点的x坐标 xmin. 2.边的另一端点的较大的y坐标ymax。 3.x的增量△x,它实际上是边的斜率 的倒数,是从一条扫描线走到下一条 扫描线时,按x方向递增的步长。 4.边所属多边形的标记
要建立一个边表ET。ET中各登记项 按边的较小的y坐标递增排列;每一登 记项下的“吊桶” ,按所记x坐标递增 排列。 “吊桶”中各项的内容依次是: 1.与较小的y坐标对应的端点的x坐标 xmin。 2. 边的另一端点的较大的y坐标ymax。 3. x的增量Δx,它实际上是边的斜率 的倒数,是从一条扫描线走到下一条 扫描线时,按x方向递增的步长。 4. 边所属多边形的标记
设有两个空间的三角形ABC、DEF,各 顶点的坐标依次是(1,1,10),(2, 5,10),(5,3,10),(3, 4,5) (4,6,5),(6,2,5)。 6 E 5 B 3 两个多边形 在z=0平面 上的投影 2 34 5 6
设有两个空间的三角形ABC、DEF,各 顶点的坐标依次是(1,1,10),(2, 5,10),(5,3,10),(3,4,5), (4,6,5),(6,2,5)。 A B C D E F 两个多边形 在zv =0平面 上的投影
入 DE CB 入 2 FD FE 2 AB AC 两个多边形建立的“吊桶” 已排序的边表
两个多边形建立的“吊桶”已排序的边表
+2 +1 C B 图7.21
图 7.21
还需要一个多边形表PT(polygon Table), 其中要包含下列信息: 1.每个多边形所在平面方程的系数。在需要 比较深度时,要通过对所在(xy),根据平 面方程解出深度z。 2.每个多边形的亮度或颜色值。实际做扫描 转换时应用。 3。一个“进入退出”标志,初值为“假” 。在扫描转换处理时,用以标记扫描线对该 多边形是“进入”,还是“退出”。 象在多边形填充的扫描线算法中一样, 操作通过一个活动边表AET进行
还需要一个多边形表PT(polygon Table), 其中要包含下列信息: 1. 每个多边形所在平面方程的系数。在需要 比较深度时,要通过对所在(x,y),根据平 面方程解出深度z。 2. 每个多边形的亮度或颜色值。实际做扫描 转换时应用。 3. 一个“进入\退出”标志,初值为“假” 。在扫描转换处理时,用以标记扫描线对该 多边形是“进入” ,还是“退出” 。 象在多边形填充的扫描线算法中一样, 操作通过一个活动边表AET进行
通过以上的讨论,可以写出整个扫描 线算法实施的步骤。 首先正确形成边表ET和多边形表PT之 后,实施步骤就与第二章叙述的多边形填 充的扫描线算法的实施步骤基本相同,只 是需要把那里的步骤:在扫描线y上,按照 AET表提供的x坐标对,用color实施填充 修改加细如下:
通过以上的讨论,可以写出整个扫描 线算法实施的步骤。 首先正确形成边表ET和多边形表PT之 后,实施步骤就与第二章叙述的多边形填 充的扫描线算法的实施步骤基本相同,只 是需要把那里的步骤:在扫描线y上,按照 AET表提供的x坐标对,用color实施填充 修改加细如下:
将实施扫描转换时遍查AET表中各 “吊桶”的指针i初始置为1,扫描线正在 多少个多边形内的累计数值s初始置为零 将活动多边形表,即扫描线正在通过的多 边形按深度递增次序排列而形成的表,记 为p,初始置为空。 2 设第i个“吊桶”记录的相应多边形是 A。 若A的“进入/退出”标记FA为“假”, 则改FA为“真”,将A加到表P的前面,s 增加1。否则,FA即为“真”,则改FA为 “假”,将P中的A去掉,s减少1
1 将实施扫描转换时遍查AET表中各 “吊桶”的指针i初始置为1,扫描线正在 多少个多边形内的累计数值s初始置为零, 将活动多边形表,即扫描线正在通过的多 边形按深度递增次序排列而形成的表,记 为p,初始置为空。 2 设第i个“吊桶”记录的相应多边形是 A。若A的“进入/退出”标记FA为“假” , 则改FA为“真” ,将A加到表P的前面,s 增加1。否则,FA即为“真” ,则改FA为 “假” ,将P中的A去掉,s减少1
3 若s=0,则到5。(这时扫描线不在 任何多边形内,正通过背景,不必做扫 描转换。)若s=1,则到4(这时扫描线 只在一个多边形内,不必做深度比较, 去做扫描转换。)若前面两个判断都为 “假”,扫描线至少在两个多边形内, 应做深度比较。对表P前面两个多边形 做深度比较,比较后放回应保证P表中 的多边形按深度递增的次序。 4 对第i个和第+1个“吊桶”存有的 x坐标指示的扫描线上的一段,按照P表 最前面多边形指示的亮度或颜色,实施 扫描转换
3 若s=0,则到5。(这时扫描线不在 任何多边形内,正通过背景,不必做扫 描转换。)若s=1,则到4(这时扫描线 只在一个多边形内,不必做深度比较, 去做扫描转换。)若前面两个判断都为 “假”,扫描线至少在两个多边形内, 应做深度比较。对表P前面两个多边形 做深度比较,比较后放回应保证P表中 的多边形按深度递增的次序。 4 对第i个和第i+1个“吊桶”存有的 x坐标指示的扫描线上的一段,按照P表 最前面多边形指示的亮度或颜色,实施 扫描转换
5 i增加1,若i所指已无“吊桶”,步骤 结束,去下一步骤(删除y=ymax的边) 。 否则,回到步骤2。在扫描线y=4,实施 前面步骤的各步骤,情形如表7.1所示
5 i增加1,若i所指已无“吊桶”,步骤 结束,去下一步骤(删除y=ymax的边)。 否则,回到步骤2。在扫描线y=4,实施 前面步骤的各步骤,情形如表7.1所示
PT表 说明 FABC FDEF (ABC) true 到3填ABC的亮度或颜色值 2 2 (DEF, true 在步骤3发生深度比较,比较结果DEF更 靠近观察者,它仍在P表前面,3到 ABC) 32填DEF的亮度或颜色值 3 (DEF) fals 32 到5填DEF的亮度或颜色值 e 0 fals e
2 1 4 3 i s P PT表 FABC FDEF 说明 1 1 (ABC) true 1 到3填ABC的亮度或颜色值 2 2 (DEF, ABC) true 在步骤3发生深度比较,比较结果DEF更 靠近观察者,它仍在P表前面,3到 3 填DEF的亮度或颜色值 3 1 (DEF) fals e 3 到5填DEF的亮度或颜色值 4 0 ( ) fals e 2 1