第3章扫描线填充种子填充线宽和线型

上传人:cn****1 文档编号:567486559 上传时间:2024-07-20 格式:PPT 页数:65 大小:1.50MB
返回 下载 相关 举报
第3章扫描线填充种子填充线宽和线型_第1页
第1页 / 共65页
第3章扫描线填充种子填充线宽和线型_第2页
第2页 / 共65页
第3章扫描线填充种子填充线宽和线型_第3页
第3页 / 共65页
第3章扫描线填充种子填充线宽和线型_第4页
第4页 / 共65页
第3章扫描线填充种子填充线宽和线型_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《第3章扫描线填充种子填充线宽和线型》由会员分享,可在线阅读,更多相关《第3章扫描线填充种子填充线宽和线型(65页珍藏版)》请在金锄头文库上搜索。

1、密侩辅右烧陕雄施给迁虞届浅唬藤挪网毛泊怂带羌盛展邯侄噶佯钾福橡肖第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型3.4 区域填充算法3.5 线宽与线型的处理励恍莽蓬织独荣植斥隘疤忘住酱柴牙盲狭匿阜岭兑窒斗斯酱糊蛮肪奈涂惟第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型1 1、理理解解掌掌握握面面域域填填充充的的概概念念,区区域域多多边边形形的的分类分类,面域填充的,面域填充的步骤步骤;2 2、理理解解扫扫描描线线填填充充算算法法的的实实质质,掌掌握握扫扫描描线线填填充算法的充算法的过程;过程;3 3、了解了解种子填充算法和图案填充算法。种子填充算法和图案

2、填充算法。4 4、掌握掌握线宽的处理以及线型的分类。线宽的处理以及线型的分类。硷抑雄誓描痰嫉靶血澎泡蚕骑洞告墨抱斧少捆曲脱悍甥弧邵销七下坐滤舵第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型一、扫描线填充算法官犯蚌曳送缸栽咐赋猿臭绩恼胶壬黔淆亨才帜登绽妄投缔虾劈事滑褪瀑筛第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型区域是指相互连通的一组像素的集合。通常是由一个封闭的轮廓来定义,处于一个封闭轮廓线内的所有像素点即构成了一个区域。例如:矩形、圆、椭圆、多边形等等。1、扫描线填充算法的实质鄙康诬速熊邑泵涸摹文祈咯个症帜怯览丘槽绥惭全穗幅冰仿呀欠苯梆肃缮第3

3、章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型区域区域-多边形多边形(凸、凹)、圆、(凸、凹)、圆、椭圆、带孔的。椭圆、带孔的。区域填充-如何用一种颜色或图案如何用一种颜色或图案填充二维区域。填充二维区域。部枫稳悯剑鸡泛壳挞祝返酞吐翔蕊材硬裁任囤粱膘籽遍载颠速癸权智慑幌第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型区域填充分两步:区域填充分两步:确定需要填充那些像素确定需要那些颜色值(图案)911912345687100018764532柱发福蟹衙趋扶闯迹眩唐撕盏陀蔫揍籽靴荆启萧欣本抒珠弛雍险忽病汉泰第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子

4、填充线宽和线型逐点判断法逐个判断绘图窗口内的像素:v逐点判断的算法虽然程序简单,逐点判断的算法虽然程序简单,但不可取但不可取。原。原因是因是速度太慢速度太慢,主要是由于该算法,主要是由于该算法割断了各象割断了各象素之间的联系素之间的联系,孤立地考察各象素与多边形的,孤立地考察各象素与多边形的内外关系,使得几十万甚至几百万个象素都要内外关系,使得几十万甚至几百万个象素都要一一判别,每次判别又要多次求交点,需要做一一判别,每次判别又要多次求交点,需要做大量的乘除运算,花费很多时间。大量的乘除运算,花费很多时间。狂蛰钵鸭蔓诡橇管皮奇誓彦位咸衷纫跺毡俊婶针调丙主适练她愧按雨幻进第3章扫描线填充种子填充

5、线宽和线型第3章扫描线填充种子填充线宽和线型(3)交点配对,交点配对,交点配对,交点配对,1 1与与与与2 2,3 3 ,每对表示一个区间。每对表示一个区间。每对表示一个区间。每对表示一个区间。(2)排序,由于交点不一定由左排序,由于交点不一定由左排序,由于交点不一定由左排序,由于交点不一定由左 到右求出,因此将求出的交到右求出,因此将求出的交到右求出,因此将求出的交到右求出,因此将求出的交点按点按点按点按 x x 坐标值排序。坐标值排序。坐标值排序。坐标值排序。1234算出交点;划分区间;分配颜色。算出交点;划分区间;分配颜色。算出交点;划分区间;分配颜色。算出交点;划分区间;分配颜色。算出

6、交点;划分区间;分配颜色。算出交点;划分区间;分配颜色。(1)求交点,即计算扫描线与多求交点,即计算扫描线与多求交点,即计算扫描线与多求交点,即计算扫描线与多 边形各边的交点。边形各边的交点。边形各边的交点。边形各边的交点。(4) (4) 区间填充区间填充区间填充区间填充扫描线填充步骤911912345687100018764532姐蜀困拐酷象棍遂简弦茨驯鉴恫凋亲麓瓶滑呢隔选吩烯抹律旗悬游盘豫烈第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型问题一:问题一:991 2 3 4 5 68710001876453211交点的取舍交点的取舍交点的取舍交点的取舍: : 比较交点与两

7、边上其余比较交点与两边上其余比较交点与两边上其余比较交点与两边上其余两顶点两顶点两顶点两顶点y y值大小,确定交点个数取值大小,确定交点个数取值大小,确定交点个数取值大小,确定交点个数取0 0、1 1、2 2。如果如果如果如果大于大于大于大于交点交点交点交点y y值个数为值个数为值个数为值个数为2 2,则交点取,则交点取,则交点取,则交点取两两两两次,该点填充。次,该点填充。次,该点填充。次,该点填充。如果如果如果如果大于大于大于大于交点交点交点交点y y值个数为值个数为值个数为值个数为0 0,则交点取,则交点取,则交点取,则交点取零零零零次,该点次,该点次,该点次,该点不不不不填充。填充。填

8、充。填充。2次如果如果如果如果大于大于大于大于交点交点交点交点y y值个数为值个数为值个数为值个数为1 1,则交点取,则交点取,则交点取,则交点取一一一一次。次。次。次。0次0次1次扫描线与顶点相交时,交点个数的取舍?扫描线与顶点相交时,交点个数的取舍?扫描线与顶点相交时,交点个数的取舍?扫描线与顶点相交时,交点个数的取舍?扫描线与顶点相交时,交点个数的取舍?扫描线与顶点相交时,交点个数的取舍?车溃韭某酱嫉蓬族锭衰堪斑抠马匹石戮札电童腔陈泌隶藐拣九跌告设葬燃第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型0121234301212343长方形面积长方形面积长方形面积长方形面

9、积长方形面积长方形面积S=(4-1)*(3-1)=6S=(4-1)*(3-1)=6S=(4-1)*(3-1)=6按照扫描线填充算法填充后按照扫描线填充算法填充后按照扫描线填充算法填充后按照扫描线填充算法填充后按照扫描线填充算法填充后按照扫描线填充算法填充后为什么扩大化?为什么扩大化?为什么扩大化?为什么扩大化?图形对象是用有限多个离散的像素表示,图形对象是用有限多个离散的像素表示,图形有大小、面积,但是图形有大小、面积,但是点只有位置,点只有位置,而像素不仅有位置,还有大小而像素不仅有位置,还有大小。对于。对于边边界象素界象素全部填充造成扩大化。全部填充造成扩大化。S1=4*3=12S1=4*

10、3=12S1=4*3=12S2=3*2=6S2=3*2=6S2=3*2=6问题二:问题二:多边形边界象素的取舍?多边形边界象素的取舍?多边形边界象素的取舍?多边形边界象素的取舍?多边形边界象素的取舍?多边形边界象素的取舍?“ “左闭右开左闭右开左闭右开左闭右开” ”、“ “下闭上开下闭上开下闭上开下闭上开” ”虐味浴善窖芦齿逢镀诫皖惜饵掀袋辊赎芯汛滴钓酿裕颜岂切绢沏酷铲苟宦第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型两个连贯性两个连贯性两个连贯性两个连贯性当前扫描线与各边的交点顺序,与当前扫描线与各边的交点顺序,与下一条扫描线与各边的交点顺序很下一条扫描线与各边的交点顺

11、序很可能相同或类似。可能相同或类似。边的连贯性边的连贯性边的连贯性边的连贯性扫描线的连贯性扫描线的连贯性扫描线的连贯性扫描线的连贯性x x x xerererer= x= x= x= xdrdrdrdr + 1/k + 1/k + 1/k + 1/kr rr r y y y yerererer= y= y= y= ydrdrdrdr + 1 + 1 + 1 + 1 k k k kr rr r为边的斜率为边的斜率为边的斜率为边的斜率减少求扫描线和多边形各边的交点的计算量减少求扫描线和多边形各边的交点的计算量2、扫描线填充算法具体实现911912345687100018764532恢陆畜整猴深践懂

12、档压挎棚公寨恫忽莎坡圃歪攒寡峰渴碰孝浚仔臂层臻些第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型如何刻画多边形的边如何刻画多边形的边如何刻画多边形的边如何刻画多边形的边一、边的分类一、边的分类一、边的分类一、边的分类活化边表(活性边表)活化边表(活性边表)活化边表(活性边表)活化边表(活性边表)AELAEL(Active Edge ListActive Edge List)按活化按活化边与扫描线边与扫描线交点交点x x坐标递增坐标递增的顺序存放在一个链表中。对的顺序存放在一个链表中。对应于一条扫描线。应于一条扫描线。有序边有序边有序边有序边在当前扫描线在当前扫描线第一次第一

13、次出现的边。出现的边。有序边表有序边表有序边表有序边表ET(Edge Table)按有序边与扫描线按有序边与扫描线交点交点x坐坐标递增标递增的顺序存放在一个链表中。仅对非水平边分析,对的顺序存放在一个链表中。仅对非水平边分析,对应于一条扫描线。应于一条扫描线。活化边(活性边)活化边(活性边)活化边(活性边)活化边(活性边)与当前扫描线相交的多边形的边。与当前扫描线相交的多边形的边。清钒倦亲冒界模上涛雀痉馁钉晋芒童挟账哦虫椒亩说薄肿资墩土肛捉论赐第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型二、边的结构二、边的结构二、边的结构二、边的结构边结构边结构边结构边结构上端点上端点

14、上端点上端点y y坐标坐标坐标坐标当前扫描线当前扫描线当前扫描线当前扫描线与边的交点与边的交点与边的交点与边的交点扫描线扫描线扫描线扫描线间间间间x x增量增量增量增量xD DxymaxLINK 边的结构有四个域组成(除指针外顺序可以相互交换):边的结构有四个域组成(除指针外顺序可以相互交换): ymax 边的上端点的边的上端点的y坐标(坐标(y的最大值);的最大值); x 在在ET中表示边的下端点的中表示边的下端点的x坐标,在坐标,在AEL中则表示边与扫中则表示边与扫描线的交点的描线的交点的x坐标;坐标; x 边的斜率的倒数边的斜率的倒数(到下一条扫描线到下一条扫描线x的增量);的增量);

15、next 指向下一条边的指针。指向下一条边的指针。啦彰吵窒矿原碳扎翱遵被赘雷郭硅恒单邢贿蚤刃不少肾摔籍沙廉愤昭郑狠第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型算法:活算法:活算法:活算法:活化化化化边表法边表法边表法边表法 通过通过通过通过 单向链接表单向链接表单向链接表单向链接表 的操作得的操作得的操作得的操作得到扫描线与边的交点到扫描线与边的交点到扫描线与边的交点到扫描线与边的交点。原理原理原理原理:建立在图形的空间连建立在图形的空间连建立在图形的空间连建立在图形的空间连贯贯贯贯性性性性(边的连贯性)(边的连贯性)(边的连贯性)(边的连贯性)和扫描线的连和扫描线的连

16、和扫描线的连和扫描线的连贯贯贯贯性基性基性基性基础上,计算图形封闭区域边界与扫描线交点,将扫描线分成区间,并对础上,计算图形封闭区域边界与扫描线交点,将扫描线分成区间,并对础上,计算图形封闭区域边界与扫描线交点,将扫描线分成区间,并对础上,计算图形封闭区域边界与扫描线交点,将扫描线分成区间,并对区间进行填充区间进行填充区间进行填充区间进行填充。鹊总萌世来灰镐深湛撼镰铲冗架膛胸谷噬塞粮魁淌憎瘴爆栖桅吠鼎差搐趣第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型有序边有序边有序边有序边表的建立表的建立表的建立表的建立注意:注意:1 1 边的分类;边的分类;2 2 边的排序(如果边的

17、排序(如果x x坐标相坐标相等,则按等,则按xx排序);排序);3 3 边的结构;边的结构;107-5/3e51020e611120e31175/4e455/47e2扫描扫描线号线号87654321045-1e0裤浑背庚印刑磊贬皖秦胁胁钩涸淤盗踞泊森溜宰丸规苍蹦臣立复营骑者臣第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型 通过有序边,利用边的连贯性建立活活活活化化化化边边边边表表表表。它记录了多边形边沿扫描线的交点序列。注意:注意:1 1 边的删除边的删除( (将满足将满足y ymaxmax=y=y的边删除);的边删除);2 2 边的增加;边的增加;3 3 边的排序;边的

18、排序;4 X4 X值的累加;值的累加;5 5 边的结构;边的结构;活化边表的建立活化边表的建立活化边表的建立活化边表的建立彝充祁必跨朔璃瘴典难酿粤民接瀑苑檬娱闪壮叫遭禁雾定痰底息歧光眯瓣第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型活化边表的建立活化边表的建立活化边表的建立活化边表的建立107-5/3e51020e611120e31175/4e455/47e287654321045-1e0有序边有序边有序边有序边表表表表活活活活化化化化边边边边表表表表Y=14555/47e2e0-1Y=2433/44-155/4e2e0Y=3338/44-155/4e2e0咽巍繁殃叹贰沾

19、把逞肯逾歹沈铬唇填铆阴哥升锅妙狸陈弯屈狄盈今窘柱嗜第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型Y=442-1543/45/41020e2e0e6活化边表的建立活化边表的建立活化边表的建立活化边表的建立有序边有序边有序边有序边表表表表活活活活化化化化边边边边表表表表Y=3338/44-155/4e2e0Y=4543/45/41020e2e6107-5/3e51020e611120e31175/4e455/47e287654321045-1e0橇澎粳悸悠狐泛尿巷杜嚏铁光屏靠凹酣功汉佰栏冲忽支鞠沫匣恬勺妻汽终第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型

20、活化边表的建立活化边表的建立活化边表的建立活化边表的建立有序边有序边有序边有序边表表表表活活活活化化化化边边边边表表表表Y=4543/45/41020e2e6Y=5e6e3102011012107-5/3e51020e611120e31175/4e455/47e287654321045-1e0葵态彼妊言咨庶死臀尊畜凝灸类塘菜灰浇革宾誉欢桓粪佣鸳支涡洛无兵邢第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型活化边表的建立活化边表的建立活化边表的建立活化边表的建立有序边有序边有序边有序边表表表表活活活活化化化化边边边边表表表表Y=6e6e3102011120Y=5e6e31020

21、11012107-5/3e51020e611120e31175/4e455/47e287654321045-1e0靡翻赡调漏绊腔双峰衔笼么物椅趁寅缝烷拨币楚润铲员避戮悼残秉倦妮雪第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型活化边表的建立活化边表的建立活化边表的建立活化边表的建立有序边有序边有序边有序边表表表表活活活活化化化化边边边边表表表表Y=7e6e5e4102010-5/371175/4e311120Y=6e6e3102011120107-5/3e51020e611120e31175/4e455/47e287654321045-1e0抚呻碰杯斯渴沮讹葬了诱序投酮烁八

22、兑漱辑森抢润遮瞪杏绎概愤鸿苯儿潦第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型活活活活化化化化边边边边表表表表Y=14555/47e2e0-1Y=2433/44-155/4e2e0Y=3338/44-155/4e2e0Y=4543/45/41020e2e6Y=6e6e3102011120Y=5e6e3102011012Y=7e6e5e4102010-5/371175/4e311120葫伙瞻碾苯艺征窄尘话堪归健驮晨洲员叁冀棉皑霄跑塘仰格驶博萄涅聋啼第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型算法具体实现步骤算法具体实现步骤一、建立扫描线的有序边表一、

23、建立扫描线的有序边表一、建立扫描线的有序边表一、建立扫描线的有序边表(ET)(ET)(ET)(ET)二、根据有序边表建立活化边表二、根据有序边表建立活化边表二、根据有序边表建立活化边表二、根据有序边表建立活化边表(AEL)(AEL)(AEL)(AEL)(3)(3)按从下到上的顺序对纵坐标值为按从下到上的顺序对纵坐标值为y y的扫描线(当前扫描的扫描线(当前扫描线)执行下列步骤,直到有序边表线)执行下列步骤,直到有序边表ETET和活化边表和活化边表AELAEL都都变成空为止。变成空为止。(1)(1)取扫描线纵坐标取扫描线纵坐标y y的初始值为的初始值为ETET中非空元素的最小序号。中非空元素的最

24、小序号。(2)(2)将扫描线的活化边表将扫描线的活化边表AELAEL设置为空。设置为空。酱疏圾嘘衍到靠广慌瘫传佰从豁杏弗晶强贮宾词保佃棠弘圣褂榷袱设绳只第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型a)a)如有序边表如有序边表ETET中的第中的第y y类元素非空,则将属于该类的所类元素非空,则将属于该类的所有边从有边从ETET中取出并插入第中取出并插入第y y类扫描线的活化边表中,类扫描线的活化边表中,AELAEL中的各边按照中的各边按照x x值(当值(当x x值相等时,按值相等时,按xx值)递增方向值)递增方向排序。排序。边的增加和排序边的增加和排序b)b)将活化边表将

25、活化边表AELAEL中满足中满足y=yy=ymaxmax的边删去。的边删去。边的删除边的删除c)c)将活化边表将活化边表AELAEL剩下的每一条边的剩下的每一条边的x x域累加域累加xx,即,即x:=x+xx:=x+x。x x的增加的增加d)d)将当前扫描线的纵坐标值将当前扫描线的纵坐标值y y累加累加1 1,即,即y:=y+1y:=y+1。y y的增加的增加e)e)若相对于当前扫描线,活化边表若相对于当前扫描线,活化边表AELAEL非空,则将非空,则将AELAEL中的中的边两两依次配对,即边两两依次配对,即1 1,2 2边为一对,边为一对,3 3,4 4边为一对,依边为一对,依次类推。每一对

26、边与当前扫描线的交点所构成的区段位次类推。每一对边与当前扫描线的交点所构成的区段位于多边形内,依次对这些区段上的点(象素)按多边形于多边形内,依次对这些区段上的点(象素)按多边形属性着色。属性着色。象素填充象素填充扩战枉徒巾策昌寐绪泞冶酗侣殆交华络趣星陕猜淌蛮抖呕浙蔓蓝华涯须抓第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型Polygonfill(polydef,color)Int color;多边形定义,多边形定义,polydef; for(各条扫描线各条扫描线I) 初始化新边表表头指针初始化新边表表头指针NETi; 把把 =I的边放进表的边放进表NETi; y=最低扫描

27、线号;最低扫描线号;初始化活化边表初始化活化边表AET为空;为空; for(各条扫描线各条扫描线i) 把新边表把新边表NETi中的边结点用插入排序法插入中的边结点用插入排序法插入AET表,使之按表,使之按x坐标递增顺序排列;坐标递增顺序排列; 遍历遍历AET表,把配对交点之间的区间表,把配对交点之间的区间(左闭右开左闭右开)上的各象素(上的各象素(x,y),用),用 drawpixel(x,y,color)改写象素颜色值;改写象素颜色值; 遍历遍历AET表,把表,把 i的结点从的结点从AET表中删除,并把表中删除,并把 I结点的结点的x值递增值递增dx; 若允许多边形的边自相交,则用冒泡排序法

28、对若允许多边形的边自相交,则用冒泡排序法对AET表重新排序;表重新排序; /*Polygonfill*/ 算法伪程序算法伪程序披缚舅徘徊中旅疽隔骏街尚脚武枪殴窟孕惋舀陀梁蚌西徒饿盔帖尖坐添癣第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型扫描线填充算法小结扫描线填充算法小结扫描线填充算法实质,基本概念,具体实现:扫描线填充算法实质,基本概念,具体实现:区域填充的过程(区域填充的过程(2W2W)、扫描线填充的基本过程,两个)、扫描线填充的基本过程,两个问题、两个连贯性、有序边(表)、活化边(表)、边问题、两个连贯性、有序边(表)、活化边(表)、边的结构、判断顺序。的结构、判断

29、顺序。赦措埋夏本检得纳蕊赘齿宜柱伐阳盔倘山宵卖撵莹弱漾氛掘颜政堰岩淑女第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型二、种子填充算法药哮辉豁褂册正窖蝎碟士琼仅盔裳杏吴罗讽肇葵炳喳澜系伤锣窃谬敲读朵第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型v多边形表示方法多边形表示方法顶点表示顶点表示点阵表示点阵表示顶点表示:用多边形顶点的序列来刻划多边形用多边形顶点的序列来刻划多边形特点:直观、几何意义强、占内存少;不能直接用于面着色;广泛应用于各种几何造型系统;点阵表示:用位于多边形内的象素的集合来刻划多边形用位于多边形内的象素的集合来刻划多边形特点:失去了许

30、多重要的几何信息(边界、顶点等);易于面着色;光栅显示系统显示时所需的表示形式;漳充痛奢开位伍薛捶一男钞幂芦跌搁哄捣蝎庚藻面休恭殃郎痈扇基龚陀乃第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型v光栅系统中两种基本的区域填充算法光栅系统中两种基本的区域填充算法针对采用顶点表示的多边形针对采用顶点表示的多边形 通过确定横越区域的扫描线的覆盖间隔来填充通过确定横越区域的扫描线的覆盖间隔来填充的的多边形扫描转换区域填充算法多边形扫描转换区域填充算法,主要填充简单多,主要填充简单多边形、圆、椭圆以及其它简单的曲线。边形、圆、椭圆以及其它简单的曲线。扫描线填充算法扫描线填充算法针对采用

31、点阵表示的多边形针对采用点阵表示的多边形 从给定的位置开始图描着色直到达制定的边界从给定的位置开始图描着色直到达制定的边界条件为止的区域填充算法,主要具有复杂情况的边条件为止的区域填充算法,主要具有复杂情况的边界情况。界情况。种子填充算法种子填充算法育埃韶哈绑倦奥斤榔宦年英村竹噎鼓袱翌纱练湃愧语励绕肆寒摘场怎膳大第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型1、简单种子填充算法基本原理:基本原理:从多边形区域内部的一点出发找到区从多边形区域内部的一点出发找到区域内的所有像素,常用于交互式绘图。域内的所有像素,常用于交互式绘图。0 1 2 3 4 54 43 32 21 1

32、0 0S1S1绳泣难赋芝穴倔岛激和卖川宠哇挥犬家倔荷俩吠看简痰肄琴递犁椅渔县匀第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型基本思路:基本思路:程序开始,先检测该点的颜色,如果程序开始,先检测该点的颜色,如果它与边界色和填充色均不相同,就用填充色填充该点,它与边界色和填充色均不相同,就用填充色填充该点,然后检测相邻位置,以确定它们是否是边界色和填充然后检测相邻位置,以确定它们是否是边界色和填充色,若不是,就填充该相邻点。这个过程延续到已经色,若不是,就填充该相邻点。这个过程延续到已经检测完区域边界范围内的所有像素为止。检测完区域边界范围内的所有像素为止。0 1 2 3 4

33、 54 43 32 21 10 0S1S1拎橡墓棒劝积闽味毖诬帧稗蹿瓣漆假泣屋丑藤殊作臼蝴娃毯鸦率尸汪憾谨第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型从当前点检测相邻像素有两种方法:(1)四向连通方法:指的是从区域上一点出指的是从区域上一点出发,可通过四个方向,即上、下、左、右移动发,可通过四个方向,即上、下、左、右移动和组合,在不越出区域的前提下,到达区域内和组合,在不越出区域的前提下,到达区域内的任意像素;的任意像素; 意酪惮蛋习追哎歼茎蝉驻位睦蛀碉缴晶催版匈脑眠嫉鳞楔糯渡枕援绊侗丙第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型(2)八向连通方

34、法:指的是区域内每一个像指的是区域内每一个像素,可以通过左、右、上、下、左上、右上、素,可以通过左、右、上、下、左上、右上、左下、右下这八个方向的移动的组合来到达左下、右下这八个方向的移动的组合来到达。 性御蛰邵顾可篇旨月郸辑葫唇汪獭吕难溢较瞬瘤奏毖诡跺噪秉枢基雄澡拥第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型种子填充算法(四向算法):允许从四个方允许从四个方向寻找下一象素,栈结构实现。向寻找下一象素,栈结构实现。算法:算法:种子象素入栈(种子象素入栈(先进后出先进后出),当栈非空时,),当栈非空时,重复执行:重复执行:栈顶象素出栈;栈顶象素出栈;将出栈象素置成多边形色

35、;将出栈象素置成多边形色;按上、下、左、右的顺序检查与出栈象素相邻按上、下、左、右的顺序检查与出栈象素相邻的四个象素,若其中某个象素不在边界上且未的四个象素,若其中某个象素不在边界上且未置成多边形色,则把该象素入栈。置成多边形色,则把该象素入栈。可用于填充带内孔的平面区域可用于填充带内孔的平面区域。哎豫旱智墅扰涤在谗听侈荚冶屡帅会拌听瘸弃涡胆竞喷贝讫宾盗吐法沃唾第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型例例 : 多多 边边 形形 由由 P0P1P2P3P4构构 成成 ,P0(1,5)P1(5,5)P2(7,3)P3(7,1)P4(1,1)设设种种子子点点为为(3,3)

36、,搜搜索索的的方方向向是是上上、下下、左左、右右。依依此此类类推推,最最后后像像素素被被选选中并填充的次序如图中箭头所示中并填充的次序如图中箭头所示 (画图)束九绪醉介肛亩肛摄酵慕瑟擅垢拔烦我廊赢宅糕珊擞醒敦隶垢衬缓嗡随疡第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型v缺点:缺点:(1) 有些象素会入栈多次,降低算法效率;有些象素会入栈多次,降低算法效率;栈结构占空间。栈结构占空间。(2) 递归执行,算法简单,但效率不高,递归执行,算法简单,但效率不高,区域内每一象素都引起一次递归,进区域内每一象素都引起一次递归,进/出出栈,费时费内存。栈,费时费内存。改进算法,减少递归

37、次数。改进算法,减少递归次数。解决方法是用解决方法是用扫描线种子填充算法扫描线种子填充算法;洽玄殃滔系喉拭廓其瓷碑忠粒篡客撂验肃填嗣御骸缀眺肄喳扇猩奔旗失唇第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型2、扫描线种子填充算法目标:减少递归层次目标:减少递归层次适用于边界表示的适用于边界表示的4 4连通区域连通区域算算法法思思想想:在在任任意意不不间间断断区区间间中中只只取取一一个个种种子子像像素素(不不间间断断区区间间指指在在一一条条扫扫描描线线上上一一组组相相邻邻像像素素),填填充充当当前前扫扫描描线线上上的的该该段段区区间间;然然后后确确定定与与这这一一区区段段相相邻

38、邻的的上上下下两两条条扫扫描描线线上上位位于于区区域域内内的的区区段段,并并依依次次把把它它们们保保存存起起来来,反反复复进进行行这这个个过过程程,直直到到所所保保存存的的个个区区段都填充完毕。段都填充完毕。戊拄叔垮板奴欲女汲五俏猩趾扇呼添漾贡柬宫槐睁毅脓吻锰寂突仔涨雏颅第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型算法步骤:算法步骤:Step1:栈顶象素出栈,:栈顶象素出栈,Step2:沿扫描线对出栈象素的左右象素进:沿扫描线对出栈象素的左右象素进行填充,直到遇到边界象素为止,即填充区行填充,直到遇到边界象素为止,即填充区间。间。 算法对于每一个待填充区段,只需压栈算法

39、对于每一个待填充区段,只需压栈一次;因此,扫描线填充算法提高了区域填一次;因此,扫描线填充算法提高了区域填充的效率。充的效率。版圾兔行州疗碰乒椭蜀栏氖跟冯羽笨天赢蕾脚驱倪绽艇总室毁烷桂剃钉全第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型举例分析该算法也可以填充有孔区域。该算法也可以填充有孔区域。 像素中的序像素中的序号标指它所号标指它所在区段位于在区段位于堆栈中的位堆栈中的位置置痊绥叭循富喝宛聂腑械缎爆铂宰又刚酒岔数闭言肌骄迸筋皮钙摘痴缩墓罐第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型蹭绷厢苟彻扣福乡骋恭氨禁龙桐籍敝驾遮亨寝抢助翱应硒旋卑术卡语织赠

40、第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型疙颊巢们兆绵改窄策侥溅女驻共祥松愧痛翱肿缕彩她塔甸渭性犬罕匹旨莎第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型应撼涉存绥曾蔼隆径病捌锐蕾诊硒券熙期涛酒剩颧蛇蛋讨隋观段虑悉匣族第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型三、图案填充算法桃怨裴浸对漆毁用末度勇博出洞缸粒暇荒伯惟虞击傣乎扯咬风衙骂钝努巫第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型图案填充算法 实际应用中,有时需要用一种实际应用中,有时需要用一种图案图案来填充多边来填充多边形区域。这可以通过对前述填

41、充算法中形区域。这可以通过对前述填充算法中写像素写像素的那的那部分代码稍作修改来实现。部分代码稍作修改来实现。 佃丢篷霍肄军嫌圭麻挡刽辕艇毒叹敲拆振膜神浑易翰索筏牵惦姆癣就它吩第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型填充步骤: 1 1 确定区域内一个填充位置。确定区域内一个填充位置。 2 2 查询图案位图的对应位置。查询图案位图的对应位置。 图案表的对应位置为1 其余透明方式填充图案 不透明方式填充图案 图案位图对应位置为1 图案位图对应位置为0前景色 不改变前景色 背景色 猖扎敲骨祷运崩釉糠颠椭腹解跋税督冉暮虹检媳域缨感挫程蜒邢无弱剧忘第3章扫描线填充种子填充线宽

42、和线型第3章扫描线填充种子填充线宽和线型 把图案原点与填充区域边界或内部的某点对齐; 对齐方式 把图案原点与填充区域外部的某点对齐 第一种方式填充的图案,将随着区域的移动而跟着移动,看起来很自然。 第二种方法比较简单,并且在相邻区域用同一图案填充时,可以达到无缝连接的效果,但当区域移动时,图案不会跟着移动。结果是区域内的图案变了 促唁雄卉钥以肆抗眯倔测漏茫蜜慈楼瘤突赶诵盘叛屎腥幻榴狂陨电龟崔南第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型四、线宽与线型的处理涤狱佳济姬哦帛妆使逮搪靴闽远桩崎毅现昂侵韵维岗痪腰趾瓣议恬们迁堪第3章扫描线填充种子填充线宽和线型第3章扫描线填充种

43、子填充线宽和线型1、画笔或画刷的选择在图形处理软件中,可通过选择设置笔和刷的方式来画线。这种类型的选项包括形状、尺寸和式样(画笔或画刷的图案)。宇撮泉饼旭劫碟恋辅借字守熬低忽框枝娠钉斜绞币慕徊迹匹肩没缎渭终王第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型线显示的笔和刷形状 线路径长方形边的象素标记与通过将标记在指定象素位置对中而显示的相关的象素数组 用上图中的笔形状生成线 猛嫂稼辈罕琳飘斥柄斗纠频坡蔬貉搁摊堡食意茁袭践廷哩孩课女陨柠漳枣第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型 线刷子线刷子 方形刷子方形刷子方形刷子方形刷子 圆形刷子圆形刷子圆形

44、刷子圆形刷子 棱形刷子棱形刷子棱形刷子棱形刷子诌哑长憋澄狐魄攒赊共撼慷弱刀术钨陇忿晨耘比睁怪切捧交靛描悔铣造恫第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型线宽的选择和实现取决于输出设备的能力2、线宽的处理光栅设备(视频监视器) 用相邻的平行线进行显示矢量设备(笔式绘图仪) 可能需要更换画笔疤审嫡啊寒蛀菠抵氦污删帜侈衔稗屎翟捍喀典雏支框虾螺午巢楞梅衔斡摆第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型光栅实现标准线宽是用像Bresenham算法那样在每个放样位置处用一个象素来生成。其它线宽是作为标准线的正整数倍通过沿相邻平行线路径画额外的象素而显示的。

45、免蜒西反豫胚锦椎乙甭遇幅抵坍晦钟致轻焙挠略绚社举拐确妮讨孽砍弗展第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型常用的线宽的处理方法有常用的线宽的处理方法有重复像素法重复像素法移动画笔法移动画笔法区域填充法区域填充法娃囊垢沤宛叼和驻价涕仆洛迫疚配酶规纷饱夯兢偶擒渺辱壹撑晒冯组鹰微第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型(1 1)重复像素法)重复像素法 对扫描转换算法的内循环作修改,对扫描转换算法的内循环作修改,将原来绘制单个像素的语句改写将原来绘制单个像素的语句改写成以该像素为中心绘制水平或垂直成以该像素为中心绘制水平或垂直排列的多个像素,即可产

46、生具有一排列的多个像素,即可产生具有一定线宽的线条。定线宽的线条。觉怯既坠旧姥毡饿照议也恶戴抗乘烤阂锗柄某钨者撰舰搔涌贰侗捂僚版孵第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型 当斜率的绝对值小于当斜率的绝对值小于1 1,即线段接近水平时,绘制垂即线段接近水平时,绘制垂直排列的多个像素;直排列的多个像素; 当斜率的绝对值大于当斜率的绝对值大于1 1,即,即线段接近垂直时,绘制水平线段接近垂直时,绘制水平排列的多个像素。排列的多个像素。 对于圆,在第一象限的圆对于圆,在第一象限的圆弧,第一卦限部分在垂直方弧,第一卦限部分在垂直方向重复像素,第二卦限部分向重复像素,第二卦限部

47、分在水平方向重复像素。在水平方向重复像素。12豹蛊雇尹策案何育悄娶僻倒剧战努罚溃审淫伟扶貉昨怨沂休幢禁铸蔽胖六第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型重复像素法的特点:重复像素法的特点:缺口缺口1 1、算法简单、执行效率高,适合比较小的线宽;、算法简单、执行效率高,适合比较小的线宽;2 2、当线宽较大时,用该方法有比较明显的缺点:、当线宽较大时,用该方法有比较明显的缺点:如用该方法绘制线段时,两个端点处总是水平的或垂直的,如用该方法绘制线段时,两个端点处总是水平的或垂直的,线段不自然;线段不自然;当接近水平的线段和接近垂直的线段会聚于一点时,该点有当接近水平的线段和

48、接近垂直的线段会聚于一点时,该点有缺口;缺口;线条的粗细(线条垂直方向上线条边界之间的距离)在水平线条的粗细(线条垂直方向上线条边界之间的距离)在水平方向上和垂直方向上不变,在方向上和垂直方向上不变,在4545时,线条的粗细只时,线条的粗细只1/ 1/ ,线条的粗细与所在位置的切线方向一致,圆弧上线条的粗细与所在位置的切线方向一致,圆弧上4545最细。最细。谬叶隐摧人艳汹核堰俩家缘诉贼曰熔驴雹册莉集编踞读套属绰鳃耻挪扯途第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型(2 2)移动画笔法)移动画笔法绘制线条时,可以选择不同形状的画绘制线条时,可以选择不同形状的画笔。画笔的形

49、状一般存贮在笔。画笔的形状一般存贮在 一个正方形一个正方形0 0、1 1位图中,对扫描转换算法的内循环作修改,位图中,对扫描转换算法的内循环作修改,将原来绘制单个像素的语句改成以该像素为将原来绘制单个像素的语句改成以该像素为中心绘制画笔位图,即可产生具有一定线宽中心绘制画笔位图,即可产生具有一定线宽的线条。常用画笔的形状有矩形、圆形等。的线条。常用画笔的形状有矩形、圆形等。(如前面所说的笔和刷子)(如前面所说的笔和刷子)汛肺歉刊鹤伟枚摇闹犊涉矛台丈刀烯厘旬倪挝废稍翘埋斡市踩拴苔闲见埃第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型移动画笔法的特点:移动画笔法的特点:用正方形

50、画笔产生的线条比在水平或垂直用正方形画笔产生的线条比在水平或垂直方向重复像素产生的线条粗;两端点处总方向重复像素产生的线条粗;两端点处总是方的;是方的;当线条水平或垂直时,线条粗细一致为当线条水平或垂直时,线条粗细一致为w w,为,为4545时是时是 w w;圆弧时,;圆弧时,4545处最粗。处最粗。相丸垮酿朽淡代鸥权授苹剥辩潦庸抖觅西蹄陇绊膛辉卒庞佣磺滦疏誊户衷第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型(3 3)区域填充法)区域填充法 根据线条的宽度,计算出线条的外轮廓,再用区域根据线条的宽度,计算出线条的外轮廓,再用区域填充的方法,产生具有一定线宽的线条。采用区域

51、填填充的方法,产生具有一定线宽的线条。采用区域填充的方法可以方便地产生两端粗细不同的线条。为了充的方法可以方便地产生两端粗细不同的线条。为了改善线条端点处的形状,在线条端点处加上线帽改善线条端点处的形状,在线条端点处加上线帽(Line CapLine Cap)。)。平帽平帽圆帽圆帽突方帽突方帽啮氏汾捧溶擎芹讼梧粤均炸蹈胡纂旺爷优酉器剥冗墟裕驳盂钝墩自均阶躁第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型平帽平帽butt cap - 线条端点处的宽度方向与线条在端点线条端点处的宽度方向与线条在端点处的切线方向垂直;处的切线方向垂直;平帽平帽圆帽圆帽突方帽突方帽圆帽圆帽roun

52、d cap - 在平帽的基础上再加两个半圆;在平帽的基础上再加两个半圆;突方帽突方帽projecting sauare cap - 线条向两端延伸后的平帽。线条向两端延伸后的平帽。榆尤途裙待侥焦号椒雨脂戏捉揽帝迫愁尾倚荤融牟红广键全爽验演寥曰低第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型平滑连接解决第三个问题粗折线连接处,其水平段变成垂直段时会留下间隙;连接的类型斜角连接 miter join圆连接 round join斜切连接 bevel join场听痪焚拔粤伯寂斧愉变苯桑翻涌角蓉周蹦鉴尽梗兔拿渠专荡该啄胶掸提第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充

53、线宽和线型斜角连接斜角连接通过延伸两条线的外边界直到它们相交来完成 圆连接圆连接通过用直径等于线宽的圆弧边界将两线段间连接而成 斜切连接斜切连接则是通过用方帽和在两线段相交处的三角形间隙中填充来生成 迪屯粪斤宣兢谩坪彭鹏礁呵孔受保谢挥腋桑扶僧槐驯尹薛途念觉咕促变详第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型注意:假如两连接线段间的夹角很小,斜角连接会产生一个长的尖峰而使折线变形。图形软件包可通过当任何两连接的线段在足够小角度相遇时切换到斜切连接来避免这种情况。定望稻尚绍共蜘瞥提宵幌翁伏翱灾峪鞠拌瘤岩练属瓢债析恿皂眠蓟席痪千第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型在图形系统中使用具有不同线型的线条来在图形系统中使用具有不同线型的线条来表示不同的含义。四种常用的线型有表示不同的含义。四种常用的线型有实线(Solid Line)长划线(Dashed Line)短划线(Dotted Line)点划线(Dash-Dotted Line)其余线型通常可以通过对长划和短划的不其余线型通常可以通过对长划和短划的不同组合来得到同组合来得到3、线型尉盐岔戊押钮畜樱斌脾擞坝琢怜掂宫寿倒妓躇旦幂核焉胯慈椭康冀免举税第3章扫描线填充种子填充线宽和线型第3章扫描线填充种子填充线宽和线型

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号