基于自适应步长的直线生成算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ISSN 1000-0054CN 11-2223/N
清华大学学报(自然科学版)J T singh ua Un iv (Sci &Tech ),2006年第46卷第10期
2006,V o l.46,N o.1021/40
1719-1722
基于自适应步长的直线生成算法
黄斌茂, 张 利
(清华大学电子工程系,北京100084)
收稿日期:2005-07-13
基金项目:国家自然科学基金资助项目(60172027)作者简介:黄斌茂(1981-),男(汉),江西,硕士研究生。通讯联系人:张利,副教授,
E-mail:chin azh angli@mail.tsingh
摘 要:为了改进计算机图形学中画线算法的效率,提出一种基于自适应步长的直线生成算法和一种集成了对称性、最大公约数和自适应步长的集成算法。由于直线仅包含一种或两种与斜率有关的像素模式,算法利用这一特性,自适应地采用最佳步长,在单次判决中生成多个像素。通过综合使用直线像素的中点对称性、最大公约数性质以及像素模式的有限性等3种相互独立的特性,集成算法在单次判决中可生成更多像素。算法的仿真结果表明:新算法生成直线的效率更高、速度更快。
关键词:Bresenham 算法;自适应步长;对称性;最大公约
数;像素模式
中图分类号:T P 391.4文献标识码:A
文章编号:1000-0054(2006)10-1719-04
Self -adaptive step straight -line algorithms
HUA NG Binmao ,ZH ANG Li
(Department of Electronic Engineering ,
T s inghua University ,Beij ing 100084,China )
Abstract :Line draw ing algorithm in computer grap hics sys tems is improved w ith a self-adaptive s tep straight-line algor ith m and an oth er integrated algorithm th at combines self-adaptive step algorithm w ith th e s ymmetr y an d greatest com mon divisor (GCD)-based algor ith ms.Th e self-adaptive step algorithm uses the limited pixel patter ns inherent in line s egments to adaptively determine the best step that corres ponds to the line slope an d then gen erates m ulti-pixels in each judgemen t.T he integrated algorithm utilizes the sym metry,GCD,an d limited pixel patterns and gen erates more p ixels in each parisons w ith Bresen ham 's algorithm sh ow th at the integrated algorithms are m ore effective and efficient.
Key words :Bresen ham's algorithm ;self-adaptive steps;s ymmetr y;
greatest common divisor (GCD);pixel patter n
直线段(简称直线)是图形的基本单元,图形渲染的速度很大程度上取决于直线的生成速度。
Br esenham 算法[1]
是目前使用最为广泛的直线生成算法,它采用整数加减运算,避免了浮点数操作和乘除运算,从而极大地提高了算法的效率。在该算法的
基础上,研究界提出了多种改进算法。其改进思路可分为两类:1)将直线分割成多条短线段,采用并行算法生成直线[2]
;2)通过一次误差判别操作,在一次循环中生成多个像素[312]。
直线上的像素点关于直线中点对称,文[5]利用这一特性,每个循环生成两个像素点。
对端点为S (x s ,y s )及E (x e ,y e )的直线,当 x e -x s 和 y e -y s 的最大公约数r 不为1时,直线上有r 段像素模式相同的线段。文[4]通过在每个循环内生成r 个像素,加速了直线的生成。但当r =1时,该算法比Brensenham 算法效率要低。文[68]采用N 步长(N ≥2)直线生成方法,将八分圆分成多个子区,每个子区有N +1种像素模式,根据直线的斜率可决定其子区归属。该算法每个循环可生成N 个像素。其不足是:每个子区中的N +1种像素模式的初始化开销很大;步长固定,不能采用最佳步长。还有一些研究者结合对称性、多步长、最大公约数提出集成算法[9]。
文[10]简要地提出自适应步长的思想,但未给出推导证明与具体算法;文[11,12]在直线斜率为0< m <0.5时,一次生成多个像素以提高直线的生成效率,但没有注意到直线像素模式关于m =±0.5的对称性。此外,文[11,12]都没有给出算法的仿真结果。
上述各种改进算法的共同点是在每个循环中生成多个像素,但每次生成的像素个数固定,不能自适应地采用最合适的步长。本文利用直线在八分圆中像素模式的对称性,以及任一直线只有一种或者两种与斜率相关的像素模式这一特性,提出一种基于
自适应步长的直线生成算法,并进一步集成基于对称性及基于GCD 的直线生成算法,给出一种更高效的集成算法。
1 自适应步长直线生成算法
本文将“直线”约定如下:起点为S (x s ,y s ),终点为E (x e ,y e ),斜率为m 。并使用D 、X 表示相邻像素(x i ,y i )和(x i +1,y i +1)处于对角位置或水平位置。误差判别项为p ,所需的条件测试数为t ,更新p 所需的操作数为i ,更新x 、y 所需的加减法操作数为a 。整数的加减操作、条件测试、累加操作都分别占用一个单位的运行时间,衡量算法性能的指标TEP(theor etical ev aluation perform ance)[10]
可这样
计算:TEP =t +a +i 。
直线斜率m 存在4种一般情况:-∞ -1,-1 1.1 直线的一些性质 对起点为S (x s ,y s )、终点为E (x e ,y e )的直线 L 1,通过将L 1的起点S (x s ,y s )平移为S 1 (0,0),可得到起点为S 1(0,0)、终点为E 1 (P ,Q )的直线L 0(其中P =x e -x s ,Q =y e -y s )。 性质1 当0 1DX n 2D …DX n Q +1 ; 2) i ∈N ,且1≤i ≤Q +1,n i 满足n i ∈N ,n i >0,且当2≤i ≤Q ,n i ∈{A ,A -1},其中A =1/m ; 3)n 1、n Q +1满足n 1=n Q +1=1/2m ; 4)m =Q Q + ∑Q +1 i =1 n i . 证明 初始化x =0、y =0、x end =P ,误差判别项p =m ;p 代表点C (理想直线与网格线的交点)与栅格点B 之间的差值。显然,若p <0.5,像素点B 比A 的误差要小,反之则应该使用像素点 A 逼近理想直线(按图1的情况,应该使用像素A )。 图1 中点判决准则 由此可得生成直线像素时的判决准则和误差判别项p 的更新方式为: if(p <0.5){p =p +m ;下一个像素相对位置为X ;}else {p =p -1;下一个像素相对位置为D ;}1)假设存在两个连续的D ,不妨设它们位于X n i 之后,设决定第n i 个X 的误差项为p i (-0.5≤p i <0.5);由假设,更新之后有p i +1=p i +m 且0.5≤p i +1<1,p i +2=p i -1+2m 且0.5≤p i +2<1。 由于0 2)假设存在i (2≤i ≤Q )使得n i 有其他取值,即n i A 。设决定n i 个X 之前的D 的误差项为p (0.5≤p <1且p -m <0.5)。由此可知:决定第n i 个X 的误差项为:p ′=p +n i m -1(-0.5≤p ′<0.5),决定第n i 个X 之后的D 的误差判别项为p ″=p +(n i +1)m -1(0.5≤p ″<0.5+m )。由于A =1/m ,因而1-m A 时,n i m ≥(A +1)m >1,由此可得:p ′≥0.5,矛盾!当n i 线L 0可表示为:L 0=X n 1DX n 2D …DX n Q +1。 3)由于直线关于中点对称,易得n 1=n Q 。 对于X n 1D ,假设决定D 的误差判别项为p ,此时p =(n 1+1)m ,且有0.5≤p <0.5+m ,由此可得 n 1=n Q =1/2m . 4)由L 0的表达式易得,证明过程略。图2显示了起点为S (0,0)、终点为E (14,3)的直线L 0的像素模式。该直线可表达为X 2 DX 3 DX 4 DX 2 。由性质1易得:A =14/3=4,n 1=n 4=14/6=2。由图可见:除去端点处的两小段像素X 2,该直线中存在的两种像素模式为DX 3和DX 4。由于篇幅限制,只能示意短直线的像素模式,对于稍长的直线,像素模式的有限性和重复性将更加明显。 图2 直线像素模式示意图 性质2 位于同一个八分圆中的直线关于m = 1720 清华大学学报(自然科学版)2006,46(10)