.基本图形生成.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文档。上传文档
查看更多
基本图形生成

计算机图形学演示稿 数据结构的实现 为了提高效率,在处理一条扫描线时,仅对与它相交的多边形的边进行求交运算。我们把与当前扫描线相交的边称为活性边,并把它们按与扫描线交点x坐标递增的顺序存放在一个链表中,称此链表为活性边表(AET)。 ●规则3: 扫描线与多边形的顶点相交时,交点的取舍,保证交点正确配对。 ●解决方法: 检查两相邻边在扫描线的哪一侧。 只要检查顶点的两条边的另外两个端点的Y值,两个Y值中大于交点Y值的个数是0,1,2,来决定取0,1,2个交点。 扫描线算法 (a)扫描线6的活性边表 (b)扫描线7的活性边表 假定当前扫描线与多边形某一条边的交点的横坐标为x,则下一条扫描线与该边的交点不必要重计算,只要加一个增量△x即可,下面,我们推导这个结论。 设该边的直线方程为:ax+by+c=0, y=yi时,x=xi;则当y=yi+1时, Xi+1=xi-b/a ??? ? ??? ??? ? 另外使用增量法计算时,我们需要知道一条边何时不再与下一条扫描线相交,以便及时把它从活性边表中删除出去。综上所述,活性边表的结点应为对应边保存如下内容:第1项存当前扫描线与边的交点坐标x值;第2项存从当前扫描线到下一条扫描线间x的增量Dx;第3项存该边所交的最高扫描线号ymax。 为了方便活性边表的建立与更新,我们为每一条扫描线建立一个新边表(NET),存放在该扫描线第一次出现的边。也就是说,若某边的较低端点为ymin,则该边就放在扫描线ymin的新边表中。 上图所示各条扫描线的新边表NET 算法过程: void polyfill (polygon, color) int color;多边形 polygon; { for (各条扫描线i ) ? { 初始化新边表头指针NET [i]; ??? 把y min = i 的边放进边表NET [i]; ?? } ?? y = 最低扫描线号; ?? 初始化活性边表AET为空; ?? for (各条扫描线i ) ??? { 把新边表NET[i]中的边结点用插入排序法插入AET表,使之按x坐标递增顺序排列; ????? 遍历AET表,把配对交点区间(左闭右开)上的象素(x, y),用drawpixel (x, y, color) 改写象素颜色值; ????? 遍历AET表,把y max= i 的结点从AET表中删除,并把y max i结点的x值递增D x; ????? 若允许多边形的边自相交,则用冒泡排序法对AET表重新排序; ???? } } /* polyfill */ 边填充法 另一种扫描转换方法即所谓的边填充算法。其基本思想是对每条扫描线和每条多边形的交点(xk,yk),将该扫描线上交点右方的所有象素取补。对多边形的每条边作此处理,就可以完成多边形区域填充。 边填充算法描述如下: 1. 取多边形的一条边; 2. 求出每一条扫描线与该边的交点坐标(xk,yk); 3. 将(xk,yk)右边的全部象素取补; 4.还有没处理的多边形边时转1,否则结束。 下图示出了边填充算法的实现过程。 上述算法的缺点是对于复杂的图形,一些象素可能被访问多次,一种改进的办法是引入栅栏。通过多边形设一栅栏,每次只对交点与栅栏之间的象素 点取补,可使访问象素的次数减少。下图示出了这一算法的原理。 种子填充算法** 以上讨论的填充多边形的算法都是按扫描线顺序进行的。种子填充算法则来用完全不同的方法。 种子填充算法假设在多边形或区域内部至少有一个象素是已知的。然后设法找到区域内所有其它象素,并对它们进行填充。 区域指已经表示成点阵形式的填充图形,它是象素的集合。 * 第三章 基本光栅图形基础***** 物体的形状和颜色可用象素矩阵或直线线段和多边形填充区域等基本几何结构来描述。点和直线段是最简单的几何成分,其它可供构造图形的输出图元有圆及其它圆锥曲线、二次曲面、样条曲线和曲面、多边形填充区域以及字符串等。而二维图形的生成是三维图形生成的基础,研究计算机生成图形需先从二维图形的生成开始。下面将讨论一些基本二维图元生成技术和算法,以光栅图形系统的扫描转换方法为基础。 本章内容 ?直线段的扫描转换算法 DDA算法 Bresenham画线算法 ?区域填充 扫描线填充 种子填充 边填充 直线段的扫描转换算法 直线的扫描转换: 确定最佳逼近于该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作。 常用算法: 数值微分法(DDA) Br

文档评论(0)

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

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

1亿VIP精品文档

相关文档