图形学4.pptVIP

  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文档。上传文档
查看更多
图形学4

区域填充 区域填充 多边形填充 X扫描线 有效边表算法 边缘填充算法(栅栏填充算法) 种子填充 边界填充算法 泛填充算法 多边形内点判断准则 种子填充 区域填充 区域是指已经表示成点阵形式的填充图形,它是像素集合。 种子填充是将区域内的一点(种子)赋予给定的颜色,然后将这种颜色扩展到整个区域内的过程。 给定条件:区域内一点的坐标即种子坐标、边界色、填充色。 种子填充 区域连通 区域是互相连通着的象素的集合,连通方式可分为四连通和八连通。 四连通:从区域内一点出发,可通过四个方向:上、下、左、右到达该区域内部的任意象素。 种子填充 区域连通 八连通:区域内部从一个象素到达另一个象素的移动路径,除了上、下、左、右四个方向外,还允许沿着对角线方向。 区域填充 区域填充 边界填充算法(Boundary-fill Algorithm)。 把位于给定区域的边界上的象素一一列举出来的方法称为边界表示法。 泛填充算法(Flood-fill Algorithm) 枚举出给定区域内所有象素的表示方法称为内点表示。 区域填充 边界填充算法 算法的输入:种子点坐标(x,y),填充色和边界颜色。 栈结构实现4-连通边界填充算法的算法步骤为: 种子象素入栈;当栈非空时重复执行如下三步操作: (1)栈顶象素出栈; (2)将出栈象素置成填充色; (3)检查出栈象素的4-邻接点,若其中某个象素点不是边界色且未置成多边形色,则把该象素入栈。 区域填充 边界填充算法:示范代码 区域填充 边界填充算法 区域填充 沿扫描线的边界填充算法 基本思想: 首先填充当前扫描线上的位于给定区域内的一区段,然后确定与这一区段相邻的上下两条扫描线上位于该区段内是否存在需要填充的新区段,如果存在,则依次把它们保存起来。反复这个过程,直到所保存的各区段都填充完毕。 区域填充 沿扫描线的边界填充算法(4-连通) 初始化堆栈。 种子压入堆栈。 while(堆栈非空) { 从堆栈弹出种子象素。 如果种子象素尚未填充,则:   求出种子区段:xleft、xright;   填充整个区段。 区域填充 沿扫描线的边界填充算法(4-连通) 检查相邻的上扫描线的xleft≤x≤xright 区间内,是否存在需要填充的新区段,如果存在的话,则把每个新区段在left≤x≤xright范围内的最右边的象素,作为新的种子象素依次压入堆栈。 检查相邻的下扫描线的xleft≤x≤xright区间内,是否存在需要填充的新区段,如果存在的话,则把每个新区段在xleft≤x≤xright范围内的最右边的象素,作为新的种子象素依次压入堆栈。} 区域填充 算法演示:种子填充.swf 区域填充 泛填充算法 算法的输入:种子点坐标(x,y),填充色和内部点的颜色。 算法原理: 算法从指定的种子(x,y)开始,用所希望的填充颜色赋给所有当前为给定内部颜色的象素点 区域填充 泛填充算法:示范代码 区域填充 泛填充算法 注意: 当以边界表示时,4-连通边界填充算法只能填充4-连通区域,8-连通边界填充算法也只能填充8-连通区域。 当以内点表示时,8-连通泛填充算法可以填充8-连通区域也可以填充4-连通区域,当然4-连通泛填充算法还是只能填充4-连通区域。 多边形内点的判别准则 对多边形进行填充,关 键是找出多边形内的象素。 内-外测试 奇-偶规则(Odd-even Rule) 从任意位置p作一条射线,若与该射线相交的多边形边的数目为奇数,则p是多边形内部点,否则是外部点。 相关演示 多边形内点的判别准则 内——外测试(相关演示) 非零环绕数规则(Nonzero Winding Number Rule) 首先使多边形的边变为矢量。 将环绕数初始化为零。 再从任意位置p作一条射线。当从p点沿射线方向移动时,对在每个方向上穿过射线的边计数,每当多边形的边从右到左穿过射线时,环绕数加1,从左到右时,环绕数减1。 处理完多边形的所有相关边之后,若环绕数为非零,则p为内部点,否则,p是外部点。 * void boundaryFill4(int x,int y,int fill,int boundary) { int current; current=getPixel(x,y); if ((current!=boundary) (current!=fill)) { setColor(fill); setPixel(x,y); boundaryFill4(x+1,y,fill,boundary); boundaryFill4(x-1,y,fill,boundary); boundaryFill4(x,y+1,fill,

文档评论(0)

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

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

1亿VIP精品文档

相关文档