第三章 曲线拟合算法的研究3.1 引言随着航空、汽车等现代工业与计算机技术的发展,圆锥曲线与列表点曲线已经成为形状数学描述的常用方法,得到了广泛的应用。
为了满足激光切割加工任务的需要,自动编程系统集成了多种曲线拟合算法,这样利用现有的激光切割机,即可实现特殊曲线的插补功能,极大地丰富系统的插补能力,满足复杂的生产要求。
3.2 圆锥曲线拟合算法的研究在经济型数控系统中,对于圆锥曲线即平面二次曲线的加工是数控加工中经常遇到的问题,随着数控加工对圆锥曲线插补的需求,近年来有关各种圆锥曲线的插补算法应运而生[26]。
常用的解决方法是先用低次的有理参数曲线拟合或将其离散,再用直线、圆弧逼近,然后才能进行数控加工[28]。
本章从一个新的视角利用双圆弧方法,提出先对圆锥曲线进行标准化处理,再用双圆弧拟合逼近,然后再进行数控加工。
这样的优点是:圆弧样条的等距曲线还是圆弧;双圆弧样条能达到C 1连续,基本上能满足要求;所有数控系统都具有直线插补和圆弧插补功能,无需增加额外负担。
由于工程应用不同,对曲线拟合的要求也不同。
有的只要求拟合曲线光滑,有的要求光顺[9-10]。
本章中开发的软件要求是:支持多种常用圆锥曲线的拟合;拟合曲线要求光滑;拟合曲线与函数曲线间的误差应控制在允许的范围之内,且拟合圆弧段数较少。
本章提出的对圆锥曲线的插补,是建立在对平面任意二次曲线可以进行分类的基础上,先将二次曲线进行分类,然后对各类曲线分别进行双圆弧拟合,这样就可以直接利用数控系统的圆弧插补功能进行插补。
3.2.1 圆锥曲线的一般理论[9]在平面直角坐标系中,二元二次方程所表示的曲线称为二次曲线。
其中系数A 、B 、C 、D 、E 、F 为实常数,且A 、B 、C 不同时为零。
022=+++++F Ey Dx Cy Bxy Ax(3.1)式(3.1)称为圆锥曲线的隐式方程。
令AC B 42-=∆ (3.2)称上式为二元二次方程(3.1)的判别式。
0<∆ 时,(3.1)式为椭圆型曲线(包括圆、椭圆和虚椭圆); 0=∆ 时,(3.1)式为抛物线型曲线(包括两平行直线和虚直线);0>∆ 时,(3.1)式为双曲型曲线(包括两相交直线)。
在不同的坐标系下,平面上一点的坐标、一条曲线的方程是不同的。
通过利用坐标变换(即坐标轴的平移和旋转),可以将一般二次曲线方程化成最简形式,借以确定曲线的形状和位置。
一、坐标轴的平移只改变坐标原点的位置,而不改变坐标轴的方向和长度单位,这样的坐标变换叫做坐标轴的平移,简称平移或移轴。
将旧坐标系oxy 平移到y x o ''',那么平面上任一点M 在旧坐标系与新坐标系的坐标),(y x 和),(''y x 具有关系:⎩⎨⎧+'=+'=00y y y x x x (3.3)其中),(00y x 是新坐标系中的原点o '在旧坐标系里的坐标。
公式(3.3)叫做平移变换公式。
二、坐标轴的旋转坐标原点的位置和长度单位都不改变,让坐标轴绕原点按同一方向旋转同一个角度,这种坐标变换叫做坐标轴的旋转,简称旋转或转轴。
把旧坐标系oxy 绕原点o 旋转同一个角度θ到y x o ''',那么平面上的任一点M 在旧坐标系与新坐标系下的坐标),(y x 和),(''y x 之间具有关系:⎩⎨⎧'+'='-'=θθθθcos sin sin cos y x y y x x (3.4)公式(3.4)叫做旋转变换公式。
适当选择坐标系,二次曲线方程经过坐标系的旋转和平移变换,可简化成几种标准方程。
1.中心二次曲线方程可以简化成下面5种标准方程之一:a) 12222=+b y a x (椭圆);b) 12222-=+by a x (虚椭圆);c) 02222=+by a x (点椭圆或称变态椭圆);d) 12222=-by a x (双曲线);e) 02222=-by a x (两相交直线,或称变态双曲线)。
2.无心二次曲线的标准方程为:px y 22= (抛物线)3.线心二次曲线方程可化简成下面3种标准方程之一: a) 22a y =(两平行直线); b) 22a y -=(两平行共轭虚直线); c) 02=y (两重合直线)。
由实际的工程应用可知,在实际的加工中只有椭圆、双曲线、抛物线和直线具有工程价值。
数控机床具有直线和圆弧的插补功能,所以在本章中只考虑椭圆、双曲线和抛物线的拟合算法。
实现椭圆、双曲线、抛物线的拟合算法主要步骤为:1)参数输入遵照数控NC 程序编程规范,以最少输入参数唯一定义曲线为准则,设计了曲线的输入参数,见表1。
2)曲线标准化利用坐标系平移、旋转变换,将曲线变换到可以利用最简方程表示的坐标系下,并求解方程,详见附录1。
为了便于计算,最后确定采用下列形式作为各曲线的标准方程式。
抛物线:b ax y +=2椭圆:⎩⎨⎧==θθsin cos b y a x曲线类型 参数说明抛物线 顺逆方向、起点、终点、焦点坐标椭圆顺逆方向、起点、终点、中心坐标、长轴相对于X 轴的转角双曲线 顺逆方向、起点、终点、中心坐标、长轴相对于X 轴的转角表1 平面圆锥曲线输入参数列表双曲线:⎩⎨⎧==θθbtg y a x sec3)求取曲线的极值点、拐点,对曲线进行分割,建立有序的型值点序列。
型值点的排序规则为:抛物线:以A i x x -为标准,按递增顺序排列; 椭圆:以A i θθ-为标准,按递增顺序排列; 双曲线:以A i θθ-为标准,按递增顺序排列;注:A x 为起点横坐标,i x 为第i 个点横坐标;A θ为起点极角,i θ第i 个极角。
4)取i P ,1+i P 两个型值点,进行双圆弧曲线拟合。
5)如果拟合结果的法向误差满足规定误差,则转6),否则,则转7)。
6)将拟合结果送入输出链表中,如果曲线全部拟合完成,则结束,否则转4)。
7)在i P ,1+i P 之间按照0.618,0.382的比率插入新的型值点,再转4)。
上述,为曲线拟合的主要步骤,下面详细的介绍一下双圆弧拟合算法。
3.2.2 曲线的常用双圆弧拟合算法[17-25]按平面曲线给定一列有序型值点(节点),每相邻节点之间由两条相切圆弧构成,两圆弧分别通过一个节点,且节点处的切线斜率与曲线在节点处的斜率相等,叫做曲线的双圆弧拟合。
双圆弧拟合有六个参数需要确定:两节点i P ,1+i P ;两节点i P ,1+i P 处的切线斜率;双圆弧的切点T ;双圆弧切点处的公切线斜率。
前四个参数可由曲线的参数方程按给定参数值求得。
双圆弧拟合方法主要根据后两个参数的求法而不同,但不难证明两圆弧相切点位置结论:相切点位置有无穷多个;相切点的轨迹是一个圆弧——轨迹弧(过相邻两节点的弧,且在两节点处切线夹角等于曲线在两节点处切线夹角)。
为确保双圆弧的正确拟合,要求:1) 两拟合圆弧应满足保凸要求,即两相邻节点i P ,1+i P 处切线M P M P i i 1,+需有实交点(沿某切线方向前进时,与另一切线的反向延长线的交点,称为实交点,反之为虚交点);2) 拟合的圆弧段需要采用劣弧,即两节点连线1+i i P P 与两切线M P M P i i 1,+构成的三角形中πβα<+(见图8,图9,图10)。
3.2.3 公切线确定方法1.常用的公切线确定方法有以下三种:1) 垂直平分线法:相邻两节点连线的垂直平分线与轨迹弧的交点作为两拟合圆弧的切点(图8);2) 平行弦法:两圆弧的公切线平行于相邻两节点连线1+i i P P ,两圆弧的公切点T 显然是1+∆i i MP P 的内心(图9);3) 平均转角法:两圆弧的公切线平行于曲线在相邻两节点处切线交角的平分线(图10);2.三种方法的特点比较如下: 1) 保凸条件:a) 垂直平分线法:331≤≤βα;图8 垂直平分线法拟合双圆弧图9 平行弦线法拟合双圆弧图10 平均转角法拟合双圆弧b) 平行弦法:0>αβ; c) 平均转角法:331<<βα。
2) 两圆半径比(在保凸条件下): a) 垂直平分线法:43sin /43sin21βααβ--=R R ; b) 平行弦法:[]221)2sin(/)2sin(αβ=R R ; c) 平均转角法:43sin /43sin21βααβ--=R R 。
3.2.4 双圆弧拟合算法[8]图11,设节点A 和B 为在第1+i 个区间[]1,+i i P P 上的相邻节点,经坐标变换后AB 为横轴,A 为原点,垂直于AB 为纵轴。
有向直线A g 和B g 为拟合曲线j Γ在A 和B 上的有向切线。
设C 是直线A g 和B g 的交点,α和β分别是A g 和B g 与横轴的夹角,逆时 针方向为正;πβαπ<<-,,T 为ABC ∆的内心。
如果C 在横轴的上方,且A g 和B g 的方向分别与有向直线AC 和CB 的方向相同,那么,彼此相切且分别以A g 和B g 为切线的双圆弧公切点轨迹是过三点A ,T ,B 且ABC ∆内部的圆弧,图11(a )。
如果B g 的方向与CB 的方向相反,则双圆弧公切点轨迹是过A 点和B 点且弧度为(2/C ∠-π)在AB 下方的圆弧,图11(b )。
在当0<αβ(保凸)时,双圆弧同向,为C 形双圆弧。
当0>αβ时,双圆弧反向,为S 形双圆弧。
在局部坐标系下,双圆弧圆心和半径可以统一地由下式给出:图11 双圆弧曲线(b) 反向双圆弧(a) 同向双圆左圆半径:)2sin 2sin2/()2sin(1θϖαθϖ++=L R , (3.5) 圆心坐标:αsin 1R x A -=, αcos 1R y A =。
(3.6) 右圆半径:)2sin2sin 2/()2sin(2θϖϖαθ-+-=L R ,(3.7) 圆心坐标:βsin 2R L x B -=, βcos 2R y B =。
(3.8) 公切点M 的坐标:2sin/)2cos()2sin(ϖαθαθϖ+++=L x M(3.9)2sin /)2sin()2sin(ϖαθαθϖ+++=L y M(3.10)其中αβϖ-=;θ是左圆弧的圆心角,θϖ-是右圆弧的圆心角;逆时针方向为正;正圆对应正圆心角,负圆对应负圆心角,πθπ<<-,L 是AB 的长度。
3.2.5 误差分析方法利用法向误差判断方法,步骤如下:(1)计算二次曲线在节点i P ,1+i P 间n 等分的各分点坐标。
1)对于抛物线b ax y +=2,在节点i P ,1+i P 间将横轴值x 等分为n 份:1110+=<<<<=-i i i i i i x x x x x x n n ,计算出抛物线上各对应分点坐标:))(,(r r r i i i x y x P r=1,2,…,n-1。