第3章 基本图形的生成二.pptVIP

  • 0
  • 0
  • 约7.92千字
  • 约 66页
  • 2025-10-20 发布于广东
  • 举报

*内蒙古大学计算机图形学*数据结构与实现步骤即算法中采用较灵活的数据结构。它由边的分类表ET(EdgeTable)和边的活化链表AEL(ActiveEdgeList)两部分组成。表结构ET和AEL中的基本元素为多边形的边。边的结构由以下四个域组成:ymax边的上端点的y坐标;x在ET中表示边的下端点的x坐标,在AEL中则表示边与扫描线的交点的坐标;Δx边的斜率的倒数;next指向下一条边的指针。第30页,共66页,星期日,2025年,2月5日数据结构与实现步骤*内蒙古大学计算机图形学*边的分类表ET是按边的下端点的y坐标对非水平边进行分类的指针数组。下端点的y坐标的值等于i的边归入第i类。有多少条扫描线,就设多少类。同一类中,各边按x值(x值相等时,按Δx的值)递增的顺序排列成行。第31页,共66页,星期日,2025年,2月5日数据结构与实现步骤*内蒙古大学计算机图形学*与当前扫描线相交的边称为活性边(activeedge),把它们按与扫描线交点x坐标递增的顺序存入一个链表中,边的活化链表(AEL,Activeedgetable)。它记录了多边形边沿扫描线的交点序列。第32页,共66页,星期日,2025年,2月5日例子*内蒙古大学计算机图形学*已知多边形P=(P0P1P2P3P4P5P6P0);其各边坐标分别为[(2,5)(2,10)(9,6)(16,11)(16,4)(12,2)(7,2)]建立其边表和边的活化链表第33页,共66页,星期日,2025年,2月5日例子*内蒙古大学计算机图形学*第34页,共66页,星期日,2025年,2月5日边表*内蒙古大学计算机图形学*第35页,共66页,星期日,2025年,2月5日*内蒙古大学计算机图形学*活动边表的例子y=3Y=8第36页,共66页,星期日,2025年,2月5日算法实现步骤*内蒙古大学计算机图形学*这样,当建立了边的分类表ET后,扫描线算法可按下列步骤进行:(1)取扫描线纵坐标y的初始值为ET中非空元素的最小序号。(2)将边的活化链表AEL设置为空。(3)按从下到上的顺序对纵坐标值为y的扫描线(当前扫描线)执行下列步骤,直到边的分类表ET和边的活化链表都变成空为止。第37页,共66页,星期日,2025年,2月5日算法实现步骤*内蒙古大学计算机图形学*1)如边分类表ET中的第y类元素非空,则将属于该类的所有边从ET中取出并插入边的活化链表中。递增方向排序。2)若相对于当前扫描线,边的活化链表AEL非空,则将AEL中的边两两依次配对,依此类推。并填色。3)将边的活化链表AEL中满足y=ymax的边删去。4)x:=x+Δx。5)y:=y+1。第38页,共66页,星期日,2025年,2月5日扫描线算法*内蒙古大学计算机图形学*特点:算法效率比逐点填充法高很多。缺点:对各种表的维持和排序开销太大,适合软件实现而不适合硬件实现。第39页,共66页,星期日,2025年,2月5日扫描线算法*内蒙古大学计算机图形学*问题:如何处理多边形的水平边?如何修改扫描线算法,使它能处理边自交的多边形?有孔的多边形如何处理?如何处理圆、椭圆的扫描线算法?第40页,共66页,星期日,2025年,2月5日边缘填充算法*内蒙古大学计算机图形学*▼求余运算:假定A为一个正整数,则M的余定义为A–M,记为。计算机中取A为n位能表示的最大整数。即,A=0xFFFFFFFF▼由来:光栅图形中,如果某区域已着上值为M的颜色值做偶数次求余运算,该区域颜色不变;而做奇数次求余运算,则该区域颜色变为值为的颜色。这一规律应用于多边形扫描转换,就为边缘填充算法。▼算法基本思想:对于每条扫描线和每条多边形边的交点,将该扫描线上交点右方的所有象素取余。第41页,共66页,星期日,2025年,2月5日算法1(以扫描线为中心的边缘填充算法)*内蒙古大学计算机图形学*1、将当前扫描线上的所有象素着上颜色;2、求余: for(i=0;i=m;i++) 在当前扫描线上,从横坐标为Xi的交点向右求余;第42页,共66页,星期日,2025年,2月5日算法2(以边为中心的边缘填充算法)*内蒙古大学计算机图形学* 1、将绘图窗口的背景色置为; 2、对多边形的每一条非水平边做: 从该边上

文档评论(0)

1亿VIP精品文档

相关文档