收藏 分享(赏)

计算机图形学的课件.ppt

上传人:myw993772 文档编号:7022952 上传时间:2019-05-02 格式:PPT 页数:33 大小:1.43MB
下载 相关 举报
计算机图形学的课件.ppt_第1页
第1页 / 共33页
计算机图形学的课件.ppt_第2页
第2页 / 共33页
计算机图形学的课件.ppt_第3页
第3页 / 共33页
计算机图形学的课件.ppt_第4页
第4页 / 共33页
计算机图形学的课件.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、第四章 多边形填充,4.1 实面积图形的概念 4.2 有效边表填充算法 4.3 边缘填充算法 4.5 本章小结 4.6 习题,4.1 实面积图形的概念,实面积图形既能描述物体的几何轮廓,又能表现物体的表面色彩,与人们观察物体表面的习惯相一致,同时,实面积图形也是描述三维物体、绘制三维真实感图形的基础。,4.1.1 多边形的表示,在计算机图形学中,多边形有两种示方法:顶点表示法和点阵表示法。,图 4-3 多边形的顶点表示法,P0,P1,P2,P3,P4,P5,图 4-4 多边形的点阵表示法,顶点表示法多边形的顶点表示法是用多边形的顶点序列来描述。特点是直观、占内存少,易于进行几何变换,但由于没有

2、,明确指出哪些像素在多边形内,所以不能直接进行填充,需要对多边形进行扫描转换,顶点表示法如图4-3所示。点阵表示法多边形的点阵表示法是用多边形覆盖的像素点集来描述。 特点是便于直接确定实面积图形覆盖的像素点,是多边形填充所需要的表示形式,但是缺少了多边形顶点的几何信息,如图4-4所示。多边形的扫描转换将多边形的描述从顶点表示法变换到点阵表示法的过程,称为多边形的扫描转换。即从多边形的顶点信息出发,求出多边形内部的各个像素点信息。,4.2 有效边表填充算法,4.2.1 填充原理 4.2.2 边界像素的处理原则 4.2.3 有效边和有效边表 4.2.4 边表,4.2.1 填充原理,多边形的有效边表

3、填充算法的基本原理是按照扫描线从小到大的移动顺序,计算当前扫描线与多边形各边的交点,然后把这些交点按x值递增的顺序进行排序、配对,以确定填充区间,然后用指定颜色点亮填充区间内的所有像素,即完成填充工作。有效边表填充算法通过访问多边形覆盖区间内的每个像素,可以填充凸、凹多边形和环,已成为目前最为有效的多边形填充算法。,图 4-5 用一条扫描线填充多边形,P0,P1,P2,P3,P4,P5,P6,在图4-5中,多边形覆盖了12条扫描线。扫描线y3与多边形有4个交点(2.3,3),(4.5,3),(7,3)和(9,3)。对交点进行圆整处理后的结果为(2,3),(5,3),(7,3)和(9,3)。按x

4、值递增的顺序对交点进行排序、配对后的填充区间为(2,5)和(7,9),共有7个像素点需要填充为指定颜色。,4.2.2 边界像素的处理原则,在实际填充过程中,需要考虑到边界像素影响问题:图4-6中正方形P0P2P4P6被等分为四个小正方形。假定小正方形P0P1P8P7被填充为绿色,P1P2P3P8被填充为橙色,P8P3P4P5被填充为绿色,P7P8P5P6被填充为橙色。四个小正方形的公共边为:P1P8、P8P5、P7P8和P8P3。考虑到公共边P1P8既是正方形P0P1P8P7的右边界,又是正方形P1P2P3P8的左边界;考虑到P7P8既是是正方形P0P1P8P7的上边界,又是正方形P7P8P5

5、P6的下边界,那么P1P8和P7P8应该填充为哪一个小正方形的颜色?同理,P8P5 和P8P3应该填充为哪一个小正方形的颜色?,图 4-6 边界像素的问题,P0,P1,P2,P3,P4,P5,P6,P7,图 4-7 边界像素的处理,P8,P0,P1,P2,P3,P4,P5,P6,P7,P8,在实际填充过程中,也需要考虑到像素面积大小的影响问题:对左下角为(1,1),右上角为(3,3)的正方形进行填充时,若边界上的所有像素全部填充,就得到图4-8所示的结果。所填像素覆盖的面积为33个单位,而正方形的面积实际只有22个单位。,图 4-8 面积33,图 4-9 面积22,为了保解决这些问题,在多边形

6、填充过程中,常采用“下闭上开”和“左闭右开”的原则对边界像素进行处理。图4-6的处理结果如图4-7所示,每个小正方形的右边界像素和上边界像素都没有填充。图4-8的处理结果如图4-9所示,上面一行像素和右面一列像素没有填充。,按照此原则对图4-5中的一些特殊点进行处理: 1.P2点的处理原则图4-5中P2是边P3P2的终点,同时也是边P2P1的起点。按照“下闭上开”的原则,可以自动处理。,图4-10 局部点的处理,P0,P1,P2,P3,P4,P5,P6,2.P0、P3、P5点和P4点的处理原则P0点、P3和P5是局部最低点,P4点是局部最高点。如果处理不当,扫描线y1会填充区间(3,8),结果

7、填充了P3,和P5点之间的像素,如图4-10所示。对局部最低点P0、P3和P5的处理方法为,填充时设置一个逻辑变量(初始值为假),每访问一个结点,逻辑变量值取反一次,若逻辑变量值为真,则填充该区间,这样可以保证局部最低点处理正确。对局部最高点P4,根据“下闭上开”的原则,P4点不予填充,y5扫描线会自动填充P4点,如图4-10所示。,4.2.3 有效边和有效边表形,1.有效边(Active Edge,AE)多边形内与当前扫描线相交的边称为有效边。在处理一条扫描线时仅对有效边进行求交运算,可以避免与多边形的所有边求交,提高了算法效率。有效边上的扫描线由起点到终点每次加1,即像素点的y坐标为:yy

8、+1,x坐标的变化可以按如下方法推导。设有效边的斜率为k。假定有效边与当前扫描线yi的交点为(xi,yi),则有效边与下一条扫描线yi+1的交点为(xi+1,yi+1)。其中, , 。如图4-11所示。这说明随着扫描线的移动,扫描线与有效边交点的x坐标从起点开始可以按增量1/k计算出来。,(xi+1,yi+1),(xi,yi),1/k,图4-11 有效边交点相关性,2.有效边表(Active Edge Table,AET)把有效边按照与扫描线交点x坐标递增的顺序存放在一个链表中,称为有效边表,有效边表的结点如图4-12所示。,图 4-12 有效边表结点,P0,P1,P2,P3,P4,P5,P6

9、,图 4-13 示例多边形,对于图4-13所示的多边形,顶点表示法为:P0(7,8),P1(3,12),P2(1,7),P3(3,1), P4(6,5), P5(8,1), P6(12,9)。扫描线的最大值为Smax12,最小值为Smin1,共有12条扫描线,每条扫描线之间间隔1个像素单位。每条扫描线的有效边表为如图418所示。,这条扫描线处理完毕后 对于P3P4和P4P5两条边,因为下一条扫描线S=5和ymax相等,根据“下闭上开”的原则予以删除。,这条扫描线处理完毕后 对于P2P3边,因为下一条扫描线S=7和ymax相等,根据“下闭上开”的原则予以删除。当S7时,添加上新边P1P2。,当S

10、8时,添加上新边P0P1和P0P6。,这条扫描线处理完毕后 对于P5P6边和P0P6边,因为下一条扫描线S=9和ymax相等,根据“下闭上开”的原则予以删除。,S=11的扫描线处理完毕后 对于P1P2边和P0P1边,因为下一条扫描线S=12和ymax相等,根据“下闭上开”的原则予以删除。至此,全部有效边表已经给出。,4.2.4 边表,从有效边表的建立过程可以看出,有效边表给出了扫描线和有效边交点坐标的计算方法,但是没有给出新边出现的位置坐标。为了确定在哪条扫描线上插入了新边,就需要构造一个边表(Edge Table,ET),用以存放扫描线上多边形各条边出现的信息。因为水平边的1/k为,并且水平

11、边本身就是扫描线,在建立边表时可以不予考虑。1.边表的表示法(1)边表是按照扫描线顺序管理边的出现情况的一个数据结构。首先,构造一个纵向扫描线链表,链表的长度为多边形所占有的最大扫描线数,链表的每个结点称为桶,对应多边形覆盖的每一条扫描线。,将每条边的信息链入与该边最小y坐标(ymin)相对应的桶处。也就是说,若某边的较低端点为ymin,则该边就存放在相应的扫描线桶中。对于每一条扫描线,如果新增多条边,则按x|ymin坐标递增的顺序存放在一个链表中,若x|ymin 相等,则按照1/k由小到大排序,这样就形成边表,如图4-14所示。,图 4-14 边表结点,其中,x为新增边低端的x|ymin值,

12、用于判断边表在桶中的排序;ymax是该边所在的最大扫描线值,用于判断该边何时成为无效边。1/k是边在x方向的变化量和在y方向的变化量的比值,即x/y。从图4-14可以看出边表是有效边表的特例,即该边的最低点处的有效边表,有效边表和边表可以使用同一个数据结构来表示。,2.边表示例 对于图 4-13示例多边形。边表结构如图4-15所示。,图 4-15 边表,4.3 边缘填充算法,4.3.1 填充原理 4.3.2 填充过程,4.3.1 填充原理,边缘填充算法是求出多边形的每条边与扫描线的交点,然后将交点右侧的所有像素颜色全部取为反色。按任意顺序处理完多边形的所有边后,就完成了多边形的填充任务。,4.

13、3.2 填充过程,假定边的顺序为E0、E1、E2、E3、E4、E5、E6,如图4-16所示。填充过程如图4-17所示。,图 4-16 边缘填充算法示例多边形,P0(x0,y0),P1(x1,y1),E0,E1,E2,E3,E4,E5,E6,图 4-17 边缘填充算法原理,4.4 区域填充算法,填充原理 四邻接点和八邻接点 四连通域和八连通域 四邻接点和八邻接点填充算法,填充原理,条件:1.点阵表示的区域2.区域内部或边界具有同一种颜色,且边界色与内部色不同3.有一个种子点 做法:从种子点出发向周围扩展,四邻接点和八邻接点,四连通域和八连通域,4.5 本章小结,本章主要讲解了多边形的填充原理。有效边表算法可以访问多边形内的每一个像素,是光照模型的基础,请读者深刻体会AET表和ET表的内涵。AET表表示的是扫描线在一条边上的连贯性,ET表表示的是新边在扫描线上的插入位置,ET表是AET表的特例。种子填充算法主要包括四邻接点算法和八邻接点算法,特别要注意区分四连通域和八连通域。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报