资源描述:
《一种快速圆弧绘制算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、程锦等:一种快速圆弧绘制算法2279一种快速圆弧绘制算法á收稿日期:2001-05-15;修改日期:2001-06-26基金项目:国家自然科学基金资助项目(69878038);国家863高科技发展计划资助项目(863-511-9842-006);浙江省自然科学基金资助项目(696045)作者简介:程锦(1978-),女,浙江永康人,博士生,主要研究领域为计算机辅助设计,计算机图形学;陆国栋(1963-),男,浙江东阳人,博士,教授,主要研究领域为计算机图形学,计算机辅助设计;谭建荣(1954-),男,浙江湖州人,博士,教授,博士生导师,
2、主要研究领域为产品信息建模,计算机辅助设计,计算机图形学.程锦,陆国栋,谭建荣(浙江大学CAD&CG国家重点实验室,浙江杭州310027)E-mail:chengjin_zju@sohu.comhttp://www.cad.zju.edu.cn摘要:提出一种圆弧绘制算法.与传统的基于单个像素点的圆弧绘制算法不同,新算法每执行一次输出操作均可生成两个或多个像素点.该算法将圆弧离散轨迹看成是由一系列水平位移和对角位移构成,逐段找出并绘制这些位移,从而减少了圆弧绘制过程中所需的输出操作,有效地提高了圆弧绘制速度.实验结果表明,新算法与著名的B
3、resenham算法相比,圆弧绘制速度提高近一倍.进一步地,新算法可以推广到其他二次曲线的绘制中.关键词:圆弧绘制;Bresenham算法;离散轨迹;水平位移;对角位移中图法分类号:TP391文献标识码:A圆弧是组成图形最基本的元素之一.圆弧生成算法的优劣对整个图形系统的效率和质量有着直接而重要的影响.由于目前人们所采用的显示器多为光栅扫描显示器,所以对圆弧绘制算法的研究也主要集中在选择距离实际圆弧最近的光栅点的整数型算法上.假定圆弧的圆心在坐标原点,圆弧半径为整数,由于圆的对称性,我们只需研究第2个八分区中圆弧的绘制,而其他7个八分区
4、的圆弧可由对称性获得.Bresenham算法[1,2]和中点法[3,4]的每步x坐标增1,y坐标则根据决策参数的符号来决定是否减1.通过引入决策参数,这两种算法在生成圆弧的过程中,除初始化时要进行乘法运算外,都只需进行简单的整数加减法运算和移位操作,因而具有较快的圆弧绘制速度.Bresenham法和中点法每次循环只生成一个点,Wu和Rokne提出的两步画圆法[5]则可使每次循环生成两个点.该法每次循环前进两步,利用非参数曲线f(x,y)=0在光栅显示器上的离散轨迹所具有的性质,中间一点无须数学运算便可生成.两步法使得绘制圆弧所需的数学运
5、算量减少了一半,但与此同时,生成圆弧所需的逻辑操作数目却大大增加了.实验结果表明,两步法并不能获得比单步法更快的绘制速度.上述各种圆弧绘制算法每走一步生成一个或两个像素点,即所有像素点都是用画点命令逐个生成并显示的,我们称其为基于单个像素点的圆弧绘制算法.为了进一步提高圆弧绘制速度,Hsu,Chow和Liu等人提出了一个基于水平直线段的圆弧扫描转换算法[6],以下我们将其简称为HCL法.该算法基于以下事实:一段位于第2个八分区的45°圆弧的离散轨迹是由一系列具有相同y坐标的相邻像素点所构成的水平直线段组成的.如图1所示,为一段位于第2个
6、八分区的圆弧,其圆心在坐标原点,半径为15个像素单位,圆弧起点坐标为(0,15).HCL法将该圆弧看成由5条水平小直线段Li(i=1,2,…,5)构成,这些直线段所具有的像素点数目依次为4、3、2、1、1,该法逐段找出这些水平直线段并用画线命令进行绘制.对于前3条水平直线段L1,L2和L3,由于它们所具有的像素点数目不小于2,故一次画线可以生成至少两个点,确实能够减少输出操作所需的执行时间.但对于L4和L5,由于这两条水平直线段已退化为单个像素点,HCL法却仍采用画线命令进行绘制,其绘制速度显然不如直接用画点命令输出单个像素点.这种退化
7、水平直线段的客观存在决定了该算法并不能使圆弧绘制速度得到明显提高.程锦等:一种快速圆弧绘制算法2279尤其是对于那些半径较小的圆弧,由于其离散轨迹中已退化的水平直线段所占的比例较大,用HCL法进行绘制所需的时间往往会超出用Bresenham法等基于单个像素点的圆弧绘制算法进行绘制所需的时间.本文通过对圆弧离散像素点的轨迹进行深入分析和研究,提出了一种快速圆弧绘制算法.该算法充分利用圆弧离散轨迹所具有的特性,先找出离散轨迹中各段水平位移与对角位移,然后用画线命令逐段进行绘制.新算法每执行一次输出操作都可以生成两个或两个以上的像素点,极大地
8、减少了圆弧绘制过程中所需的输出操作,从而显著地提高了圆弧生成速度.1水平位移与对角位移15101510L1L2L3L4L5Ld1Ld2我们将如图1所示位于第2个八分区的圆弧在光栅显示器上的离散轨迹看成由两条