APP下载

一种基于de Casteljau算法的Bezier曲线插补方法

2017-07-06宋健桑运晓刘同壮

山东工业技术 2017年12期

宋健+桑运晓+刘同壮

摘 要:为了克服数据采样法插补Bezier曲线必然会产生轨迹误差而且运算量大、实时性不好的问题,以Paul de Casteljau在1959年提出的de Casteljau算法为理论依据,研究出了一种用DDA直线插补器级联的方式递推出任意阶Bezier曲线的新方法。该方法用多个DDA直线插补器分级同时进行插补,前一级的输出脉冲用来修正相邻后一级的被积函数寄存器,最后一级输出用来驱动进给。最后用Visual Studio 2010编写了仿真程序进行了模拟插补,证实了其正确性。这个全新的加工Bezier曲线的方法更加准确、实时性更好,同时也为B样条、NURBS等曲线的加工提供了崭新的思路。

关键词:Bezier曲线;直接插补;de Casteljau算法;DDA法

DOI:10.16640/j.cnki.37-1222/t.2017.12.220

0 引言

目前的CNC系统,对于直线和圆弧可以采用脉冲增量插补原理直接进行插补。而对于Bezier曲线、样条曲线等的插补只能采用数据采样插补原理,先进行粗插补,然后再用脉冲增量插补法对微小的直线段进行精插补。数据采样法在原理上决定了其逼近的过程中肯定会产生轨迹误差,而且插补程序比较复杂。为了避免数据采样插补法所带来的问题,在de Casteljau算法的几何模型的启发下,提出了用DDA法递推插补出Bezier曲线的基本思想。

1 de Casteljau算法

de Casteljau算法最基本的过程就是在向量上取一个点C,使得C分向量为(即)。下文中称此过程为在某线段(这里为)上取Bezier点。给定端点A和B的坐标以及的值,点C的坐标便为:。

当Bezier曲线阶数大于等于2时,即可利用上述过程进行迭代,具体步骤如下。定义Bezier曲线的控制点编号为ij,其中i表示迭代次数,j表示每次迭代中的控制点序号。为了计算n阶贝塞尔曲线(控制点个数为n+1)上的点C(),,首先将控制点依次连接形成一条折线00-01-02-……-0(n-1)-0n。按上述过程,在构成折线的每条线段上取Bezier点,总共有n个,记为10、11、12、……、1(n-2)、1(n-1),然后再把这些点依次连成一条折线10-11-12-……-1(n-2)-1(n-1),再在此折线的每条线段上取Bezier点,总共有n-1个,以此类推。

2 利用DDA法对Bezier曲线进行直接插补

在上述de Casteljau算法的理论基础上,研究出了直接用直线插补迭代递推出Bezier曲线的方法。

2.1 二阶及以上Bezier曲线插补

由de Casteljau算法可知,二阶Bezier曲线上的点可以按如下方法获取:把控制点依次连成一条折线,在折线的每条线段上取Bezier点,再把两个Bezier点连起来,在此连线上取Bezier点即为二阶Bezier曲线上的点。要插补的线段是不断变化的,线段的起点和终点要根据前一级插补的驱动脉冲进行修正。在所有的线段上用同一个插补控制脉冲进行插补即可插补出任意阶Bezier曲线。

如图1所示为DDA法直接插补二阶Bezier曲线的原理框图:

图中和分别为三个控制点的横坐标和纵坐标,和为最终驱动相应坐标轴的进给脉冲,为插补迭代控制脉冲。此处,需要强调的是三个插补脉冲为同一个,每来一个脉冲,三个插补器同时进行插补,六个被积函数寄存器中的值都要送往相应的积分累加器中相加一次。第一级的两个插补器的溢出脉冲用来修正后一级插补器的被积函数寄存器的值。在第一级的第一个插补器中,当(或)时,(或)的溢出脉冲(或)为正,每输出一个脉冲,第二级插补器对应的起点坐标就加一,即;当(或)时,(或)的溢出脉冲(或)为负,每输出一个脉冲,第二级插补器对应的起点坐标就减一。同样,第一级的第二个插补器每输出一个脉冲,第二级插补器对应的终点坐标就加一或减一。第二级插补器的输出脉冲用来驱动进给。更高阶的Bezier曲线可以用上述同样的方法进行推广。

2.2 软件模拟

最后,按照上述原理用微软的托管C++语言——C++/CLI在Visual Studio 2010中编写了模拟插补程序,在屏幕上画线模拟机床的走刀路径符合我们预期的设计, 此方法基本可以控制刀具插补出理论轮廓。

3 结论

此方法创新性的把de Casteljau算法运用到数控机床的插补过程中,研究出了用DDA法迭代递推出Bezier曲线的理论,为Bezier曲线的加工提供了全新的、更加准确、实时性更好的方法,甚至也为B样条、NURBS等曲线的加工提供了崭新的思路。此类非圆曲线在实际中应用非常广泛,尤其是在复杂轮廓的零件中,几乎所有的专业建模软件都提供了此类曲线建模工具,因此该方法将会对数控加工技术产生重要的影响。

参考文献:

[1]SUH SH,KANG SK,CHUNG DH,et al.Theory and Design of CNC Systems[M].London:Springer-Verlag,2008:73-79.

[2]孫家广.计算机图形学3版[M].北京:清华大学出版社,1998: 301-326.

[3]Hearn D,Baker M P著,蔡士杰等译.Computer Graphics with OpenGL 3rd ed[M].北京:电子工业出版社,2005:355-372.

[4]Boehm M,Müller A.On de Casteljau's algorithm[J].Computer Aided Geometric Design,1999,16(07):587-605.

作者简介:宋健(1991-),男,安徽亳州人,硕士研究生,主要研究方向:计算机控制技术。