第8讲边缘填充.ppt

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

信息科学与工程学院 1999年7月 本节内容安排 5.4 多边形的扫描转换与区域填充 在光栅扫描显示器中表示一个区域,仅仅画出其边界是不够的,有时还要填上一定的灰度、色彩。 多边形的扫描转换主要是通过确定穿越多边形区域的扫描线的覆盖区间来填充。/适用于多边形区域和多边形拟合的其他简单曲线区域。 区域填充是从给定的位置开始涂描直到指定的边界条件为止。/适用于复杂边界的多边形以及交互式绘图系统中。 5.4.1 多边形的扫描转换 多边形的两种表示方法: 顶点表示:用多边形的顶点序列来刻划多边形。直观、几何意义强、占内存少;不能直接用于面着色。 点阵表示是用位于多边形内的像素的集合来刻划多边形。失去了许多重要的几何信息;便于运用帧缓冲存储器表示图形,易于面着色。 x-扫描线算法原理: 对于每条穿越多边形的扫描线,此算法确定扫描线与多边形相交区间的像素点位置。 如:y=3 算法的核心: 必须按x递增顺序排列交点的x的坐标序列。 算法步骤: (1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。 (2)从y=ymin到y=ymax,每次用一条扫描线进行填充。对一条扫描线填充的过程可分为四个步骤: a. 求交:计算扫描线与多边形各边的交点; b. 排序:把所有交点按x值递增顺序排序; c. 配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间; d. 填色:把相交区间内的像素置成多边形颜色,把相交区间外的像素置成背景色。 对下图,试想扫描转换过程? 存在问题:当扫描线与多边形顶点相交时,交点的取舍问题。 解决: 当扫描线与多边形的顶点相交时, 若共享顶点的两条边分别落在扫描线的两边,交点只算一个; 若共享顶点的两条边在扫描线的同一边,这时交点作为零个或两个。 x-扫描线算法的缺点 x-扫描线算法在处理每条扫描线时,需要与多边形的所有边求交.这样处理效率很低。这是因为一条扫描线往往只与少数几条边相交,甚至与整个多边形都不相交。若在处理每条扫描线时,不分青红皂白地把所有边都拿来与扫描线求交,则其由绝大多数计算都是徒劳无用的。因此将x·扫描线算法加以改进,形成改进的有效边表算法,也称为y连贯性算法 3. 改进的有效边表算法(Y连贯性算法) 有效边(Active Edge):指与当前扫描线相交的多边形的边,也称为活性边。 有效边表(Active Edge Table, AET):把有效边按与扫描线交点x坐标递增的顺序存放在一个链表中,此链表称为有效边表。 有效边表的每个结点: x ymax 1/k next 有效边表的结点类型可为: typedef struct LineAE /*有效边描述结构*/ { float x; /*当前扫描线与边的交点 */ float dx; /*斜率的倒数*/ int ymax; /*边所在的最大扫描线值*/ struct LineAE *next; /*指向下一条有效边*/ }ActiveEdge; 边表(Edge Table)——方便有效边的建立和更新 边表的构造: (1)首先构造一个纵向链表,链表的长度为多边形所占有的最大扫描线数,链表的每个结点,称为一个桶,其对应多边形覆盖的每一条扫描线。 (2)将每条边的信息链入与该边最小y坐标(ymin )相对应的桶处。也就是说,若某边的较低端点为ymin,则该边就放在相应的扫描线桶中。 (3)每条边的数据形成一个结点,内容包括:该扫描线与该边的初始交点x(即较低端点的x值),1/k,以及该边的最大y值ymax。 x|ymin ymax 1/k next 解决顶点交点计为1时的情形: 算法步骤: (1)初始化:构造边表,AET表置空; (2)将第一个不空的ET表中的边与AET表合并; (3)由AET表中取出交点对进行填充。 填充时设一布尔变量b(初值为假),令指针从AET中第一个结点到最后一个结点遍历一次,每访问一个结点,把b取反一次,若b为真,则把从当前结点的x值到下一结点的x值结束的区间用多边形色填充。填充之后删除y=ymax的边。(期间,x=round(x) ) (4)yi+1=yi+1,根据xi+1=xi+1/k计算并修改AET表,同时合并ET表中y=yi+1桶中的边,按次序插入到AET表中,形成新的AET表; (5)AET表不为空则转(3)

文档评论(0)

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

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

1亿VIP精品文档

相关文档