图元属性多边形填充.pptVIP

  1. 1、本文档共72页,可阅读全部内容。
  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文档。上传文档
查看更多
图元属性多边形填充

多边形的填充 1:多边形的扫描转换 2:多边形的区域填充 3:光栅图形的反走样算法 讨论二维区域的填充问题,即面着色的问题,也就是为指定的平面区域填上所需要的颜色。 3.4.1 基本概念 多边形:(定义)限定为有封闭折线边界且无交叉边的平面图形 多边形分类:凸多边形、凹多边形 判别凸凹多边形的方法 1、凸多边形所有向量叉积均同号。若有些叉积取正而有些为负,则是凹多边形 2、观察多边形顶点位置与每条延长线的关系,若有些顶点在某一延长线的一侧而其他一些顶点在另一侧,则是凹多边形。 分割凹多边形:向量方法、旋转方法 分割凹多边形 内-外测试 不自交的多边形、自相交的多边形 常用解决方法: 奇-偶规则、非零环绕数规则 1) 奇-偶规则(Odd-even Rule) 从任意位置p作一条射线,若与该射线相交的多边形边的数目为奇数,则p是多边形内部点,否则是外部点。 图例 图例 2) 非零环绕数规则(Nonzero Winding Number Rule) 首先使多边形的边变为矢量。 将环绕数初始化为零。 再从任意位置p作一条射线(不经过多边形顶点)。当从p点沿射线方向移动时,对在每个方向上穿过射线的边计数,每当多边形的边从右到左穿过射线时,环绕数加1,从左到右时,环绕数减1。 处理完多边形的所有相关边之后,若环绕数为非零,则p为内部点,否则,p是外部点。 内-外测试 多边形的表示方法 1、表示方法:定点表示和点阵表示 3.4.2 扫描转换的常用算法 逐点判断算法 扫描线算法 边缘填充算法 边界标志算法 逐点判断算法 思想:逐个象素判别,确定它们是否在多边形内部,从而给出位于多边形内的点(象素)的集合。 难点:如何确定一个点是否在多边形内部? 需要注意的问题 在计算交点时,如果交点恰恰就是多边形的顶 点,必须小心处理,即要观察在此顶点相遇的两条 边,如果这两条边的其余两个顶点在新构成线段的同 一侧,应认为此线段与多边形相交二次;若多边形两 条边的其余两个顶点在新线段的异侧,则认为此线段 与多边形相交一次(奇点的处理)。 算法的实现 现设P=P0P1…PnP0为一给定的多边形。Framebuffer(x,y)是与点(x,y)相对应的帧缓冲器中的元素。则逐点判断的算法可以表示成为如下的程序: for y:= screen-ymin to screen-ymax do for x:= screen-xmin to screen-xmax do if inside(p, x, y) then setpixel(framebuffer, x, y, polygon-color) else setpixel(framebuffer, x, y, back-color); 逐点判断的算法虽然程序简单,但是不可取。原因是速度太慢,该算法割断了各个象素之间的联系,孤立的考察各个象素和多边形P的内外关系,使得几十万甚至几百万个象素都要一一判别,每次判别都要多次求交点,需要做大量的乘除运算,花费大量的时间。 多边形填充的扫描线算法 1、特点:充分利用了相邻象素之间的连续性,避免对象素的逐 点判断和反复求交运算,减少了计算量,提高了算法速度. 1)扫描线的连续性 2)边的连续性 3)奇点的处理 a: 多边形P的顶点可分为两类:极值点和非极值点。如果 ,称顶点Pi为极值点(P1,P2,P3,P5, P6,P8);否则称Pi为非极值点(P0,P4,P7)。若扫描线与多边形相交于多边形的顶点,则该交点(顶点)称为奇点。 3)奇点的处理 c: 奇点的处理 为了使交点个数保持为偶数,规定当奇点是P的极值点时,该点按两个交点计算;否则按一个交点计算。 d: 实际算法预处理: 若Pi是非极值点,则将 两边中位于扫描线y=yi上方的那条边在Pi点处截去一单位长 扫描线算法—奇点的处理 2、扫描线算法的实现 对于每一条扫描线,多边形的填充过程可分为以下4步: 扫描线算法的实现步骤 对于一条扫描线填充过程可以分为四个步骤: 求交 排序 配对 填色 2、扫描线算法的实现 3、扫描线算法的数据结构 a:数据结构 边的分类表ET和边的活化链表AEL。ET和AEL中的多边形的边由四个域组成: ymax 边的上端点的y坐标; x ET中为边的下端点的x坐标,在AEL中是边与扫描线交点的x坐标 Δx 边的斜率的倒数 next 指向下

文档评论(0)

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

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

1亿VIP精品文档

相关文档