计算机图形学-区域填充课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算机图形学-区域填充课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 区域 填充 课件
- 资源描述:
-
1、.1 有关概念 逐点判断填充算法3. 种子填充算法4. 区域填充图案5. 扫描线多边形填充算法6. 边填充算法.21. 1. 有关概念有关概念 1) 区域:一组相邻而且又相连的像素,而且具有相同属性的封闭区域。 3) 区域填充:以某种属性对整个区域进行设置的过程。 2)种类:单域 复合域.3 4)区域的建立(定义)方式: 内定区域:在所定义的区域内所有的像素具有相同的属性(如颜色等)。 (内部定义方式) 边界定义区域:以区域的内外属性来划分,区域内的像素和边界上的像素可具有不同的属性。 (外界定义方式).4 5)连通性:分为四向连通和八向连通。 四连通:各像素在水平、垂直的上、下、左、右四个方
2、向上是连通的。 八连通:各像素在上、下、左、右以及四个对角线方向都是连通的。 .52.逐点判断填充算法区域填充的基本(初级)方法:逐点判断填充算法逐点判断绘图窗口内的每一个像素;若在区域的内部:用指定的属性设置该点;否则不予处理;设有如下函数: True when x DInside(D,x,y)= False when x DD.6取矩形R(x1xx2,y1yy2),使R包围D,则逐点判断填充算法如下:for(y=y1;y=y2;y+) for(x=x1;x i+1结点的x值递增D x; 若允许多边形的边自相交,则用冒泡排序法对AET表重新排序; /* polyfill */.33桶结构桶结
3、构 用于存放按照一定的规则(顺序)排列的若干组数据或处理对象。 通常情况下,桶采用向量形式和链表形式构造的一种数据结构。.34.356 6边界标志算法边界标志算法 边界标志算法的基本思想是:在帧缓冲器中对多边形的每条边进行直线扫描转换,亦即对多边形边界所经过的象素打上标志。然后再采用和扫描线算法类似的方法将位于多边形内的各个区段着上所需颜色。对每条与多边形相交的扫描线依从左到右的顺序,逐个访问该扫描线上的象素。使用一个布尔量inside来指示当前点是否在多边形内的状态。Inside的初值为假,每当当前访问的象素为被打上边标志的点,就把inside取反。对未打标志的象素,inside不变。若访问
4、当前象素时,inside为真,说明该象素在多边形内,则把该象素置为填充颜色。.361. 对多边形的每一条边进行扫描转换,即对多边形边界所经过的象素作一个边界标志。2.填充。对每条与多边形相交的扫描线,按从左到右的顺序,逐个访问该扫描线上的象素。取一个布尔变量inside来指示当前点的状态,若点在多边形内,则inside为真。若点在多边形外,则inside为假。Inside 的初始值为假,每当当前访问象素为被打上标志的点,就把inside取反。对未打标志的点,inside不变。边界标志算法步骤.37边界标志算法:算法过程void edgemark_fill(polydef, color)void
5、 edgemark_fill(polydef, color)多边形定义多边形定义 polydefpolydef; int color;int color; 对多边形对多边形polydef polydef 每条边进行直线扫描转换;每条边进行直线扫描转换; inside = FALSE;inside = FALSE; for ( for (每条与多边形每条与多边形polydefpolydef相交的扫描线相交的扫描线y )y ) for ( for (扫描线上每个象素扫描线上每个象素x )x ) if( if(象素象素 x x 被打上边标志被打上边标志) ) inside = ! (inside);
展开阅读全文