《图形显示软件》PPT课件.ppt
《《图形显示软件》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《图形显示软件》PPT课件.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机图形显示技术计算机图形显示技术2 2第十一讲第十一讲 图形软件图形软件Bresenham画线算法画线算法圆的生成算法圆的生成算法Bresenham画圆法画圆法中点画圆法中点画圆法区域填充算法区域填充算法扫描线填充算法扫描线填充算法边界填充算法边界填充算法3 3 图形软件图形软件 Bresenham画线算法画线算法 About BresenhamAbout BresenhamE.Jack Bresenham Professor of Computer SciencePh.D.,Stanford University,1964 Ph.D.,Stanford University,1964 M
2、SIE,Stanford University,1960 MSIE,Stanford University,1960 BSEE,University of New Mexico,1959 BSEE,University of New Mexico,1959Retired from 27 years service at IBM as a Senior Retired from 27 years service at IBM as a Senior Technical Staff Member in 1987.Have taught 10 Technical Staff Member in 19
3、87.Have taught 10 years at Winthrop.Holder of five patents.years at Winthrop.Holder of five patents.4 4 图形软件图形软件 Bresenham画线算法画线算法Bresenham算法算法该算法由该算法由该算法由该算法由BresenhamBresenham在在在在1965年提出,是目前使用较为年提出,是目前使用较为年提出,是目前使用较为年提出,是目前使用较为广泛的一种扫描转换算法,可用于直线、圆弧等图元广泛的一种扫描转换算法,可用于直线、圆弧等图元广泛的一种扫描转换算法,可用于直线、圆弧等图元广泛
4、的一种扫描转换算法,可用于直线、圆弧等图元的扫描转换。的扫描转换。的扫描转换。的扫描转换。5 5 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法基本思想画线算法基本思想过各行各列像素中心构造一组假想的栅格过各行各列像素中心构造一组假想的栅格过各行各列像素中心构造一组假想的栅格过各行各列像素中心构造一组假想的栅格按直线从起点到终点的顺序计算直线与各垂直网格按直线从起点到终点的顺序计算直线与各垂直网格按直线从起点到终点的顺序计算直线与各垂直网格按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中线的交点,然后根据误差项的符号确定该
5、列象素中线的交点,然后根据误差项的符号确定该列象素中线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素与此交点最近的象素与此交点最近的象素与此交点最近的象素6 6 图形软件图形软件 Bresenham画线算法画线算法BresenhamBresenham画线算法画线算法画线算法画线算法设直线从起点设直线从起点设直线从起点设直线从起点(x1,y1x1,y1)到终点到终点到终点到终点(x2,y2x2,y2)设直线方程为:设直线方程为:设直线方程为:设直线方程为:y=kx+by=kx+b 其中其中其中其中b=y1-k*x1b=y1-k*x17 7 图形软件图形软件 Bresenham画线算
6、法画线算法Bresenham画线算法画线算法若直线斜率若直线斜率若直线斜率若直线斜率k k 0,10,1且且且且x2x1x2x1的情况(的情况(的情况(的情况(1a1a象限)象限)象限)象限)根据根据即即 DDA算法的讨论有:算法的讨论有:xi+1=xi+1 (1)yi+1=yi+k (2)在在1a象限里,当直线光栅化时,象限里,当直线光栅化时,x每次都增每次都增加加1个单元:个单元:xi+1=xi+18 8 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法画线算法由于由于由于由于k k不一定是整数,因此由不一定是整数,因此由不一定是整数,因此由不一定是整数,因此
7、由(2)(2)式求出的式求出的式求出的式求出的y y也不一定是整数。所也不一定是整数。所也不一定是整数。所也不一定是整数。所以要用最靠近以要用最靠近以要用最靠近以要用最靠近y y的整数的整数的整数的整数y yi i来代替来代替来代替来代替y y假设假设假设假设直线上第直线上第直线上第直线上第i i个像素坐标个像素坐标个像素坐标个像素坐标为为为为(x(xi i,y,yi i),那么,它的下一,那么,它的下一,那么,它的下一,那么,它的下一个点的像素点的可能位置为个点的像素点的可能位置为个点的像素点的可能位置为个点的像素点的可能位置为(x(xi i+1,y+1,yi i)或或或或(x(xi i+1
8、,y+1,yi i+1)+1)。如图:如图:如图:如图:9 9 图形软件图形软件 Bresenham画线算法画线算法BresenhamBresenham画线算法画线算法画线算法画线算法若直线斜率若直线斜率若直线斜率若直线斜率k k 0,10,1且且且且x2x1x2x1的情况(的情况(的情况(的情况(1a1a象限)象限)象限)象限)如上图如上图如上图如上图在在在在x=xx=xi i+1+1处,直线上处,直线上处,直线上处,直线上y y的值的值的值的值y=k(xy=k(xi i+1)+b+1)+b该点该点该点该点距离点距离点距离点距离点(x(xi i+1,y+1,yi i)和点和点和点和点(x(x
9、i i+1,y+1,yi i+1)+1)的距离分别为的距离分别为的距离分别为的距离分别为d d1 1和和和和d d2 2:d d1 1=y-y=y-yi i=k(x=k(xi i+1)+b-y+1)+b-yi i d d2 2=y=yi i+1-y=y+1-y=yi i+1-k(x+1-k(xi i+1)-b+1)-b 因此因此因此因此,这两个距离的差为:,这两个距离的差为:,这两个距离的差为:,这两个距离的差为:d d1 1-d-d2 2=2k(x=2k(xi i+1)-2y+1)-2yi i+2b-1(1)+2b-1(1)1010 图形软件图形软件 Bresenham画线算法画线算法Bre
10、senhamBresenham画线算法画线算法画线算法画线算法根据根据根据根据(1 1)式,作如下讨论分析:式,作如下讨论分析:式,作如下讨论分析:式,作如下讨论分析:l l当当当当d d1 1-d-d2 200时,说明直线上的理论点距离时,说明直线上的理论点距离时,说明直线上的理论点距离时,说明直线上的理论点距离(x(xi i+1,y+1,yi i+1)+1)较近,因此下一较近,因此下一较近,因此下一较近,因此下一个直线像素点应取个直线像素点应取个直线像素点应取个直线像素点应取(x(xi i+1,y+1,yi i+1)+1)。l l当当当当d d1 1-d-d2 20 x1x2x1的情况(的
11、情况(的情况(的情况(1a1a象限)象限)象限)象限)因此,利用因此,利用因此,利用因此,利用(d d1 1-d-d2 2)的符号就可以决定下一个像素点的符号就可以决定下一个像素点的符号就可以决定下一个像素点的符号就可以决定下一个像素点的选择的选择的选择的选择然而含有然而含有然而含有然而含有 变量变量变量变量x xi i、y yi i,不利于计算。为此,我们构造一,不利于计算。为此,我们构造一,不利于计算。为此,我们构造一,不利于计算。为此,我们构造一个新的判别式:个新的判别式:个新的判别式:个新的判别式:p pi i=x*(dx*(d1 1-d-d2 2)=2 x)=2 xi i y-2yy
12、-2yi i x+c x+c (2 2)其中:其中:其中:其中:x=(x2-x1)0 x=(x2-x1)0,因此,因此,因此,因此p pi i与与与与(d(d1 1-d-d2 2)符号相同;符号相同;符号相同;符号相同;y=y2-y1y=y2-y1;c=2c=2 y+y+x(2b-1)x(2b-1)1212 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法画线算法若直线斜率若直线斜率若直线斜率若直线斜率k k 0,10,1且且且且x2x1x2x1的情况(的情况(的情况(的情况(1a1a象限)象限)象限)象限)以以以以i+1i+1代代代代 入入入入 式式式式(2)(
13、2)中的中的中的中的i i,得得得得:p pi+1i+1=x*(dx*(d1 1-d-d2 2)=2 x)=2 xi+1i+1 y-2yy-2yi+1i+1 x+c x+c (3 3)将式将式将式将式(3)(3)减去式减去式减去式减去式(2)(2),并由并由并由并由x xi+1i+1=x=xi i+1+1可得可得可得可得:p pi+1i+1=p=pi i+2+2 y-2y-2 x(yx(yi+1i+1-y-yi i)(4 4)假设直线上的初始端点恰好是其像素点的坐标,则将假设直线上的初始端点恰好是其像素点的坐标,则将假设直线上的初始端点恰好是其像素点的坐标,则将假设直线上的初始端点恰好是其像素
14、点的坐标,则将x1,x1,y1y1和和和和b b代代代代 入入入入 式式式式(2 2)中的中的中的中的x xi i,y,yi i可可可可 到到到到 p pi i的初始值的初始值的初始值的初始值p p1 1=2x=2x1 1 y-2yy-2y1 1 x+2x+2 y+y+x2(yx2(y1 1-kx-kx1 1)-1)-1 =2 =2 y-y-x x (5 5)1313 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法画线算法若直线斜率若直线斜率若直线斜率若直线斜率k k 0,10,1且且且且x2x1x2x1的情况(的情况(的情况(的情况(1a1a象限)象限)象限)
15、象限)利用上面构造的误差判别变量,可得第利用上面构造的误差判别变量,可得第利用上面构造的误差判别变量,可得第利用上面构造的误差判别变量,可得第1a1a象限内的直象限内的直象限内的直象限内的直线线线线BresenhamBresenham算法算法:p p1 1=2=2 y-y-x x x xi+1i+1=x=xi i+1+1 y yi+1i+1=y=yi i+1,p+1,pi+1i+1=p=pi i+2(+2(y-y-x)x)当当当当p pi i 0 0时时时时 y yi+1i+1=y=yi i,p,pi+1i+1=p=pi i+2+2 y y 当当当当p pi i 0 x1x2x1的情况(的情况
16、(的情况(的情况(1a1a象限)象限)象限)象限)从算法可以看出,第从算法可以看出,第从算法可以看出,第从算法可以看出,第i+1i+1步的判别变量步的判别变量步的判别变量步的判别变量p pi+1i+1仅与第仅与第仅与第仅与第i i步的步的步的步的判别变量判别变量判别变量判别变量p pi i、直线的两个端点分量差、直线的两个端点分量差、直线的两个端点分量差、直线的两个端点分量差 x x、y y有关,有关,有关,有关,只用整数相加和乘只用整数相加和乘只用整数相加和乘只用整数相加和乘2 2运算,没有四舍五运算,没有四舍五运算,没有四舍五运算,没有四舍五 入处理,而乘入处理,而乘入处理,而乘入处理,而
17、乘2 2可利用左移一位来实现可利用左移一位来实现可利用左移一位来实现可利用左移一位来实现因此该算法速度快且易于硬件实现因此该算法速度快且易于硬件实现因此该算法速度快且易于硬件实现因此该算法速度快且易于硬件实现1515 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法描述画线算法描述若直线斜率若直线斜率若直线斜率若直线斜率k k 0,10,1且且且且x2x1x2x1的情况(的情况(的情况(的情况(1a1a象限)象限)象限)象限)1 1、输入两端点、输入两端点、输入两端点、输入两端点(x1,y1),(x2,y2)(x1,y1),(x2,y2),并以第一点作为起,并以第
18、一点作为起,并以第一点作为起,并以第一点作为起始点始点始点始点 2 2、分别计算、分别计算、分别计算、分别计算 x=x2-x1;x=x2-x1;y=y2-y1y=y2-y1;计算误差初值计算误差初值计算误差初值计算误差初值p p1 1=2=2 y-y-x x;i=1i=1;3 3、求直线的下一点位置:、求直线的下一点位置:、求直线的下一点位置:、求直线的下一点位置:x xi+1i+1=x=xi i+1+1;if pif pi i 0 0 则则则则 y yi+1i+1=y=yi i+1+1;否则否则否则否则 y yi+1i+1=y=yi i;1616 图形软件图形软件 Bresenham画线算法
19、画线算法Bresenham画线算法描述画线算法描述若直线斜率若直线斜率若直线斜率若直线斜率k k 0,10,1且且且且x2x1x2x1的情况(的情况(的情况(的情况(1a1a象限)象限)象限)象限)4、画点画点(xi+1,yi+1);5、求下一个误差、求下一个误差pi+1;if pi 0 则则 pi+1=pi+2y-2x;否则否则 pi+1=pi+2y;6、i=i+1;if ix+1则转则转3;否则;否则end1717 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法画线算法现在讨论如何让该算法实现任何方向线段的绘制现在讨论如何让该算法实现任何方向线段的绘制现在讨
20、论如何让该算法实现任何方向线段的绘制现在讨论如何让该算法实现任何方向线段的绘制如图所示,线段的方向可分为如图所示,线段的方向可分为如图所示,线段的方向可分为如图所示,线段的方向可分为8 8种,从原点出发射向种,从原点出发射向种,从原点出发射向种,从原点出发射向8 8个区个区个区个区当直线斜率的绝对值大于当直线斜率的绝对值大于当直线斜率的绝对值大于当直线斜率的绝对值大于1 1时,时,时,时,让让让让y y坐标每次增加坐标每次增加坐标每次增加坐标每次增加1 1,再用,再用,再用,再用 BresenhamBresenham的误差判别式确定的误差判别式确定的误差判别式确定的误差判别式确定 x x坐标是
21、否需要增加坐标是否需要增加坐标是否需要增加坐标是否需要增加1 1。1818 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法画线算法 如果能充分利用如果能充分利用如果能充分利用如果能充分利用x xy y 平面各种八分和四分区域间的平面各种八分和四分区域间的平面各种八分和四分区域间的平面各种八分和四分区域间的对称性就可减少运算量。对称性就可减少运算量。对称性就可减少运算量。对称性就可减少运算量。象限象限取取值值1a、2ayi+1=yi 或 yi+13a、4ayi+1=yi 或 yi-11b、2bxi+1=xi 或 xi+13b、4bxi+1=xi 或 xi-1191
22、9 图形软件图形软件 Bresenham画线算法画线算法Bresenham画线算法(画线算法(FLASH演示演示)例例:分析从分析从(0,0)(0,0)到到(5,2)(5,2)的直线段的直线段原始直线Bresenham画出直线2020 图形软件图形软件 圆的生成算法给出圆心坐标(xc,yc)和半径r,逐点画出一个圆周的公式有下列两种:1.直角坐标法由上式导出:直角坐标法直角坐标法当当x x x xc c从从 r r到到r r作加作加1 1递增时,就可以求出对应的递增时,就可以求出对应的圆周点的圆周点的y y坐标坐标 但但由于有乘方和平方根运算,且都是浮点运算,由于有乘方和平方根运算,且都是浮点
23、运算,算法效率不高。算法效率不高。同时同时,这样求出的圆周上的点是不均匀的,这样求出的圆周上的点是不均匀的 x x x xc c 接接近近R R时,由于圆的斜率趋向于无穷大,使得圆周上时,由于圆的斜率趋向于无穷大,使得圆周上有较大的间隙有较大的间隙2121 图形软件图形软件 圆的生成算法2222 图形软件图形软件 圆的生成算法 极坐标法极坐标法假设假设圆周上一点圆周上一点(x,y)(x,y)处的半径与处的半径与x x轴的夹角为轴的夹角为,则圆的极坐标方程为:则圆的极坐标方程为:x x x x=x x x xc c c c+r r r r cos cos cos cos y y y y=y y
24、y yc c c c+r r r r sin sin sin sin 利用利用利用利用圆周上点的对称性,我们可求出圆圆周上点的对称性,我们可求出圆圆周上点的对称性,我们可求出圆圆周上点的对称性,我们可求出圆上各点,此时自变量上各点,此时自变量上各点,此时自变量上各点,此时自变量的取值范围是的取值范围是的取值范围是的取值范围是0,450,450,450,45度,以固定角度为步长来变化,可得到沿圆度,以固定角度为步长来变化,可得到沿圆度,以固定角度为步长来变化,可得到沿圆度,以固定角度为步长来变化,可得到沿圆周等距离分布的一系列光点,但运算量大,周等距离分布的一系列光点,但运算量大,周等距离分布的
25、一系列光点,但运算量大,周等距离分布的一系列光点,但运算量大,也不被采用。也不被采用。也不被采用。也不被采用。A AB B极坐标法对称性极坐标法对称性(x,y)(y,x)(y,-x)(x,-y)(-x,y)(-y,x)(-y,-x)(-x,-y)452323 图形软件图形软件 圆的生成算法BresenhamBresenham画圆算法画圆算法与与与与BresenhamBresenham直线生成算法一样,其直线生成算法一样,其直线生成算法一样,其直线生成算法一样,其基本思想基本思想基本思想基本思想:利:利:利:利用判别变量来判断选择最近的像素,判别变量仅用用判别变量来判断选择最近的像素,判别变量仅
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形显示软件 图形 显示 软件 PPT 课件
限制150内