收藏 分销(赏)

计算机图形学-区域填充.ppt

上传人:精**** 文档编号:2887860 上传时间:2024-06-09 格式:PPT 页数:51 大小:564.54KB
下载 相关 举报
计算机图形学-区域填充.ppt_第1页
第1页 / 共51页
计算机图形学-区域填充.ppt_第2页
第2页 / 共51页
计算机图形学-区域填充.ppt_第3页
第3页 / 共51页
计算机图形学-区域填充.ppt_第4页
第4页 / 共51页
计算机图形学-区域填充.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、计算机图形学 区域填充1.1.有关概念有关概念 1)区域:一组相邻而且又相连的像素,而且具有相同属性的封闭区域。3)区域填充:以某种属性对整个区域进行设置的过程。2)种类:单域 复合域 4)区域的建立(定义)方式:内定区域:在所定义的区域内所有的像素具有相同的属性(如颜色等)。(内部定义方式)边界定义区域:以区域的内外属性来划分,区域内的像素和边界上的像素可具有不同的属性。(外界定义方式)5)连通性:分为四向连通和八向连通。四连通:各像素在水平、垂直的上、下、左、右四个方向上是连通的。八连通:各像素在上、下、左、右以及四个对角线方向都是连通的。2.逐点判断填充算法区域填充的基本(初级)方法:逐

2、点判断填充算法逐点判断绘图窗口内的每一个像素;若在区域的内部:用指定的属性设置该点;否则不予处理;设有如下函数:TruewhenxDInside(D,x,y)=FalsewhenxDD取矩形R(x1xx2,y1yy2),使R包围D,则逐点判断填充算法如下:for(y=y1;y=y2;y+)for(x=x1;xi+1结点的x值递增Dx;若允许多边形的边自相交,则用冒泡排序法对AET表重新排序;/*polyfill*/桶结构桶结构用于存放按照一定的规则(顺序)排列的若干组数据或处理对象。通常情况下,桶采用向量形式和链表形式构造的一种数据结构。6 6边界标志算法边界标志算法边界标志算法的基本思想是:

3、在帧缓冲器中对多边形的每条边进行直线扫描转换,亦即对多边形边界所经过的象素打上标志。然后再采用和扫描线算法类似的方法将位于多边形内的各个区段着上所需颜色。对每条与多边形相交的扫描线依从左到右的顺序,逐个访问该扫描线上的象素。使用一个布尔量inside来指示当前点是否在多边形内的状态。Inside的初值为假,每当当前访问的象素为被打上边标志的点,就把inside取反。对未打标志的象素,inside不变。若访问当前象素时,inside为真,说明该象素在多边形内,则把该象素置为填充颜色。1.对多边形的每一条边进行扫描转换,即对多边形边界所经过的象素作一个边界标志。2.填充。对每条与多边形相交的扫描线

4、,按从左到右的顺序,逐个访问该扫描线上的象素。取一个布尔变量inside来指示当前点的状态,若点在多边形内,则inside为真。若点在多边形外,则inside为假。Inside 的初始值为假,每当当前访问象素为被打上标志的点,就把inside取反。对未打标志的点,inside不变。边界标志算法步骤边界标志算法:算法过程void edgemark_fill(polydef,color)void edgemark_fill(polydef,color)多边形定义多边形定义 polydef polydef;int color;int color;对多边形对多边形polydef polydef 每条边

5、进行直线扫描转换;每条边进行直线扫描转换;inside=FALSE;inside=FALSE;for(for(每条与多边形每条与多边形polydefpolydef相交的扫描线相交的扫描线y)y)for(for(扫描线上每个象素扫描线上每个象素x)x)if(if(象素象素 x x 被打上边标志被打上边标志)inside=!(inside);inside=!(inside);if(inside if(inside!=FALSE)=FALSE)drawpixel(x,y,color);drawpixel(x,y,color);else drawpixel(x,y,background);else d

6、rawpixel(x,y,background);边界标志算法:voidedgemark_fill(polydef,color)多边形定义polydef;intcolor;对多边形polydef每条边进行直线扫描转换;inside=FALSE;for(每条与多边形polydef相交的扫描线y)for(扫描线上每个象素x)if(象素x被打上边标志)inside=!(inside);if(inside!=FALSE)drawpixel(x,y,color);elsedrawpixel(x,y,background);用软件实现时,扫描线算法与边界标志算法的执行速度几乎相同,但由于边界标志算法不必建

7、立维护边表以及对它进行排序,所以边界标志算法更适合硬件实现,这时它的执行速度比有序边表算法快一至两个数量级。*边缘填充算法边缘填充算法(正负相消法正负相消法)基本思想:对于每条边上的每一点都将所在扫描线上其右方的所有象素的颜色取补。算法简单,但对于复杂图型,每一象素可能被访问多次。栅栏填充算法栅栏填充算法栅栏填充算法栅栏填充算法 栅栏栅栏栅栏栅栏指的是一条过多边形顶点且与扫指的是一条过多边形顶点且与扫描线垂直的直线。它把多边形分为两半。描线垂直的直线。它把多边形分为两半。边缘填充算法求余运算求余运算:假定A为一个正整数,则M的余定义为A M,记为 。计算机中取A为n位能表示的最大整数。即,A=

8、0 xFFFFFFFFA=0 xFFFFFFFF由来由来:光栅图形中,如果某区域已着上值为M的颜色值做偶数次求余运算,该区域颜色不变;而做奇数次求余运算,则该区域颜色变为值为 的颜色。这一规律应用于多边形扫描转换,就为边缘填充算法。算法基本思想算法基本思想:对于每条扫描线和每条多边形边的交点,将该扫描线上交点右方的所有象素取余。1、将当前扫描线上的 所有象素着上 颜色;2、求余:for(i=0;i=m;i+)在当前扫描线上,从横坐标为Xi的交 点向右求余;算法1(以扫描线为中心的边缘填充算法)1、将绘图窗口的背景色置为 ;2、对多边形的每一条非水平边做:从该边上的每个象素开始向右求余;算法2(

9、以边为中心的边缘填充算法)算法2(以边为中心的边缘填充算法)边缘填充算法适合用于具有帧缓存的图形系统。处理后,按扫描线顺序读出帧缓存的内容,送入显示设备。优点:算法简单缺点:对于复杂图形,每一象素可能被访问多次,输入/输出的量比有序边表算法大得多。引入栅栏,以减少填充算法访问象素的次数。栅栏:与扫描线垂直的直线,通常过一顶点,且把多边形分为左右二半。基本思想:扫描线与多边形的边求交,将交点与栅栏之间的象素取补。减少了象素重复访问数目,但不彻底。栅栏填充算法边界标志算法特点用软件实现时,扫描线算法与边界标志算法的执行速度几乎相同,但由于边界标志算法不必建立维护边表以及对它进行排序,所以边界标志算法更适合硬件实现,这时它的执行速度比有序边表算法快一至两个数量级。本讲小结1.有关概念2.逐点判断填充算法3.种子填充算法4.区域填充图案5.扫描线多边形填充算法6.边填充算法Thank You世界触手可及世界触手可及携手共携手共进,齐创精品工程精品工程医学资料仅供参考,用药方面谨遵医嘱

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服