当前位置:文档之家› 空间直线生成的双步算法

空间直线生成的双步算法

空间直线生成的双步算法

摘 要: 将二维直线生成的双步算法推广到三维空间,得到三维直线生成的双步算法。该算法与传统的三维直线生成算法相比,效率更高,精度较好,可用于三维图形图像的处理以及数控加工的空间直线插补。关键词: 三维直线 双步直线算法
在物体的真实感显示(消隐线、消隐面和光线追踪技术等)、医学图像的三维重建(体元素绘制)、计算机视觉以及立体几何造型等多种三维图形图像技术中,空间直线算法是最常用的算法。在数控加工、快速成型等系统中空间直线生成算法也是直线插补算法的数学基础。因此研究直线生成算法很有意义。一般三维直线的生成采用直接计算的方法来计算其上的点,或者采用DDA方法[1][2]来完成。这2种方法计算量都相对较大,精度不高。文献[2][3]中将Bresenham二维直线算法推广到三维,得到一种效率较高、精度较好的空间直线生成算法。本文将双步直线生成算法推广到三维,获得了更为高效的空间直线生成算法,精度也得到保证。本文将从双步直线生成算法介绍、双步三维直线生成算法、算法分析和结论4个部分进行介绍。1 双步直线生成算法 双步直线算法[5]是一种高效算法。该算法每步能够算出直线上相邻2点的坐标,而传统算法一步只能得到一点的坐标。 直线生成算法是一种插值算法,其本质是寻找计算区间[a,b]上的n+1个整数点的坐标(n、a、b都是整数)的合适方法,这些插值点的坐标如下。
其中floor函数表示取不大于该数的最大整数。 对于这n+1个点的计算,双步算法的基本思想是:每步首先计算判别式Dj,而后根据Dj的大小选定计算相邻2点坐标的公式,进而算出相邻2点的坐标。具体公式如下:

在上面的递推公式中计算Dj和点坐标的增量都是常量,判定条件中使用的判别值也是常量,因此计算并不复杂。根据一个判别式Dj可以算出2个点(相邻奇偶点)的坐标,与Bresenham算法相比,显然效率更高。2 双步空间直线生成算法 设空间直线的起点坐标为(xs,ys,zs),终点坐标为(xe,ye,ze),这2点的坐标值均为整数。令xe-xs为xe-xs、ye-ys和ze-zs中最大的值,空间直线的插值点数取为n+1=xe-xs+1,该直线在xy、xz平面上的投影是平面直线。对它们分别使用二维双步算法,则可得到该空间直线插值点的y、z坐标。 插值点的y坐标为:

空间直线的x坐标因为是单步长增加,所以其计算公式很简单:
(1)~(7)式即是计算三维直线点的双步算法,可以分别计算空间直线插值点的x、y、z坐标。该算法中每个计

算步执行如下动作:(1)x坐标单位长增加2次得到2个相邻奇偶点的x坐标。(2)将前一步的DY、DZ值增加一个常量,得到当前步的DY、DZ值。(3)根据当前步的DY、DZ值,按照式(1)、(4)计算相邻奇偶点的y、z坐标值。整个计算将以上3个步骤循环floor(n/2)次。3 算法分析 假设直线上真实点的坐标为(x,y,z),对应插值点的坐标为(x′,y′,z′),则该算法理论上对于x坐标误差为0,而y、z坐标的最大误差不超过0.5,所以插值点和真实点的距离误差:
因此真实直线和插值点之间的距离肯定不会比这个值大,理论误差不超过0.707。该方法比DDA方法精度要高,与三维Bresenham算法精度相同。 在计算量最大的情况下,该算法中每个计算步进行8次加法,总共需要floor(n/2)个计算步,总的计算量为4n次加法;而三维Bresenham算法则总共需要5n次加法。因此,前者比后者效率要高。与空间直线生成的DDA方法相比效率则更高。 在算法实施中,应使用坐标分量变化缓慢的坐标轴为单位增长,即使用起始点坐标分量差别最大的坐标轴为单位增长。只有这样才能达到同样算法下的最高精度。4 结 论 本文将二维直线双步生成算法推广到三维,得到了空间直线生成的双步算法。该算法只使用整数运算,并且除了初始参数的计算外并不使用乘、除法运算,因此计算效率很高,总的计算量不大于4n次加法。该算法优于三维Bresenham算法,当然也优于一般空间直线的DDA算法。它可用于三维图形图像的处理以及数控加工、快速成型等方面。

相关主题
文本预览
相关文档 最新文档