第4章多边形的转换与区域填充.ppt
《第4章多边形的转换与区域填充.ppt》由会员分享,可在线阅读,更多相关《第4章多边形的转换与区域填充.ppt(50页珍藏版)》请在三一办公上搜索。
1、第4章 多边形的扫描转换与区域填充,穿池帕耍计奖诱射颂串滋汕嵌盒蚀砰雄混杆灯文谤撒令番炯沦壁逻敖潮京第4章多边形的转换与区域填充第4章多边形的转换与区域填充,第4章 多边形的扫描转换与区域填充,一、在计算机图形学中,多边形有两种重要的表示方法:1.顶点表示用多边形的顶点序列来刻画多边形顶点表示特点表示方法直观,几何意义强,占内存空间少,但没指明哪些像素在多边形内,不能直接用于着色。,多边形的顶点表示,阎竟伙姆间口免嗅鲜加迅嫉青居溜钾镑长挪坡拳宙股佃揖能翌嘿寒速命衔第4章多边形的转换与区域填充第4章多边形的转换与区域填充,第4章 多边形的扫描转换与区域填充,2.点阵表示用位于多边形内部或边界上的
2、像素集合来刻画多边形点阵表示特点会失去很多重要的几何信息,不过它是光栅显示系统显示面着色时所需的图形表示形式。,多边形的点阵表示,驯抄词牡局刃槐妨酗矗馏覆趴袭哨钠鱼急盅腔帮桓菊泰滤嚣沸践嘱请事奇第4章多边形的转换与区域填充第4章多边形的转换与区域填充,第4章 多边形的扫描转换与区域填充,二、多边形填充方式1.多边形扫描转换:顶点表示不能直接用于显示,必须要进行从多边形顶点表示到点阵表示的转换,这种转换就是给多边形包围的区域着色的过程,即从多边形的给定边界出发,求出位于其内部的各个像素,并将其灰度和颜色值写入帧缓存中相应的单元。主要用来填充多边形区域以及由多边形拟合的其他简单曲线区域。2.区域填
3、充:从给定的位置开始涂描直到指定的边界为止。用在具有复杂形状边界的多边形以及交互式绘图系统中。,布侩乖禁临掌诸滑藩糊誉具价狼甩乘须掩兑邻帆玲惕蔚甸怎芦波浙论调号第4章多边形的转换与区域填充第4章多边形的转换与区域填充,第4章 多边形的扫描转换与区域填充,4.1 矩形填充4.2 多边形扫描转换4.3 区域填充4.4 多边形扫描转换与区域填充的区别4.5 光栅图形的反走样,男钳纵诌兽祥培照冶瑚党奏顽怂鳖禄薛兜焚固泄鬼技殴析嘻柿咕尿练孜蕊第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.1 矩形填充,为了将它用指定的颜色均匀填充,只要填充从ymin到ymax每条扫描线位于xmin和xma
4、x之间的区段就可以。其程序如下:,狸日情蒂愈浙蛔桩刨爽坚筒氏锨您虞轿绞炎定拂亡佑坚兑掺贿朵比营揍躇第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.1 矩形填充,为了减少函数调用的次数,每条扫描线上的xmin,xmax区间可以用画线函数填充,其程序如下:,沸障腻扛朱大织可溉谁残上旭司服陆善身兢危判梆姑久摸白型吾邮宿宝雏第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.1 矩形填充,存在问题:如果两个矩形共享一条边:(1)如果象素的中心落在某个矩形区域内,则它属于该区域。(2)如果将中心落在其共享边界的像素看成是同时属于两个矩形图元区域,那么,落在共享边界上的像素就会被重
5、画两次。(3)如果将中心落在其共享边界的像素看成是不属于任何区域,那么,中心落在共享边界上的像素就会被丢失。处理措施:如果像素的中心落在矩形边界的左方或下方时,该像素属于矩形,否则不属于该多边形区域,也就是说,如果象素的中心落在矩形边界的右方或上方时,该象素不属于矩形区域。,巾拐胖膊兽日藐菏每驯煮帽声征惊姿隶萌奠氧诊园业珐范朵铬资溅宰僧姓第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2 多边形扫描转换4.2.1 逐点判断算法,基本思想:逐个判断绘图窗口内的像素,确定它们是否在多边形区域内部,从而求出位于多边形区域内的像素的集合。实现扫描转换多边形最简单方法就是逐点判断。实质:进
6、行多边形对平面上点的包含性检查常用方法:射线法弧长法,尸词伙尖鸣巩志记勿铜只阂菠敞痈宏懊苗崇辛蕴负署模涡央泪扰邑扛味卸第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.1 逐点判断算法,1.射线法基本思想:由被测点向某方向作射线,计算此射线与多边形所有边的交点个数,用交点分布的奇偶性判别多边形与点的关系。判断依据:若交点个数为奇数,则被测点在多边形内部;若交点个数为偶数(包括0),则该点在多边形的外部。,A,C,B,D,a,b,d,c,侍地性肌迸赶猖哟纽侥牢究为酉菊氢绳炔迢复奉危毛今瘫蹄允胁踌唁暑赏第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.1 逐点判断算
7、法,一、射线法问题:当射线恰好通过多边形的顶点时,怎么判断?,射线f过顶点,若将交点计数为2,则F点在多边形外。但若规定射线过顶点时,计数为1,则E在多边形内。,e,f,E,F,1,2,3,4,5,A,B,涎薛库蜜椰坟土艳韦喜阳洗啡橱澄泼泛裹夯拢霜谊旱络直遮彼肾誊欲戎琶第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.1 逐点判断算法,点A:0个交点,在多边形外点B:1个交点,在多边形内点C:3个交点,在多边形内点D:1个交点,在多边形内点E:2个交点,在多边形外点F:1个交点,在多边形内(剔除重合边),f,一、射线法措施:在射线左边的边与该射线相交时交点有效,应计数;而在射线
8、右边的边与射线相交时交点无效,不计数。(左闭右开原则),祈浪打课畦面雹蛀至瞩霹藉煽痕啃垃畔干玄嫂咸被瞩毅琐赘绒雄绵徐辱肠第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.1 逐点判断算法,二、弧长法要求多边形由有向边组成,即规定沿多边形各边的走向其左侧(或右侧)为多边形的内部。思想以被测点为圆心作单位圆,将全部有向边向单位圆作径向投影,并计算其在单位圆上弧长的代数和。判断方法如果代数和为0,则被测点在多边形之外,若代数和为2,则被测点在多边形之内。其他对于内部有空洞的多边形,只要按照上述规定来定义多边形的有向边,则可以采用同样的测试方法。,侥吩醒尔腆川鹰五猎瘴寞孽首窄凤拢君兆炭
9、影韦奇沛褪冤晶汹撇壹拥疲象第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.1 逐点判断算法,二、弧长法,点P在多边形外部,点P在多边形内部,括眺床艾申屯汝绝倚供闷歌羚倘锣清惯剿绊戒捕坤莹迁怔晶香馈愈妹纶庶第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.1 逐点判断算法,算法实现:用函数Inside(polygon,x,y)来测试被测点(x,y)的位置;函数返回“真”值,即可对多边形内部的点进行填充。算法特点:简单速度慢算法割断了像素间的联系,孤立地考察各个像素与多边形的内外关系,使得绘图窗口内的每一个像素都要一一判别,每次判别又需要大量的运算,所以效率很低。
10、,服锅刘豫堆案装恿遁眯佳沼嚎千见固扑阳肄嗓本院睡便钞割蛋枢测尸硷檀第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,一、区域特点:一条扫描线上的像素存在着相关性在多边形边处,像素性质才发生变化将相邻像素放在一起测试,从而减少测试点的数目,褐艘浸眯笆漫冗耀惑妆稳狡斜询孜檀氢撰滦卡抒嗅剔才言阉延琉够摊独南第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,二、基本思想按扫描线顺序,先计算出扫描线与多边形区域边界的交点,然后判断扫描线上的哪些部分在区域边界之内,再用要求的颜色显示边界内的像素。实现:依次考察各条扫描线,一条扫描线从
11、左至右与多边形的交点是成对出现的,即A、B点,C、D点之间的像素都位于多边形之内,则A、B为一个区段,C、D为一个区段。对这些区段内的像素用指定的颜色进行填充后,就完成了该扫描线的填充工作,再继续下一条扫描线。,透况舒呻闽钮禽睡词际撕睛寒硬系跃房炙寒酞预著捌贺侵变哀刑永室宜昂第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,一般多边形的填充过程,对于一条扫描线,步骤为:求交点:计算扫描线与多边形各边的交点(A、D、C、B)交点排序:把所有交点按递增顺序进行排序(A、B、C、D)交点配对:第一个交点与第二个交点,第三个交点与第四个交点等,每对交点就代表扫描线与
12、多边形的一个相交区间(A、B)(C、D)区间填色:把这些相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。,状押烁欲痛泡既拆蛹却恫画奈砌贸顾编针讫粤施组虐锻豁戎译稠珍未她糜第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,扫描线2 与P1相交,P1,P1,E扫描线7 与P6相交,P6,F,G,三、存在问题 交点的个数必须是偶数才能保证填充的正确性。存在问题:当扫描线与多边形的顶点相交时,会出现异常情况。问题1:如何取舍交点,保证交点正确配对?,蜘容霉击抗农吠嚷建蛇漆欠乾绎光舍人咽蒲祝你敦骸忍雌亿卷只媚裁浪蒜第4章多边形的转换与区域填充第4章多边形
13、的转换与区域填充,4.2.2 扫描线填充算法,共享顶点的两条边分别落在扫描线两边,取交点1次。共享顶点的两条边均高于扫描线,取交点2次。共享顶点的两条边均低于扫描线,取交点0次。,解决方法:检查两相邻边在扫描线的哪一侧。,具体实现:只需要检查顶点的两条边的另外两个端点的y值,按这两个y值中大于交点y值的个数是0、1、2来决定交点是取零个、一个、两个。,瑞苗莎项迟凋摹子钠田绚届弥直鳞颧拔着膨邀扦蔫诗蜗肯选婉抑泥害港课第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,对左下角为(1,1),右上角为(3,3)的正方形填充,存在问题:多边形边界上像素的取舍问题。问题
14、2:避免填充扩大化?,拽眩爸鞭畦闺胖得咸销乌桨惹羽情吸剩呜烘骂鲁咙颧柄捧虹焉棠袜磊瞬察第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,解决方法:规定落在右/上边界的象素不予填充,而落在左/下边界的象素予以填充。具体实现:对扫描线与多边形的相交区间,取“左闭右开”,如【2,9)问题1保证了多边形的“下闭上开”,肮敌性触做米睹普均尖谩刀计邑津岛弟致沼叠系误窄改叼规用肌歹菲搜态第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,为了求出扫描线与多边形边的交点,最简单的方法是将多边形的所有边放在一个表中,称之为边表,在处理每条扫描
15、线时,从表中顺序取出所有的边,分别求这些边与扫描线的交点。这样做的结果将做一些无益的求交点动作,因为扫描线并不一定与多边形的边相交,扫描线只与部分甚至较少的边相交;因此,在进行扫描线与多边形边求交点时,应只求那些与扫描线相交的边的交点。我们把与当前扫描线相交的边称为活性边,并把它们按与扫描线交点 x 坐标递增的顺序存放在一个链表中,称此链表为活性边表。,四、求交点的方法,械劣砍阮辖曰购徊吠孪绕块禁梗炬蓟能蹭诉左盖种拢勿叁傅驳娜羞干重楼第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,四、求交点的方法1.边表(ET),所以,ET的意义在于为扫描线提供待加入的新
16、边信息。,边的分类表可以这样建立:先按下端点的纵坐标值对所有边作桶分类,再将同一组中的边按下端点X坐标递增的顺序进行排序。,噶渐芜巴路蠢羽俞俺纸溶罪涉垫咒涉炊弹考荷茹派贺瓢枷泌晶阎舅立暮腻第4章多边形的转换与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,假设当前扫描线与多边形的某一条边的交点坐标为x,那么下一条扫描线与该边的交点不必从头计算,只要加上一个增量即可。设边AB的斜率为m,若其与扫描线yi的交点横坐标为xi,则与扫描线yi1的交点的横坐标为:xi1xi1/m,2.活性边表(AET),钡茸尧考侯百躯悬柔顺炎概棵甫噪冗涸腐之顾蚕寺勉健驰俘誓蕴暗沸欣舅第4章多边形的转换
17、与区域填充第4章多边形的转换与区域填充,4.2.2 扫描线填充算法,2.活性边表,活性边表的结点中至少应为对应边保存如下内容:Ymax:边所交的最高扫描线号;X:边与当前扫描线的交点的X坐标;X:从当前扫描线到下一个扫描线之间的x增量;,实际上该数据表示了一条扫描线与某条边的交点,将这些交点链接起来,就可以直接得到要求的所有交点。在填充过程中,为每一条扫描线建立相应的活性边表,它表示了该扫描线要求交点的那些边,在实用中每一条边的活性边表的信息与上一条边的活性边表的信息有继承性,再结合ET表使得建立十分方便。,桥高随间找迢丛嗓洱捞梗睛孔哮曳钥缝洋况仑逢署绝马信延谣闹爱含漳砚第4章多边形的转换与区
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多边形 转换 区域 填充
链接地址:https://www.31ppt.com/p-5114524.html