计算机图形学5多边形扫描转换和区域填充.pptVIP

计算机图形学5多边形扫描转换和区域填充.ppt

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

逐点判断法 2)累计角度法 步骤 从v点向多边形P顶点发出射线,形成有向角 计算有相交的和,得出结论 栅栏填充算法 边缘填充算法缺点:每一个象素可能被访问多次 引入栅栏,以减少填充算法访问象素的次数。 栅栏:与扫描线垂直的直线,通常过一顶点,且把多边形分为左右二半。 基本思想:扫描线与多边形的边求交,将交点与栅栏之间的象素取补。若交点位于栅栏左边,则将交点之右,栅栏之左的所有象素取补;若交点位于栅栏右边,则将交点之左,栅栏之右的所有象素取补。 减少了象素重复访问数目,但不彻底。 扫描线填充算法 (1)初始化:堆栈置空。将种子点(x,y)入栈。 (2)出栈:若栈空则结束。否则取栈顶元素(x,y),以y作为当前扫描线。 (3)填充并确定种子点所在区段:从种子点(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边界。分别标记区段的左、右端点坐标为xl和xr。 (4)并确定新的种子点:在区间[xl,xr]中检查与当前扫描线y上、下相邻的两条扫描线上的象素。若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第(2)步。 上述算法对于每一个待填充区段,只需压栈一次;因此,扫描线填充算法提高了区域填充的效率。 扫描线算法分析(举例分析) 该算法也可以填充有孔区域。 扫描线算法分析(举例分析) 扫描线算法分析(举例分析) 扫描线算法分析(举例分析) 图案填充 图案在区域的局部坐标系中定义 前景色与背景色的合成问题 像素着色模式问题 透明或不透明 本质:规定前景色与背景色的组合规则,如前景色优先、背景色优先、前景色与背景色的加权组合、或各种规则的组合。 像素着色模式 图案填充 在扫描转换算法中对像素着色操作需增加额外控制 像素着色模式 与图案中1标记位置对应的像素写为前景色 在透明模式下: 与图案中0标记位置对应的像素不进行写操作 在不透明模式下: 与图案中0标记位置对应的像素写为背景色(图案背景色) 逐边向右取 右 右 右 右 6、边界标志算法 基本思想: 帧缓冲器中对多边形的每条边进行直线扫描转换,亦即对多边形边界所经过的象素打上标志。 然后再采用和扫描线算法类似的方法将位于多边形内的各个区段着上所需颜色。 使用一个布尔量inside来指示当前点是否在多边形内的状态。 void edgemark_fill(polydef, color) 多边形定义 polydef; int color; { 对多边形polydef 每条边进行直线扫描转换; inside = FALSE; for (每条与多边形polydef相交的扫描线y ) for (扫描线上每个象素x ) {if(象素x被打上边标志)//两个交点之间的区域填充 inside = ! (inside); if(inside!= FALSE) putpixel (x, y, color); else drawpixel (x, y, background); } } 用软件实现时,扫描线算法与边界标志算法的执行速度几乎相同, 由于边界标志算法不必建立维护边表以及对它进行排序,所以边界标志算法更适合硬件实现,这时它的执行速度比有序边表算法快一至两个数量级。 小结 扫描线法可以实现已知多边形域边界的填充,多边形域可以是凹的、凸的、还可以是带孔的。该填充算法是按扫描线的顺序,计算扫描线与待填充区域的相交区间,再用要求的颜色显示这些区间的像素,即完成填充工作。 这里区间的端点通过计算扫描线与多边形边界的交点获得。所以待填充区域的边界线必须事先知道,因此它的缺点是无法实现对未知边界的区域填充。 二、区域填充 区域填充是指将区域内的一点(常称种子点)赋予给定颜色,然后将这种颜色扩展到整个区域内的过程。 它是光栅计算机图形学中的一个基本操作,在交互式图形设计、动画、计算机辅助设计等领域有着广泛的应用。 区域---指已经表示成点阵形式的填充图形,是象素的集合。 在光栅图形学中,区域指的是已经表示成点阵形式的象素的集合。 区域可采用内点表示和边界表示两种表示形式。 内点表示:枚举出区域内部的所有像素,内部的所有像素着同一个颜色,边界像素着与内部像素不同的颜色。 边界表示:枚举出边界上的所有像素,边界上的所有像素着同一个颜色,内部像素着与边界像素不同的颜色。 区域可分为4向连通区域和8向连通区域。 四个方向运动 八个方向运动 四连通区域 八连通区域 区域填充算法要求区域是连通的,因为只有在

文档评论(0)

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

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

1亿VIP精品文档

相关文档