计算机图形学实验报告实验三.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学实验报告实验三

贵州大学实验报告 学院:计算机科学与信息学院 专业:计科 班级:计科101 姓名 徐艳 学号 1008060042 实验序号 实验三 实验时间 2013-4-22 指导教师 吴云 成绩 实验项目名称 多边形扫描转换 实验目的 掌握光栅显示系统中多边形的扫描转换和区域填充算法。掌握4连通与8连通区域的扩展性。 实验要求 实现多边形的扫描转换算法和区域填充算法。(任选两个算法并实现) 实验原理 扫描线算法: 算法原理: 非自交多边形(边与边之间除了顶点外无其它交点) 判断扫描线上的点是否在多边形之内,根据多边形区域连续性,分为3个步骤: (1)求出扫描线与多边形所有边的交点; (2)把这些交点的x坐标值以升序排列; (3)对每一对交点间的区域进行填充。 第三个步骤是从奇数个交点出发到偶数个交点。如上图,对y=8的扫描线排序x坐标得到的表是(2,4,9,13),然后对交点2与4之间、9与13之间的所有象素点进行填充。 几点规则: 边界上的象素: “左闭右开”,“下闭上开”(将左边界和下边界的点算为内部,而将右边界和上边界算为外部) 顶点:“上开下闭”。 区域填充算法: 算法原理: 区域填充–对区域重新着色的过程。 (1)将指定的颜色从种子点扩展到整个区域的过程 (2)区域填充算法要求区域是连通的 ? 连通性: 4连通、8连通 算法实现简单描述: 堆栈结构实现种子算法,四向算法: 1、种子象素压入堆栈 2、若堆栈非空,即有区域中象素在堆栈中,做如下循环: A.栈顶象素出栈; B.将出栈象素置为多边形颜色; C.按左、上、右、下四个方向左右顺序检查与出栈象素相邻的四个象素,若其中某象素不在边界置为多边形颜色,则将该象素推入堆栈。 边填充算法-正负相消法 算法原理: 对每一条扫描线和每条多边形边的交点,都将扫描线上右边的所有象素求余。(偶数次取余,结果不变,) 设A为一正整数,正整数M的余定义为A-M,记为 风。当计算机中用n位表示M时,可取A为n位能表示的最大整数,即A=2n-1。可知 即对M作偶数次取余,结果仍为M。 求余可用异或显示模式实现。 以扫描线为中心的边缘填充法: 设是当前扫描线与多边形的交点的x坐标数列,填充该扫描线上位于多边形内的区段由下列步骤完成: 算法1(以扫描线为中心的边缘填充算法) 1、将当前扫描线上的所有象素着上颜色; 2、求余: for(i = 0;i = m; i++) 在当前扫描线上,从横坐标为Xi的交点向右求余; 算法2(以边为中心的边缘填充算法) 1、将绘图窗口的背景色置为; 2、对多边形的每一条非水平边做:该边上的每个象素开始向右求余; 边缘填充算法与扫描线法的比较: 适合用于具有帧缓存的图形系统。处理后,按扫描线顺序读出帧缓存的内容,送入显示设备。 ?优点:边缘填表充法的数据结构和程序结构都比扫描线法简单 ?缺点:对于复杂图形,每一象素可能被访问多次,输入/输出的量比扫描线算法大得多。要对帧缓存的大量象素反复赋值,速度较慢,并难于用图元填充。 边标志算法(轮廓填充算法) 改进的边填充法: 优点:对每个象素只访问一次。不必建立、维护边表及对边表进行排序,适于硬件实现。 步骤: 1、对多边形的每条边进行直线扫描变换,即将多边形经过的象素打上边标志; 2、填充,即对每条多边形相交的扫描线依次从左到右逐个访问该扫描线上的象素; 使用一个布尔变量inside 来指示当前点的状态(inside的初始值为False) ,若当前象素在多边形内部,则inside为真,反之为假。 若当前象素为打上边标志的点,就将inside取反(为 True),对未打标志的象素,inside不变仍为False。 对inside为True 的象素进行填充。 种子填充算法 种子填充算法首先假定区域由封闭轮廓线围成,且轮廓线内某点是已知的,然后开始搜索与种子点相邻且位于轮廓线内的点。如果这相邻 点不在轮廓线内,则已达到轮廓线的边界;如果相邻点在轮廓线之内,则这相邻点成为新的种子点,继续搜索下去。只适用于光栅扫描设备。 区域分类(区域采用边界定义,即区域边界上与边界外的象素取相同值,区域内部的点取不同值) 四向连通区域:各象素在水平垂直四个方向是边通的。即从区域内任一点出发,可水平/垂直移动到达区域内任一点。 八向连通区域:各象素在水平、垂直、及四个对角线方向都是是边通的。即从区域内任一点出发,可水平、垂直、及四个对角线方向移动到达区域内任一点。 区域填充(种子填充法) 区域填充–对区域重新着色的过程。 –将指定的颜色从种子点扩展到整个区域的过程 –区域填充算法要求区域是连通的 ? 连通性: 4连通、8连通 堆栈结构实现种子算法,四向算法: 1、种子象素压入堆栈 2、若堆栈非空,即有区域中象素在堆栈中,

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档