维基本图形元素生成算法.ppt
《维基本图形元素生成算法.ppt》由会员分享,可在线阅读,更多相关《维基本图形元素生成算法.ppt(65页珍藏版)》请在三一办公上搜索。
1、第三章 二维基本图形元素生成算法,基本概念,所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换。通常也称扫描转换图元,2,课程内容,3.1 简单的二维图形显示流程 3.2 直线段的扫描转换 3.3 圆弧的扫描转换 3.4 易画曲线的正负法 3.5 线画图元的属性控制,3,3.1 简单的二维图形显示流程,图3-1-1 二维图形显示流程,裁剪和扫描,图形显示前需要进行扫描转换+裁剪,这一过程有三种方法:裁剪-扫描转换:最常用,节约计算时间。扫描转换-裁剪:算法简单;扫描转换到画布-位块拷贝:算法简单,但耗时耗内存。常用于字
2、符显示。,5,3.2 直线段的扫描转换,目标:求与直线段充分接近的像素集 两点假设1.直线段的宽度为12.直线段的斜率:,像素间均匀网格整型坐标系,图3-2-1,6,描绘线条图形的要求直线段要显得笔直线段端点位置要准确线段的亮度要均匀转换算法速度要快,7,3.2.1 DDA(digital differential analyzer)算法,条件:待扫描转换的直线段:斜率:,其中直线方程:,8,3.2.1 DDA算法,直接求交算法:划分区间x,x1:计算纵坐标:取整:复杂度:乘法+加法+取整,图3-2-2,9,3.2.1 DDA算法,DDA算法(增量算法)复杂度:加法+取整算法,图3-2-3,1
3、0,3.2.1 DDA算法,DDA算法程序:void LineDDA(int x0,int y0,int x1,int y1,int color)/*假定x0 x1,-1=k=1*/int x,y;float dx,dy,k;dx=float(x1-x0);dy=float(y1-y0);k=dy/dx;y=y0;for(x=x0;x=x1,x+)Putpixel(x,int(y+0.5),color);y+=k;,11,3.2.1 DDA算法,举例:用DDA方法扫描转换连接两点P0(0,0)和P1(5,2)的直线段x int(y+0.5)y+0.50 0 01 0 0.4+0.52 1 0.
4、8+0.53 1 1.2+0.54 2 1.6+0.5,图3-2-4,12,3.2.1 DDA算法,特点1 注意上述分析的算法仅适用于|k|1的情形。在这种情况下,x每增加1,y最多增加1。当|k|1时,必须把x,y地位互换,y每增加1,x相应增加1/k。特点2 在这个算法中,y与k必须用浮点数表示,而且每一步都要对y进行四舍五入后取整。这使得它不利于硬件实现。,13,3.2.1 DDA算法,改进算法(增量DDA)优化点:增加斜率判断并改变循环参数,14,算法,DDA画线算法程序(改进)void LineDDA(int x0,int y0,int x1,int y1,int color)int
5、 x,y;float dx,dy,k,l,m;dx=float(x1-x0);dy=float(y1-y0);k=dy/dx;if(abs(k)x1怎么办?,15,3.2.2 画线中点算法,目标:消除DDA算法中的浮点运算(浮点数取整运算,不利于硬件实现;DDA算法,效率低)条件:同DDA算法斜 率:直线段的隐式方程((x0,y0)(x1,y1)两端点)F(x,y)=ax+by+c=0 式中 a=y0-y1,b=x1-x0,c=x0y1-x1y0,16,基本原理:画直线段的过程中,当前象素点为(xp,yp),一个象素点有两种可选择点p1(xp+1,yp)或p2(xp+1,yp+1)。若M=(x
6、p+1,yp+0.5)为p1与p2之中点,Q为理想直线与x=xp+1垂线的交点。当M在Q的下方,则P2 应为下一个象素点;M在Q的上方,应取P1 为下一点。,图3-2-5,17,3.2.2 画线中点算法,3.2.2 画线中点算法,点与直线的关系:on:F(x,y)=0;up:F(x,y)0;down:F(x,y)0;,图3-2-6,直线的正负划分性,18,3.2.2 画线中点算法,欲判断中M在Q点的上方还是下方,只要把M代F(x,y)并 判断它的符号。构造判别式:d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c 当d0,M在Q点上方,取P1为下一个象素;当d=
7、0,选P1或P2均可,约定取P1为下一个象素,19,问题:判断距直线最近的下一个象素点 构造判别式:d=F(M)=F(xp+1,yp+0.5)由d0,d0可判定下一个象素,,P,P2,P1,图3-2-7,20,3.2.2 画线中点算法,要判定再下一个象素,分两种情形考虑:1)若d0,取正右方象素P1,再下一个象素判定,由 d1=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)+c=d+a,d的增量 是a 2)若d0,取右上方象素P2,再下一个象素,由:d2=F(xp+2,yp+1.5)=d+a+b d的增量为a+b,P2,P,P1,图3-2-8,21,3.2.2 画线中点算法,
8、d的初始值d0=F(x0+1,y0+0.5)=F(z0,y0)+a+0.5*b因(x0,y0)在直线上,F(x0,y0)=0,所以,d0=a+0.5*b d的增量都是整数,只有初始值包含小数,可以用2d代替d,2a改写成a+a。算法中只有整数变量,不含乘除法,可用硬件实现。,22,3.2.2 画线中点算法,中点算法程序 MidPointLine(x0,y0,x1,y1,color)int x0,y0,x1,y1,color;int a,b,d1,d2,x,y;a=y0-y1;b=x1 x0;d=2*a+b;d1=2*a;d2=2*(a+b);x=x0;y=y0;PutPixel(x,y,col
9、or);while(xx1)if(d0)x+;y+;d+=d2;else x+;d+=d1;PutPixel(x,y,color);,23,3.2.2 画线中点算法,举例 用中点画线方法扫描转换连接两点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)=6 x y d 0 0 1 1 0-3 d1 2 1 3 d2 3 1-1 d1 4 2 5 d2 5 2 1,图3-2-9,24,3.2.2 画线中点算法,3.2.3 画线Bresenham算法,Bresenham算法是计算机图形学领域使用最广泛的直
10、线扫描转换算法。该方法类似于中点法,由误差项符号决定下一个象素取右边点还是右上点。算法原理如下:过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列象素中与此交点最近的象素。该算法的巧妙之处在于采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求象素。,25,如下图所示。设直线方程为,其中k=dy/dx。假设x列的象素已经确定为xi,其行坐标为yi。那么下一个象素的列坐标为xi1,而行坐标要么不变为yi,要么递增1为yi1。,图3-2-10,26,3.2.3 画线Bresenham算法,是否增1取决于如图所示误差项d的
11、值。因为直线的起始点在象素中心,所以误差项d的初值d00。x下标每增加1,d的值相应递增直线的斜率值k,即ddk。一旦d1,就把它减去1,这样保证d在0和1之间。当d0.5时,直线与xi1列垂直网格交点最接近于当前象素(xi,yi)的右上方象素(xi 1,yi 1);而当d0.5时,更接近于右方象素(xi 1,yi)。,图3-2-10,27,3.2.3 画线Bresenham算法,为方便计算,令ed0.5,e的初值为0.5,增量为k。当e0时,取当前象素(xi,yi)的右上方象素(xi1,yi1);而当e0时,更接近于右方象素(xi1,yi)。,28,3.2.3 画线Bresenham算法,B
12、resenham画线算法程序 void Bresenhamline(int x0,int y0,int x1,int y1,int color)int x,y,dx,dy;float k,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;,29,3.2.3 画线Bresenham算法,举例:用Bresenham方法扫描转换连接两点P0(0,0)和P1(5,2)的直线段。x y e0 0-0.51 0-0.1 0.3-12 1-0.73 1-0.3 0.1-14 2-0.95 2-0.5,图3-2-11,30,3.
13、2.3 画线Bresenham算法,上述bresenham算法在计算直线斜率与误差项时用到小数与除法。可以改用整数以避免除法。由于算法中只用到误差项的符号,因此可作如下替换:e=e*2dx改进的Bresenham画线算法程序:void InterBresenhamline(int x0,int y0,int x1,int y1,int color)dx=x1-x0;dy=y1-y0;e=-dx;x=x0;y=y0;for(i=0;i=0)y+;e=e-2*dx;,31,3.2.3 画线Bresenham算法,3.3圆弧的扫描转换,处理对象:圆心在原点的圆弧圆的八对称性,图3-3-1,32,两种
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 图形 元素 生成 算法

链接地址:https://www.31ppt.com/p-6333333.html