三次B样条曲线插补算法的VC实现 下载本文

内容发布更新时间 : 2024/5/13 8:51:47星期一 下面是文章的全部内容请认真阅读。

三次B样条曲线插补算法的VC实现

孔凡国,郝尚华,钟廷志

(五邑大学 机电系,广东 江门 529020)

摘要:结合三次B样条曲线的数学性质,理论分析了三次B样条曲线的插补过程,推

导出了三次B样条曲线的插补运算公式。在对三次B样条曲线进行研究的基础上,介绍三次B样条曲线插补算法实现方法,并在VC环境中对B样条曲线的插补过程进行了实现,实现了数控插补的动态运算。

关键词:三次B样条;插补;VC

VC Implement of the Cubic B-spline curve

Interpolation

KONG Fan-guo,HAO Shang-hua,ZHONG Ting-zhi

(Department of Mechatronics,Wuyi University,Jiangmen 529020,China)

Abstract:Combined with mathematics characters of the cubic B-spline curve, the interpolation process of the cubic B-spline curve is analyzed and calculation interpolation formula is deduced. Finally the cubic B-spline curve interpolation operator is programmed under the platform of VC to realize dynamic simulation.

Keyword:cubic B-spline;interpolation;VC

在数控加工中用一小段直线或圆弧去拟合实际曲线,这种拟合方法就是“插补”。 它实质上是根据有限的信息完成“数据密化”的工作。插补的计算方法和计算精度影响到整个数控系统的精度和效率,因此插补算法对整个数控系统的性能指标至关重要,可以说插补是整个数控系统控制软件的核心。 1 三次B样条曲线插补原理

B样条曲线是对Bezier曲线的改进,它不仅保留了Bezier曲线的优点,而且具有局部控制的能力,B样条曲线方程可为:

给定n+1个控制点Pi(i=0,1,??,n),也称为特征多边形的顶点,k次(k+1阶)B样条曲线的表达式是:

P(u)??PNii?0ni,k(u) 1?k?n (1)

在上式中当k=3,i=0,1,2,3时,可得三次B样条曲线方程是: P(u)??PNii?03i,3(u) 0?u?1 (2)

用矩阵形式可表示为:

P(u)?132?uu6???13?3?3?63?u1?? ??303??1411??P0??P?0?? ?1? 0?u?1 (3) 0??P2????0??P3?u为由样条控制点确定的可变系数。

本文采用参数化数据采样插补原理来实现插补过程,其基本思想是:按照给定的采样周期将时间轴分成等间隔的小区间。插补过程中根据进给速度、加减速要求和允许误差,在各采样周期产生空间小直线段?L1、?L2、?、?Li、?去逼近被插补曲线,逐步求得所需的各插补直线段端点P1、P2、?、 Pi、?的坐标值。

根据插补的思想可以知道,插补过程实际上是通过参变量u作为直接控制量,从而求得插补点的坐标位置及插补点沿插补轨迹的移动速度等被控量的过程。 2 三次B样条曲线插补算法设计

在插补过程的每一采样周期中,首先根据进给速度要求和允许误差求出轨迹空间中的插补直线段,然后将此直线段映射到参变量空间,得到与其相对应的参变量空间中的小直线段,即参变量的增量值。进一步通过对参变量的积分求出参变量空间中的当前点坐标。最后,求取与参变量空间中当前点相对应的轨迹空间中的映射点,得到插补轨迹上的当前点的坐标值。

由于三次B样条曲线的各坐标分量均为参数u的函数可以直接计算。在每个插补周期T内,有相等的微小增量?u,即参数u的增量步长恒定,然后由公式计算得下一个插补点。这种插补算法虽然计算简单,速度快,但其存在插补速度不恒速等缺点。

要使得样条插补在轨迹空间内匀速,就必须要根据编程进给速度来确定一个插补周期内的轮廓步长,然后将此参数映射到参数空间中,得到与其相对应的参数空间内的增量?u。

设V是样条曲线的切线速度矢量:

V?dP(u)dP(u)du?? dtdudt设V是样条曲线的编程进给速度,则: V?V?dP(u)du? 可得: dudt

duV? dP(u)dtdu2?dP(u)d2P(u)?V????dudu2?d2u? 2?? 4dtdP(u)du设控制系统的插补周期为T,ti?1?ti?T,u是关于t的函数,令u(ti)?ui,

u(ti?1)?ui?1,用泰勒级数将u(ti?1)在ti展开可得:

du1d2u22ui?1?ui?(ti?1?ti)?(t?t)?o(?t) i?1i2dtt?ti2dtt?ti所以,插补递推公式的一阶近似为:

ui?1?ui?V?T (4)

dP(u)duu?ui二阶近似为:

ui?1?ui?V?TdP(u)duu?ui?dP(u)d2P(u)?V?T???dudu2?? (5) ?4dP(u)2?du22由于现在的数控系统插补周期T一般都很小,在曲线半径不太小的情况下,一阶近似迭代求解已经可以满足精度要求。如果曲线曲率半径很小,便要采用二阶近似。

由于每个插补周期内的参数增量:

?ui?V?T (6)

dPi(u)duu?ui是由编程进给速度和插补周期决定,在每一个插补周期中生成的轨迹空间的弦长是不变的,所以进给速度是不变的。 3 程序流程

根据上文的理论分析及公式推导,可按照图1所示的流程设计程序。