7-8二维填充图元生成课程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生成填充图元的上机实习;第五章 二维填充图元生成;北大计算机系多媒体与人机交互;5.1 扫描转换矩形 5.2 扫描转换多边形 逐点判断法、扫描线算法、边缘填充算法 5.3 区域填充(种子填充法) 递归填充算法、扫描线算法 5.4 以图像填充区域 5.5 字符的表示与输出 5.6 混淆与反混淆;5.1 扫描转换矩形;问题: 矩形是简单的多边形,那么为什么要单独处理矩形? 比一般多边形可简化计算。 应用非常多,窗口系统。 边界如何处理? 原则:左闭右开,下闭上开 ;5.2 扫描转换多边形;void FillPolygonPbyP(Polygon *P,int polygonColor) { int x,y; for(y = ymin;y = ymax;y++) for(x = xmin;x = xmax;x++) if(IsInside(P,x,y)) SetPixel(x,y,polygonColor); else SetPixel(x,y,backgroundColor); }/*end of FillPolygonPbyP() */;如何判断点在多边形的内外关系? 1)射线法 2)累计角度法 3)编码法 ;2)累计角度法 步骤 从V点向多边形P顶点发出射线,形成有向角 计算有向角的和,得出结论 离散计算方法:编码方法;3)编码方法:累计角度方法的离散方法 Step: a. 预处理,测试点在边上否? b. V为原点作局部坐标系,对象限按逆 时针(或顺时针)编码; c. 顶点编码Ipi, d. 边编码。PiPi+1: △PiPi+1=Ipi+1-Ipi e. 计算∑ △PiPi+1 (其中△PnPn+1 = △PnP0): 若 ∑ 为0, V在P外; 若 ∑ 为+/-4,V 在P内; 逐点判断法程序简单, 速度太慢,效率低。;2、扫描线算法;基本原理 一条扫描线与多边形的边有偶数个交点 步骤(对于每一条扫描线): (1)求交点 (2)交点排序 (3)交点配对,填充区段。 边的连贯性(确定交点) 第一类交点:位于同一条边上 的后继交点(中点算法) 第二类交点:新出现的边与扫 描线的交点(顶点即为交点) ;交点的取整规则 要求:使生成的像素全部位于多边形之内 用于线画图元扫描转换的四舍五入原则导致部分像素位于多边形之外,从而不可用 规则如下 假定非水平边与扫描线y=e相交, 交点的横坐标为x ;规则(2): 交点位于边界上时,象素的取舍问题。 边界象素:规定落在右上边界的象素不予填充。 具体实现时,只要对扫描线与多边形的相交区间左闭右开 ;规则(3): 扫描线与多边形的顶点相交时,交点的取舍,保证交点正确配对。 解决方法: 检查两相邻边在扫描线的哪一侧。 只要检查顶点的两条边的另外两个端点的Y值,两个Y值中大于交点Y值的个数是0,1,2,来决定取0,1,2个交点。 ;1)活化边: 与当前扫描线相交的边。按交点x(x相同则按deltax)递增顺序存放在一个链表中;该链表称作活化边表(AEL)。 ;2)边的分类表(ET) 按照边的下端点y坐标对非水平边进行分类的指针数组。下端点y坐标值等于i的边属于第i类,同一类边按x (x相同则按deltax)递增的顺序排列。 ;算法;3、边缘填充算法;算法(1)(以扫描线为中心的边缘填充算法) a、将当前扫描线上的 所有象素着上 颜色; b、求余: for(i = 0;i = m; i++) 在当前扫描线上, 从横坐标为Xi的交点 向右求余; ;算法(2)(以边为中心的边缘填充算法) a、将绘图窗口的背景色置为 ; b、对多边形的每一条非水平边做: 从该边上的每个象素开始向右求余;;边缘填充算法;5.3 区域填充;区域填充– 对区域重新着色的过程 将指定的颜色从种子点扩展到整个区域的过程 区域填充算法要求区域是连通的 连通性 4连通、8连通 4连通: 8连通 ;4连通与8连通区域的区别 连通性: 4连通可看作8连通区域,但对边界有要求 对边界的要求;边界表示的4连通区域;内点表示的4连通区域;(x,y);北大计算机系多媒体与人机交互;北大计算机系多媒体与人机交互;(1) 有些像素会入栈多次,降低算法效率;栈结构占空间。 (2) 递归执行,算法简单,但效率不高,区域内每一象素都引起一次递归,进/出栈,费时费内存。 改进算法,减少递归次数,提高效率。 方法之一使用扫描线填充

文档评论(0)

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

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

1亿VIP精品文档

相关文档