第4章基本图形生成算法2.ppt
《第4章基本图形生成算法2.ppt》由会员分享,可在线阅读,更多相关《第4章基本图形生成算法2.ppt(46页珍藏版)》请在三一办公上搜索。
1、计算机图形学与数字地图,第4章 基本图形生成算法,Email:,余接情,区域的表示多边形有两种重要的表示方法:顶点表示和点阵表示。,顶点表示点阵表示:通过扫描转换实现,(边界表示、内点表示)。用于图形显示、矢量数据栅格化。点阵表示顶点表示:通过边界提取实现(模式识别),用于图形表示、建模,栅格数据矢量化。,4.4 区域的生成,凸多边形凹多边形环状多边形,多边形分为三种:凸多边形、凹多边形、含内环的多边形。,多边形扫描转换算法对多边形的形状没有限制,但多边形的边界不自交。,4.4 区域的生成,多边形区域的生成过程,多边形顶点坐标序列,区域(边界表示),直线的扫描转换,扫描转换,区域填充,区域(内
2、点表示),扫描转换:按扫描线的顺序确定一点是否位于区域内部,再用要求的显示属性显示该像素,区域填充:则是指先将在点阵表示的多边形区域内的一点(称为种子点)赋予指定的颜色和灰度,然后将这种颜色和灰度扩展到整个区域内的过程。,4.4 区域的生成,4.4.1 扫描线算法4.4.2 边填充算法4.4.3 边界标志算法4.4.4 简单种子填充算法4.4.5 扫描线种子填充算法4.4.6 图案填充算法,扫描转换算法,区域填充算法,4.4 区域的生成,原理:建立在图形的空间联惯性和扫描线的连惯性基础上,推广计算图形封闭区域边界与扫描线交点,将扫描线分成区间,并对区间进行填充,总体思路:算出交点;划分区间;分
3、配颜色步骤:对每条扫描线分为4步(以扫描线6为例),(1)求交点,即计算该扫描线与多边形各边的交点;,(2)排序,由于交点不一定由左到右求出,因此将求出的交点按 x 坐标值排序;,(3)交点配对,1与2,3与4,每对表示一个区间;,(4)把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。,9,4.4.1 扫描线算法,顶点交点的取舍分3种情况:1)共享顶点的两条边分别落于扫描线的两侧,这时交点算一个,如F,D。2)共享顶点的两条边位于扫描线同一侧,且该顶点为局部最低点,则算2个,如B、E。3)共享顶点的两条边位于扫描线同一侧,且该顶点为局部最高点,则算0个,如A、C。具体实现时,则
4、检查顶点与相连两条边的另外两个端点的Y值的关系来判断。,0次,0次,0或2次,1次,2次,1次,A,B,C,D,E,F,4.4.1 扫描线算法,处理一条扫描线时,只需与相交的边进行求交运算。由于边的连续性,某条边与当前扫描线相交时,则很可能也与下一条扫描线相交。为此,下一条扫描的交点可通过当前扫描线交点加上一个反斜率即可,即:Xk+1=Xk+1/m(m为斜率),通常将与当前扫描线相交的边称为活化边,并按它们与扫描线交点x坐标递增的顺序存放在一个链表中,该链表被称为活化边表(Active Edge Table),4.4.1 扫描线算法,活性边表结构,交点x值,1/m,边最高扫描线号,指针,P6P
5、1,P5P6,P4P5,P3P4,P4P5,P3P4,4.4.1 扫描线算法,新边表结构,左边低端x值,1/m,边最高扫描线号,指针,P1P2,P2P3,P0P1,P3P4,P4P5,P5P6,扫描线号,4.4.1 扫描线算法,算法过程:当沿扫描线号从小到大的顺序依次处理时,随时准备为每一条扫描线建立一个活化边表。如果扫描线的y值正好与某边的较低端点的ymin值相等,则开始从新边表将该边调入活化边表,然后随着扫描线的变化不断更新活化边。更新:加上dx(求交),或插入新边,或剔除不再相交边(扫描线号=ymax)排序、交点配对、填充,活化边的建立与更新基于有序边表的建立。,4.4.1 扫描线算法,
6、876543210,扫描线号,4.4.1 扫描线算法,扫描线算法是一种非常有效多边形扫描转换算法,它使所显示的象素只访问一次,因而输入/输出的要求低,但须对表进行维持和排序操作,不适合硬件实现。,void polyfill(polygon,color)for(各条扫描线i)初始化新边表头指针NET i;把ymin=i 的边放进边表NET i;y=最低扫描线号;初始化活性边表AET为空;for(各条扫描线i)把新边表NETi中的边结点用插入排序法插入AET表,使之按x坐标递增顺序排列;遍历AET表,把配对交点区间(左闭右开)上的象素(x,y),用Setpixel(x,y,color)改写象素颜色
7、值;遍历AET表,把ymax=i 的结点从AET表中删除,并把ymax i结点的x值递增x;若允许多边形的边自相交,则用冒泡排序法对AET表重新排序;/*polyfill*/,4.4.1 扫描线算法,1)简单的边填充算法基本思想:对于每条扫描线和每条多边形边的交点,将该扫描线上交点右方的所有象素取补。,4.4.2 边填充算法,优点:1)对多边形的每条边作此处理,与边的顺序无关;2)方法简单;缺点:每一个像素被访问多次,输入输出工作量大,4.4.2 边填充算法,优点:1)方法简单2)减少了被重复访问的像素,特别是有多个填充对象时,效果显著,2.栅栏填充算法栅栏:与扫描线垂直的直线,通常过多边形顶
8、点,且将多边形分成两半,方法:对每个扫描线与多边形的交点,将交点与栅栏间的像素取“补”,4.4.3 边界标志算法,原理:为每个像素建立inside标志,初始值为假。1)各边扫描变换,打上标志;2)对每条扫描线,依从左到右访问各象素,若点在多边形内,则inside为真,否则,inside为假。每当访问到象素为被打上边标志的点时,就把inside取反。其它,inside保持不变。若访问象素时,inside为真,则把该象素置为多边形色。,用软件实现时,扫描线算法与边标志算法的执行速度几乎相同,但由于在帧缓冲存储器中应用边标志算法时,不必建立、维护边表以及对它进行排序,所以边标志算法更适合于硬件实现,
9、这时它的执行速度比有序边表算法快到一至两个数量级。与边填充算法比,边标志算法不存在像素被访问多次的问题,但要时刻读取象素标志,也很耗时。,4.4.3 边界标志算法,4.4.4 简单种子填充算法,多边形扫描转换是对多边形边界及内部的所有象素赋予我们设定的颜色,把顶点表示的多边形转换成区域表达的多边形,是矢量图形向点阵图形转换的途径。区域填充是指对区域的操作,填充过程是用新值去替换象素原来的值,对于内点表示的区域,可通过区域填充更改区域各象素的属性值。,区域指已经表示成点阵形式的填充图形,它是一组邻近而又相连的象素集合。区域可采用内点表示和边界表示两种表示形式。在内点表示中,区域内的所有象素着同一
10、颜色,而区域边界上的象素着不同颜色。在边界表示中,区域的边界点着同一颜色,而区域内的所有象素着不同颜色。,连通性分为:四连通和八连通,4.4.4 简单种子填充算法,SeedFill(x,y)若种子点不是边界也未填充,则填充;否则,函数结束。(适合边界表示的区域)SeedFill(x+1,y);SeedFill(x,y+1);SeedFill(x-1,y);SeedFill(x,y-1);,4.4.4 简单种子填充算法,基本思想:首先,确定区域内的点(x,y)是否是老像素值,若是,将其改变成新像素值;然后,按四连通或八连通方法检测该点相邻的像素值,递归调用该算法。,简单种子填充算法思路简单、程序
11、简洁,但由于调用了递归函数,系统开销大,许多象素被重复访问,效率不高。由计算机编译原理可知,递归函数都可以改写为顺序执行程序,为了消除递归调用的负面作用,下面把上面的递归算法改为循序执行的算法,前提是增加一个足够大的堆栈空间(Stack)来存放未填充的种子点。,4.4.4 简单种子填充算法,基本思想:利用一个足够大的堆栈空间,将递归调用改为顺序执行。,1.初始化:种子像素入栈,当栈非空时,重复24的步骤;2.栈顶像素出栈;3.将出栈像素置为多边形颜色;4.按右、上、左、下顺序依次检查与出栈像素相邻的四个像素,若其中某个像素不在边界上且未置成多边形色,则该像素入栈;5.当堆栈为空时,算法终止。,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 图形 生成 算法
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6111088.html