计算机图形学第7章节.pptVIP

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学第7章节

第七章 光栅图形的扫描转换与区域填色 多边形的两种表示方法 两种表示方法的优缺点 什么是多边形的扫描转换 逐点判断算法 算法思想:逐个像素判别,检测其是否在多边形内部,从而给出位于多边形内部的像素集合。 逐点判断算法的具体实现 假设P=P0P1P2…PnP0为一个给定多边形,P0,P1,P2…Pn为其顶点表示。 假设inside(P,x,y)是验证点(x,y)是否在多边形P内的布尔函数。 Inside函数的实现原理 计算从(x,y)到(+∞,y)的射线与多边形的交点个数。 若交点个数是奇数的话,就表明该点在多边形内部,否则该点在多边形外部。 逐点判断算法的具体实现 假设framebuffer(x,y)是与(x,y)对应的帧缓冲器中的元素,用以存放对应像素的颜色值。设polygon_color为多边形内的颜色值,background_color为背景颜色。 逐点判断算法的伪代码程序 for y:=screen_ymin to screen_ymax do for x:=screen_xmin to screen_xmax do if inside(P,x+0.5,y+0.5) then setpixel(framebuffer,x,y,polygon_color) else setpixel(framebuffer,x,y,background_color) 逐点判断算法的优缺点 优点:简单,易于理解。 缺点:忽略了像素与像素之间的联系,如果整个平面有几千万个像素,也要一一进行判别,要做大量的计算工作,效率太低。 扫描线算法 扫描线算法利用了相邻像素之间的连贯性,避免了反复求交的运算。 扫描线算法综合利用了区域的连贯性,扫描线的连贯性和边的连贯性。 区域的连贯性 假设多边形P的顶点Pi(xi,yi),i=0,1,2…n 各个顶点Pi的纵坐标按yi递减排序: yi0, yi1, yi2… yin 其中yi,k= yi,k+1 区域的分割 现在作两条扫描线y=yi,k和y=yi,k+1,这两条扫描线之间的区域被多边形分割成若干个梯形。 梯形上下两底分别为两条扫描线,腰在多边形P的边上或在显示屏幕的边界上。 分割后区域的分类 这些梯形分为两类:在多边形P内部和在多边形P外部。 两类梯形交替地排列在长方形区域内。 如果知道了某点q所在区域在多边形内(或外),就能知道整个长方形区域内的梯形排列情况。 此性质称为区域的连贯性。 扫描线的连贯性 假设e为一整数满足 若扫描线y=e与多边形P的边Pi-1Pi相交,则记其交点的横坐标xei。 现在假设xei1,xei2,…,xeil为扫描线与P的边界各交点的横坐标的递增序列,称为交点序列。 交点序列的性质 l是偶数。 在该扫描线上只有区段(xeik,xei,k+1),(k=1,3,5…l-1)位于多边形P内,其余均在多边形P外,两种区段沿扫描线相间排列。 此性质称为扫描线的连贯性。 交点序列 若d=e-1,则位于扫描线y=d上的交点序列为xdj1,xdj2,…,xdjk。 若多边形P的边Pr-1Pr与扫描线y=e和y=d都相交,则xer和xdr满足: 怎样得到y=e上的交点序列 通过递推式可以算出与y=e和y=d都相交的点 若再求出与扫描线y=d不相交但与下一扫描线y=e相交的所有边PqPq+1上的交点xeq 然后把这些点按底层的顺序排列,就能得到了y=e上的交点序列 边的连贯性 当取某一整数k,0=k=n-1,使 1)两序列元素数个数相等 2)点(xeir,e)与(xdjr,d)位于多边形同一条边上,即ir=jr,得到 由上式就可递推出xeir。 奇点的处理 当扫描线与多边形P的边界的交点是P的顶点时,该交点称为奇点。 由于连贯性,每一条扫描线与多边形P的边界交点个数都是偶数。但是过奇点的扫描线可能出现奇数。 出现奇点的两种情况的讨论 极值点就是附近的点都比其小或都比其大,满足数学表达式为(yi-1-yi)(yi+1-yi)0 不是极值点的顶点称为非极值点。 对于奇点的两种情况的处理 扫描线算法的数据结构 边的分类表ET 边的分类表ET是按边下端点的纵坐标y对非水平边进行分类的链表数组。 边的活化表AEL 边的活化表AEL由与当前扫描线相交的所有多边形的边组成,它记录了多边形边沿扫描线的交点序列,并根据递推式: 扫描线算法的描述 步骤1:(y初始化)建立ET表,并且取扫描线纵坐标y的初始值为ET中非空元素的最小序列。 步骤2:(AEL初始化)将边的活化链表AEL设置为空。 步骤3:按从下到上的顺序对纵坐标值为y的扫描线(当前扫描线)执行子算法,

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档