计算机图形学 第四讲 区域填充.ppt

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

第四讲 区域填充 扫描线算法 交点数的处理 多边形Pi的顶点可分为两类:如果(yi-1 - yi)(yi+1 - yi)≥0,则称顶点Pi为局部最高点或最低点,按两个交点计算,否则按一个交点计算。 水平边处理 不计算水平边和扫描线的交点 数据结构与实现步骤 输入参数 顶点数和顶点坐标 数据结构 有序边表 活化边表 有序边表 有序边表的构建 按顶点输入顺序依次形 成边,存储到每条最小 Y值所对应的扫描线位 置(水平边除外),相 同最小Y值的边按较低 顶点X值的升序排列。 有序边表结构 typedef struct tEage{ int yUpper; float xIntersect; float dxPerScan; struct tEage *next; } Eage 活化边表 举例: 扫描线算法 特点:算法效率较高。 缺点:对各种表的维持和排序开销太大,适合软件实现而不适合硬件实现。 内外测试 目标:鉴别非标准多边形的内部区域 自相交多边形。 方法 奇偶规则 非零环绕数规则 奇偶规则 从位置P作不经过顶点的射线 计算射线穿过多边形的边数 奇数为内部点,否则为外部点 非零环绕数规则 环绕数初始为零; 从位置P作不经过顶点的射线; 多边形从右至左穿过射线,加1; 多边形从左至右穿过射线,减1; 非零为内部点; 举例: 种子填充算法 扫描线种子填充算法 * 计算机图形学中,多边形区域有两种重要的表示方法:顶点表示和点阵表示。 所谓顶点表示,即是用多边形的顶点序列来表示多边形。这种表示直观、几何意义强、占内存少,易于进行几何变换,但由于它没有明确指出哪些像素在多边形内,故不能直接用于区域填充。 所谓点阵表示,则是用位于多边形内的像素集合来刻画多边形。这种表示丢失了许多几何信息,但便于进行填充。 根据区域的定义,可以采用不同的填充算法,其中最具代表性的是:适应于顶点表示的扫描线类算法和适应于点阵表示的种子填充类算法。 复杂边界 从内部指定位置开始填充,递归填充直至边界 简单边界 通过扫描线与边界交点确定填充区域 扫描线多边形区域填充算法基本原理是,待填充区域按Y方向(X方向亦可)扫描线顺序扫描生成。具体实现时,首先按扫描线顺序,计算扫描线与多边形的相交区间;再用要求的颜色填充这些区间内的像素,即完成这一条扫描线的填充工作。区间的端点可以通过计算扫描线与多边形边界线的交点获得。对于一条扫描线,多边形的填充过程可以分为四个步骤: (1) 求交:计算扫描线与多边形各边的交点; (2) 排序:把所有交点按x值递增顺序排序; (3)配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间; (4)填色:把相交区间内的像素置成多边形颜色,把相交区间外的像素置成背景色。 为了提高速度,假定当前扫描线与多边形某一条边的交点的x坐标为xi,则下一条扫描线与该边的交点不要重新计算,而是通过增加一个增量△x来获得。具体方法是: 设该边的直线方程为:ax+by+c=0; 若y=yi,x=xi;则当y = yi+1= yi+1时, 其中 为常数, yi yi+1 (xi,yi) 交点计算 把与当前扫描线相交的边称为活化边,并把它们按与扫描线交点X坐标递增的顺序存放在一个链表中,形成活化边表。 算法中采用较灵活的数据结构。它由边的分有序边表ET(Edge Table)和边的活化边表AEL(Active Edge Table )两部分组成。 表结构ET和AET中的基本元素为多边形的边。边的结构由以下四个域组成: ymax 边的上端点的y坐标; x 在ET中表示边的下端点的x坐标,在AET中则表示边与扫描线的交点的坐标; Δx 边的斜率的倒数; next 指向下一条边的指针。 表结构 7 2 4 ^ P5 P1 7 8 -1 ^ P2 P1 6 2 0 ^ P4 P5 3 6 -2 P3 P4 5 6 0.5 ^ P3 P2 ^ ^ ^ (Ymax, x,Δx, next) 有序边表 活化边表 3 4 -2 P3 P4 5 6.5 0.5 ^ P3 P2 扫描线2 AET指针 6 2 0 P4 P5 5 7 0.5 ^ P3 P2 扫描线3 AET指针 (Ymax, x,Δx, next) 3 6 -2 P3 P4 5 6 0.5 ^ P3 P2 扫描线1 AET指针 6 2 0 P4 P5 5 7.5 0.5 ^ P3 P2 扫描线4 AET指针 6 2 0 P

文档评论(0)

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

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

1亿VIP精品文档

相关文档