维基本图形元素生成算法.ppt
《维基本图形元素生成算法.ppt》由会员分享,可在线阅读,更多相关《维基本图形元素生成算法.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章二维基本图形元素生成算法1 基本概念基本概念n所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换。通常也称扫描转换图元2课课程内容程内容 3.1 简单简单的二的二维图维图形形显显示流程示流程 3.2 直直线线段的段的扫扫描描转换转换 3.3 圆圆弧的弧的扫扫描描转换转换 3.4 易画曲易画曲线线的正的正负负法法 3.5 线线画画图图元的属性控制元的属性控制33.1 简单简单的二的二维图维图形形显显示流程示流程裁剪和扫描显示图元图3-1-1二维图形显示流程裁剪和裁剪和扫扫描描图形显示前需要进行扫描转换+裁剪,这一过
2、程有三种方法:裁剪-扫描转换:最常用,节约计算时间。扫描转换-裁剪:算法简单;扫描转换到画布-位块拷贝:算法简单,但耗时耗内存。常用于字符显示。53.2 直直线线段的段的扫扫描描转换转换n 目目标标:求与直:求与直线线段充分接近的像素集段充分接近的像素集n 两点假两点假设设1.直线段的宽度为12.直线段的斜率:像素间均匀网格整型坐标系图3-2-16n 描描绘线绘线条条图图形的要求形的要求q直线段要显得笔直q线段端点位置要准确q线段的亮度要均匀q转换算法速度要快73.2.1 DDA(digitaldifferentialanalyzer)算法算法q条件:条件:n待待扫扫描描转换转换的直的直线线段
3、:段:n斜率:斜率:,其中,其中n直直线线方程:方程:83.2.1 DDA算法算法q直接求交算法:直接求交算法:n划分区划分区间间x,x1:n计计算算纵纵坐坐标标:n取整:取整:n复复杂杂度:乘法度:乘法+加法加法+取整取整图3-2-293.2.1 DDA算法算法qDDA算法(增量算法)算法(增量算法)n复复杂杂度:加法度:加法+取整取整n算法算法图3-2-3103.2.1 DDA算法算法nDDA算法程序:voidLineDDA(intx0,inty0,intx1,inty1,intcolor)/*假定x0 x1,-1=k=1*/intx,y;floatdx,dy,k;dx=float(x1-
4、x0);dy=float(y1-y0);k=dy/dx;y=y0;for(x=x0;x1时,必须把x,y地位互换,y每增加1,x相应增加1/k。n特点2在这个算法中,y与k必须用浮点数表示,而且每一步都要对y进行四舍五入后取整。这使得它不利于硬件实现。133.2.1 DDA算法算法改进算法(增量DDA)n优化点:增加斜率判断并改变循环参数14算法算法nDDA画线算法程序(改进)voidLineDDA(intx0,inty0,intx1,inty1,intcolor)intx,y;floatdx,dy,k,l,m;dx=float(x1-x0);dy=float(y1-y0);k=dy/dx;i
5、f(abs(k)1)for(x=x0;x=x1,x+)Putpixel(x,int(y+0.5),color);y+=k;elsefor(y=y0;yx1怎么办?153.2.2 画画线线中点算法中点算法q目目标标:消除:消除DDA算法中的浮点运算算法中的浮点运算(浮点数取整运算,不利于硬件实现;DDA算法,效率低)q条件:条件:n同同DDA算法算法n斜斜 率:率:q直直线线段的段的隐隐式方程式方程((x0,y0)(x1,y1)两端点)F(x,y)=ax+by+c=0式中a=y0-y1,b=x1-x0,c=x0y1-x1y016q基本原理基本原理:画直线段的过程中,当前象素点为(xp,yp),一
6、个象素点有两种可选择点p1(xp+1,yp)或p2(xp+1,yp+1)。若M=(xp+1,yp+0.5)为p1与p2之中点,Q为理想直线与x=xp+1垂线的交点。当M在Q的下方,则P2应为下一个象素点;M在Q的上方,应取P1为下一点。图3-2-5173.2.2 画画线线中点算法中点算法3.2.2 画画线线中点算法中点算法点与直线的关系:on:F(x,y)=0;up:F(x,y)0;down:F(x,y)0;图3-2-6q直直线线的正的正负负划分性划分性183.2.2 画画线线中点算法中点算法欲判断中M在Q点的上方还是下方,只要把M代F(x,y)并判断它的符号。构造判别式:d=F(M)=F(x
7、p+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c当d0,M在Q点上方,取P1为下一个象素;当d=0,选P1或P2均可,约定取P1为下一个象素19q问题:判断距直线最近的下一个象素点构造判别式:d=F(M)=F(xp+1,yp+0.5)由d0,d0可判定下一个象素,PP2P1图3-2-7203.2.2 画画线线中点算法中点算法q要判定再下一个象素,分两种情形考虑:1)若d0,取正右方象素P1,再下一个象素判定,由d1=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)+c=d+a,d的增量是a2)若d0,取右上方象素P2,再下一个象素,由:d2=F(xp+2,yp+1
8、.5)=d+a+bd的增量为a+bP2PP1图3-2-8213.2.2 画画线线中点算法中点算法qd的初始值qd0=F(x0+1,y0+0.5)=F(z0,y0)+a+0.5*bq因(x0,y0)在直线上,F(x0,y0)=0,所以,d0=a+0.5*bqd的增量都是整数,只有初始值包含小数,可以用2d代替d,2a改写成a+a。q算法中只有整数变量,不含乘除法,可用硬件实现。223.2.2 画画线线中点算法中点算法q中点算法程序MidPointLine(x0,y0,x1,y1,color)intx0,y0,x1,y1,color;inta,b,d1,d2,x,y;a=y0-y1;b=x1x0;
9、d=2*a+b;d1=2*a;d2=2*(a+b);x=x0;y=y0;PutPixel(x,y,color);while(xx1)if(d0)x+;y+;d+=d2;elsex+;d+=d1;PutPixel(x,y,color);233.2.2 画画线线中点算法中点算法q举例用中点画线方法扫描转换连接两点P0(0,0)和P1(5,2)的直线段:a=y0-y1=-2;b=x1-x0=5;d0=2*a+b=1;d1=2*a=-4;d2=2*(a+b)=6xyd00110-3d1213d231-1d1425d2521图3-2-9243.2.2 画画线线中点算法中点算法3.2.3 画画线线Bres
10、enham算法算法nBresenham算法是计算机图形学领域使用最广泛的直线扫描转换算法。该方法类似于中点法,由误差项符号决定下一个象素取右边点还是右上点。n算法原理如下:过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列象素中与此交点最近的象素。该算法的巧妙之处在于采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求象素。25如下图所示。设直线方程为,其中k=dy/dx。假设x列的象素已经确定为xi,其行坐标为yi。那么下一个象素的列坐标为xi1,而行坐标要么不变为yi,要么递增1为yi1。图3-2-10263.2
11、.3 画画线线Bresenham算法算法是否增1取决于如图所示误差项d的值。因为直线的起始点在象素中心,所以误差项d的初值d00。x下标每增加1,d的值相应递增直线的斜率值k,即ddk。一旦d1,就把它减去1,这样保证d在0和1之间。当d时,直线与xi1列垂直网格交点最接近于当前象素(xi,yi)的右上方象素(xi1,yi1);而当d时,更接近于右方象素(xi1,yi)。图3-2-10273.2.3 画画线线Bresenham算法算法为方便计算,令ed,e的初值为,增量为k。当e0时,取当前象素(xi,yi)的右上方象素(xi1,yi1);而当e0时,更接近于右方象素(xi1,yi)。283.
12、2.3 画画线线Bresenham算法算法nBresenham画线算法程序voidBresenhamline(intx0,inty0,intx1,inty1,intcolor)intx,y,dx,dy;floatk,e;dx=x1-x0;dy=y1-y0;k=dy/dx;e=-0.5;x=x0;y=y0;for(i=0;i=0)y+,e=e-1;293.2.3 画画线线Bresenham算法算法n举例:用Bresenham方法扫描转换连接两点P0(0,0)和P1(5,2)的直线段。xye00图3-2-11303.2.3 画画线线Bresenham算法算法上述bresenham算法在计算直线斜率
13、与误差项时用到小数与除法。可以改用整数以避免除法。由于算法中只用到误差项的符号,因此可作如下替换:e=e*2dxn改进的Bresenham画线算法程序:voidInterBresenhamline(intx0,inty0,intx1,inty1,intcolor)dx=x1-x0;dy=y1-y0;e=-dx;x=x0;y=y0;for(i=0;i=0)y+;e=e-2*dx;313.2.3 画画线线Bresenham算法算法圆圆弧的弧的扫扫描描转换转换n处处理理对对象:象:圆圆心在原点的心在原点的圆圆弧弧n圆圆的八的八对对称性称性图3-3-132n两种直接离散方法:两种直接离散方法:离散点:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 图形 元素 生成 算法
限制150内