计算机图形学 - 副本.docVIP

  • 0
  • 0
  • 约3.37千字
  • 约 8页
  • 2017-02-01 发布于重庆
  • 举报
计算机图形学课程报告 题 目: 扫描线算法 2013年 12 月 27 日 摘要:Z缓冲区算法是一种比较简单的消隐算法,但算法需要占用相当大的系统资源,且计算量非常的大。可以把绘制图像的扫描线算法和Z缓冲区算法想结合在一起,可以大大减少系统资源的使用,同时提高了算法的效率。 关键字:消隐、扫面线、Z缓冲区 引言 位于视域四棱锥内的景物,当它们投影到显示屏幕上后,仍有一部分可能不可见,这是因为位于前面离观察者近的景物可能遮挡了位于其后面的景物。为了生成正确的显示结果,有必要去研究消隐算法。 Z缓冲区算法是最简单的消隐算法之一,Z缓冲区是一组存储单元,每个单元对应屏幕上的一组像素,同时也对应于帧缓冲区的一个单元,它们之间一一对应。Z缓冲区中每个单元的值是屏幕上相应像素点所反应的对象上点的Z坐标值,所以每个存储单元的位数取决于图形在Z方向上的变化范围。Z缓冲区中每个单元的初值取Z的最大值,帧缓冲区每个单元的初值则取对应背景颜色的值。图形消隐和生成的过程就是向Z缓冲区和帧缓冲区相应单元填值得过程:对于要显示对象上的一点A。比较A点的Z坐标值和Z缓冲区中相应单元的值,若前者小于后者,则将Z缓冲区中相应的单元的值改为A点的坐标Z值。同时帧缓冲相应单元的值也要改为A点的颜色值。若前者大于后者,则说明屏幕上相应像素已经显示了对象上某个点的颜色,该点比A点更接近观察者,于是Z缓冲区和帧缓冲区相应单元的值均不变。对于要显示对象每个面上的每个点都做上述的处理后,便可得到消除隐藏面的图。 Z缓冲区消隐算法的优点是简单、可靠,不需要对显示对象的面预先进行排序。但缺点也是很突出的。需要很大的缓冲区,而且计算量很大。所以我们把整个屏幕分成若干个区域,当每个区域对应屏幕上的一行时,就是扫描线算法和Z缓冲区算法的结合。采用这种方法我们可以大大的减少系统资源的使用量,同时我们通过一些特殊的存储结构来加速我们的计算。 扫面线算法 要克服Z缓冲消隐算法占用内存过大的缺点,可把整个屏幕分成若干个区域。对每个 区域来分别进行处理,这样Z缓冲区的单元数只需取屏幕上一个区域内的像素个数。对每个区域的处理都可以参照Z缓冲区算法的处理方法。 2.1 基本思路 ① 只需考虑与多边形投影相交的扫描线。 ② 对每条扫描线,只需处理与多边形投影中某二条边的交点 中间的部分(边对)。 ③ 对各多边形逐个处理,方法同Z—Buffer算法。 2.2 为提高算法的效率,需解决几个问题: ① 如何建立扫描线与多边形投影之间的关系; ② 如何建立扫描线与多边形边投影之间的关系; ③ 如何突出边对信息; ④ 如何方便地计算边对中各像素点处的相关坐标。 图形和扫面线的对应关系如图(1)所示 图(1)图形和对应的扫面线 2.3算法的实现 ① 计算多边形边的投影与扫描线交点的 x 坐标,如图(2) 设多边形 的投影上的边 L 的方程为: 则扫描线 与其交点的坐标: 而扫描线 与其交点的坐标为: ∴利用ΔX 就可方便地递推得到该边与下一条扫描线交点 的坐标。 图(2) ② 计算多边形在点处的深度值,如图(3) 设多边形的方程为: 则多边形在点处的深度值为: 而点处的深度值为: ∴利用 ΔZx 就可方便地递推得到该多边形在同一条扫描线上相邻后续各点的深度值。 图(3) 2.4为了加快计算要用到的数据结构 (建立一个图(4)的多边形Y桶,如图(5) 用于描述图形中的各多边形与扫描线之间的关系,桶的长度与屏幕上的扫描线数相同。根据多边形各顶点中最小的 y 坐标,将其放入相应的桶内。链表中存储每个多边形的IP及其多边形顶点的最大y坐标,系数a1,b1,c1,d1,以及多边形的颜色值color。 图(4) 图(5) ② 有效多边形表 APT(多边形活化表)图(4)中当 Y=4 时的有效多边形表,如图(6) 图(6) ③ 建立图(4)的边Y桶,如图

文档评论(0)

1亿VIP精品文档

相关文档