基本图形生成算法直线圆弧优秀课件.ppt
《基本图形生成算法直线圆弧优秀课件.ppt》由会员分享,可在线阅读,更多相关《基本图形生成算法直线圆弧优秀课件.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基本图形生成算法直线圆弧第1页,本讲稿共58页 通常认为,基本二维图形包括点、直线、圆、椭圆、多边形域和字符串等。复杂曲线及各种复杂图形均可由直线段和圆弧来拟合,因此研究直线和圆弧的生成算法是二维图形生成技术的基础。第2页,本讲稿共58页在光栅显示器生成一个对象,实质上是往帧缓冲区的相应单元中写入数据;如画一条直线,实质上是发现最佳逼近直线的像素序列、并填入相应颜色的过程,这个过程称为直线的光栅化,或者称为直线的扫描转换。第3页,本讲稿共58页“发现最佳逼近直线的像素序列发现最佳逼近直线的像素序列”就是发现直线生成的算法就是发现直线生成的算法。不同的算法有不同的效率,但各种算法的。不同的算法有
2、不同的效率,但各种算法的核心都是围绕着核心都是围绕着判别和生成判别和生成x、y增量的过程和方法(走笔规则)增量的过程和方法(走笔规则)展开研究的。展开研究的。第4页,本讲稿共58页通常从以下四方面评价直线扫描转换算法的质量:一、显示像素点应尽量靠近理想直线,直线要直,走样小;二、直线端点准确,且绘制无定向性,即以哪一个端点为绘制起点得到的线段应重合;三、直线的亮度和色泽要均匀,避免造成视觉上一段亮一段暗的感觉。这通过所绘制的像素点密度保持均匀来实现;四、画线速度尽可能快,即算法效率要高。第5页,本讲稿共58页直线的扫描转换常用的直线生成算法有逐点比较法、正负法、数值微分法和Bresenham算
3、法等。简介逐点比较法详细介绍数值微分法和Bresenham算法。第6页,本讲稿共58页算法的判断规则算法的判断规则在绘图过程中,画笔每走一步,就要与理想图在绘图过程中,画笔每走一步,就要与理想图形进行比较,然后决定下一步的走向,用步步逼近的方法画出指定形进行比较,然后决定下一步的走向,用步步逼近的方法画出指定起止点间的直线段。起止点间的直线段。直线的扫描转换直线的扫描转换逐点比较法逐点比较法第7页,本讲稿共58页走笔约定走笔约定以第一象限为例。以第一象限为例。当画笔(光标当前位置)位于当画笔(光标当前位置)位于理想直线上方,则横向走笔,理想直线上方,则横向走笔,即画笔沿即画笔沿x x方向移动一
4、个单位;方向移动一个单位;当画笔位于理想直线下方时,当画笔位于理想直线下方时,则纵向走笔,即画笔沿则纵向走笔,即画笔沿y y方向方向移动一个单位。移动一个单位。直线的扫描转换直线的扫描转换逐点比较法逐点比较法第8页,本讲稿共58页要确定画线时光标移动的方向,必须要知道当前光标点与理想直线的位置关系。位置关系通过坐标的偏差来决定。以第一象限为例分析逐点比较法的偏差计算过程。直线的扫描转换直线的扫描转换逐点比较法逐点比较法第9页,本讲稿共58页设要绘制的直线为OA(即理想直线),当前点为M,当前点与理想直线的相对位置(即点M在OA的上方或下方)用偏差值 的正负来判断。的计算公式为:直线的扫描转换直
5、线的扫描转换逐点比较法逐点比较法tan函数在是单调递增函数,因此 的正负体现b 和a 的大小。第10页,本讲稿共58页偏差与走笔的关系分析:当 0时,角b a,点M在理想直线下方,按约定,画笔应向上(+y)走一步;当P0时,角bPa,点M在理想直线上方或在直线上,按约定,画笔应向右(+x)走一步。直线的扫描转换直线的扫描转换逐点比较法逐点比较法第11页,本讲稿共58页从计算偏差值的公式可知,分子的正负决定 的正负,因此将公式简化如下:直线的扫描转换直线的扫描转换逐点比较法逐点比较法第12页,本讲稿共58页设当前位置为Mi(xi,yi),则计算偏差的函数为从偏差函数可知,光标每移动一个点,就要与
6、理想直线的终点坐标进行计算、比较,然后确定下一步走笔的方向和步长的增量,这样绘制直线效率必然会很低,因此要对偏差函数进行简化。有效的方法是利用前一个点的偏差来推算下一个点的偏差值,这种方法称为递推法。直线的扫描转换直线的扫描转换逐点比较法逐点比较法第13页,本讲稿共58页例如已知前一个点的偏差值FiP0,说明点在理想直线的上方,画笔应该沿+x方向移动一个步长;反之,则应该沿+y向移动一个步长。开始绘制直线时,光标位于理想直线的起点,因此始终有F0=0。直线的扫描转换直线的扫描转换逐点比较法逐点比较法第14页,本讲稿共58页u 若FiP0,表示第i点在直线上方,则有xi+1 xi1(其中1为步长
7、)yi+1 yi,第i+1点的偏差判别式为:将递推法用数学的方法表示为:设当前位置为Mi(xi,yi),下一个点位置为Mi+1(xi+1,yi+1)直线的扫描转换直线的扫描转换逐点比较法逐点比较法求偏差的基本公式:第15页,本讲稿共58页将递推法用数学的方法表示为:u 若Fi0,表示第i点在直线下方,则有xi+1 xi yi+1 yi 1(其中1为步长),即第i+1点的偏差判别式为:直线的扫描转换直线的扫描转换逐点比较法逐点比较法求偏差的基本公式:第16页,本讲稿共58页直线段位置偏差值FkP0偏差值Fk0第一象限走笔+XFk+1=Fk-|yA|走笔+YFk+1=Fk+|xA|第三象限走笔-X
8、走笔-Y第二象限走笔+YFk+1=Fk-|xA|走笔-XFk+1=Fk+|yA|第四象限走笔-Y走笔+X各象限的判别式直线的扫描转换直线的扫描转换逐点比较法逐点比较法逐点比较法绘制直线.doc第17页,本讲稿共58页【注】递推公式的作用:意义:简化计算过程,提高效率。原则:尽可能以加减法代替乘除法。方法:用当前点的偏差推算出走笔方向,并计算出下一步的偏差;再以画笔的当前位置重复上述过程,推算出画笔下一步的动作。第18页,本讲稿共58页数值微分法(Digital Differential Analyzer)简称DDA法,利用直线的微分方程生成直线的方法。设直线的端点坐标为(X0,Y0)和(X1,
9、Y1),直线的参数方程为:直线的扫描转换直线的扫描转换数值微分法数值微分法第19页,本讲稿共58页直线的扫描转换直线的扫描转换数值微分法数值微分法DDA算法的原理:由于直线的一阶导数是连续的,且x和y是成比例的,因此可以通过在当前位置(xi,yi)分别加上两个小增量 Hx 和 H y(其中为无穷小的正数)来求出下一个点(xi+1,yi+1)的坐标。式中,式中,i=0,1,2 ,n-1,第20页,本讲稿共58页直线的扫描转换直线的扫描转换数值微分法数值微分法当精度无限高的情况下,绘制出的直线无限接近理想直线。这种理想情况不可能出现(因为设备的精度有限)也没必要追求,因此通常增量系数的取值为:第2
10、1页,本讲稿共58页绘制直线时,要确定一个方向的增量为单位增量,即确定画线的基本步进方向,另一个方向的增量由直线的斜率决定。确定基本步进方向的依据是理想直线的斜率k。通常设:当直线斜率小于或等于1,x方向为基本步进方向,即x=1,y的值由直线的斜率决定。当直线斜率大于1,y为基本步进方向,即y=1,x的值由直线的斜率决定。直线的扫描转换直线的扫描转换数值微分法数值微分法第22页,本讲稿共58页DDA算法的坐标迭代公式:情况一:当 ,即 时,有:直线的扫描转换直线的扫描转换数值微分法数值微分法第23页,本讲稿共58页情况二:当 ,即 时,有:直线的扫描转换直线的扫描转换数值微分法数值微分法第24
11、页,本讲稿共58页直线的扫描转换直线的扫描转换数值微分法数值微分法需要注意的是:由于在光栅化过程中,绘制点的最小单位是1,因此对求出的xi+1和yi+1的值需要进行四舍五入。DDA算法是一种增量算法,优点是直观、易于实现;缺点是要做浮点运算和舍入取整,不利于硬件实现。第25页,本讲稿共58页直线的扫描转换直线的扫描转换数值微分法数值微分法斜率1时,以y为基本步进方向,y方向每次步进增量为1。第26页,本讲稿共58页直线的扫描转换直线的扫描转换数值微分法数值微分法void dda_line(float x0,float y0,float x1,float y1)int i,epsl;float
12、xincre,yincre,x,y;epsl=max(abs(x1-x0),abs(y1-y0);xincre=(x1-x0)/epsl;yincre=(y1-y0)/epsl;x=x0;y=y0;for(i=1;i=epsl;i+)drawPoint(int(x+0.5),int(y+0.5);/四舍五入取整 x=x+xincre;y=y+yincre;第27页,本讲稿共58页直线的扫描转换直线的扫描转换Bresenham算法算法Bresenham提出的直线生成算法基本原理为:在某一计长方向上,每次变化一个单位步长或一个象素单位,另一个方向上是否走步取决于误差项。计长方向由直线的斜率k决定。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 图形 生成 算法 直线 圆弧 优秀 课件
限制150内