一种3次B样条曲线的快速插补方法及系统与流程

文档序号:15449645发布日期:2018-09-14 23:48阅读:481来源:国知局
本发明涉及快速插补
技术领域
,更具体地,涉及一种3次b样条曲线的快速插补方法及系统。
背景技术
:在复杂曲面数控加工中,通常通过cad/cam软件将复杂曲面离散为微小的直线段或圆弧段,然后使用直线插补或圆弧插补完成复杂加工,这种加工方式使得刀具轨迹不平滑,在微段连接处切向不连续,极大的降低了加工效率和表面质量。为了解决这个问题,样条曲线插补技术应运而生。3次b样条曲线是工程应用中应用最广泛的样条曲线,如著名cad软件ug就只支持生成3次b样条曲线形式的样条刀具轨迹。目前已有多种不同的3次b样条曲线插补方法,如最早的泰勒一阶和二阶展开方法、反馈插补法、“预估——校正”插补法、函数拟合插补法等,在这些插补方法中涉及多次曲线求值和求导计算,甚至需要进行反复迭代计算。而由于b样条基函数采用递归定义,其求值和求导过程十分复杂耗时,因此上述方法需要占用大量的计算资源,甚至影响系统的实时性。技术实现要素:本发明提供一种克服上述问题或者至少部分地解决上述问题的一种3次b样条曲线的快速插补方法及系统。根据本发明的一个方面,提供一种3次b样条曲线的快速插补方法,包括:采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线;针对每一段所述3次贝奇尔曲线,构造对应的快速插补模型;利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补;遍历每一段3次贝奇尔曲线,直到所有的3次贝奇尔曲线均快速插补完毕。在上述技术方案的基础上,本发明还可以作如下改进。进一步的,所述采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线之前还包括:获取原始3次b样条曲线的所有节点矢量和所有控制顶点,分别构成节点矢量集合u和控制顶点集合p,其中,u={u0,u1,…,un+4},p={p0,p1,…,pn},(n+1)为控制顶点的个数,其中,u0=u1=u2=u3=0和un+1=un+2=un+3=un+4=1;相应的,所述采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线具体包括:当3次b样条曲线的节点矢量集合u中的节点矢量ui满足ui=ui+1=…=ui+r-1,则节点ui的初始重复度为r,其中,r≤2;采用b样条节点插入技术,对节点矢量集合u中的所有节点进行重复插入操作,直到每个节点的重复度均为3,其中,每相邻两个重复度为3的节点之间为一条3次贝奇尔曲线。进一步的,所述采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线之后还包括:获取每一段3次贝奇尔曲线的4个控制顶点,并将每一段3次贝奇尔曲线以及对应的4个控制顶点存储于结构体数组中。进一步的,所述针对每一段3次贝奇尔曲线,构造对应的快速插补模型具体包括:获取每一段3次贝奇尔曲线的4个控制顶点,分别为p0、p1、p2和p3;将4个控制顶点沿偏移矢量v偏移后得到新的4个控制顶点p0’、p1’、p2’和p3’,使得新的4个控制顶点p0’、p1’、p2’和p3’的坐标分量均不为0;令新的4个控制顶点分别为p0’=(x0,y0,z0)t,p1’=(x1,y1,z1)t,p2’=(x2,y2,z2)t,p3’=(x3,y3,z3)t,则新的3次贝奇尔曲线表示为:其中,t为曲线参数,bi,3(t)为3次伯恩斯坦基函数,计算为:将式(1)进行变形为:对式(3)计算关于参数t的一阶导矢可得:其中,δpi=pi+1-pi,i=0,1,2,联立式(3)和式(4)得到:c′(t)=mc(t);其中,m为系数矩阵,表示为:根据每一段3次贝奇尔曲线的4个控制顶点以及偏移矢量v,可得到系数矩阵m。进一步的,所述利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补具体包括:令c0=(x0,y0,z0,1)t和t0=0,则第(i+1)个插补周期的插补点ci+1计算为:其中,每一段3次贝奇尔曲线包括n个插补周期,i的取值为0到(n-1),δti、k1、k2、k3、k4为插补点递推参数,计算为:其中li为第i个插补周期规划的插补步长,c′i和c″i分别为点ci处的一阶导矢和二阶导矢,计算为:进一步的,还包括:对于当前3次贝奇尔曲线,当ti<1时,当前3次贝奇尔曲线未插补至终点,继续利用相应的快速插补模型进行插补;当ti≥1时,当前3次贝奇尔曲线插补结束。根据本发明的另一个方面,提供了一种3次b样条曲线的快速插补系统,包括:转换模块,用于采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线;构造模块,用于针对每一段所述3次贝奇尔曲线,构造对应的快速插补模型;插补模块,用于利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补,遍历每一段3次贝奇尔曲线,直到所有的3次贝奇尔曲线均快速插补完毕。进一步的,还包括:获取模块,用于获取原始3次b样条曲线的所有节点矢量和所有控制顶点,分别构成节点矢量集合u和控制顶点集合p,其中,u={u0,u1,…,un+4},p={p0,p1,…,pn},(n+1)为控制顶点的个数,其中,u0=u1=u2=u3=0和un+1=un+2=un+3=un+4=1;相应的,所述转换模块,用于采用b样条节点插入技术,对节点矢量集合u中的所有节点进行重复插入操作,直到每个节点的重复度均为3,每相邻两个重复度为3的节点之间为一条3次贝奇尔曲线,其中,当原始3次b样条曲线的节点矢量集合u中的节点矢量ui满足ui=ui+1=…=ui+r-1时,则节点ui的初始重复度为r,且r≤2。进一步的,还包括存储模块;所述获取模块,还用于获取每一段3次贝奇尔曲线的4个控制顶点;所述存储模块,用于将每一段3次贝奇尔曲线以及对应的4个控制顶点存储于结构体数组中。根据本发明的又一个方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行3次b样条曲线的快速插补方法。本发明提供一种3次b样条的快速插补方法及系统,采用b样条的节点插入技术与微分递推求值技术来进行3次b样条插补,整个插补过程不涉及任何b样条基函数的求值求导计算,插补计算的效率高。附图说明图1为本发明一个实施例的3次b样条曲线的快速插补方法流程图;图2为本发明一个实施例的将3次b样条曲线转换为3次贝奇尔曲线的流程图;图3为本发明一个实施例的3次b样条曲线的快速插补系统连接框图;图4为本发明另一个实施例的3次b样条曲线的快速插补系统连接框图;图5为本发明一个实施例的电子设备连接框图。具体实施方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。参见图1,提供了本发明一个实施例的3次b样条曲线快速插补方法,能够提高3次b样条曲线的插补速度,该方法包括:采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线;针对每一段所述3次贝奇尔曲线,构造对应的快速插补模型;利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补;遍历每一段3次贝奇尔曲线,直到所有的3次贝奇尔曲线均快速插补完毕。3次b样条曲线,在工程应用中非常普遍,对于3次b样条的插补,目前有多种插补方法,但在这些插补方法中涉及多次曲线求值和求导计算,甚至需要进行反复迭代计算。而由于b样条基函数采用递归定义,其求值和求导过程十分复杂耗时,因此上述方法需要占用大量的计算资源,甚至影响系统的实时性。本实施例提出一种快速插补方法,先将原始的3次b样条曲线转换为3次贝奇尔曲线,对于每一段3次贝奇尔曲线,构造对应的快速插补模型,并利用快速插补模型对相应的3次贝奇尔曲线进行快速插补。对于每一段3次贝奇尔曲线,采用同样的方法进行快速插补,所有的3次贝奇尔曲线快速插补完成,即完成了原始的3次b样条曲线的快速插补。本实施例采用b样条的节点插入技术与微分递推求值技术来进行3次b样条插补,整个插补过程不涉及任何b样条基函数的求值求导计算,插补计算的效率高。在上述技术方案的基础上,参见图2,本发明的一个实施例中,所述采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线之前还包括:获取原始3次b样条曲线的所有节点矢量和所有控制顶点,分别构成节点矢量集合u和控制顶点集合p,其中,u={u0,u1,…,un+4},p={p0,p1,…,pn},(n+1)为控制顶点的个数,其中,u0=u1=u2=u3=0和un+1=un+2=un+3=un+4=1;相应的,所述采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线具体包括:当原始3次b样条曲线的节点矢量集合u中的节点矢量ui满足ui=ui+1=…=ui+r-1时,则节点ui的初始重复度为r,其中,r≤2;采用b样条节点插入技术,对节点矢量集合u中的所有节点进行重复插入操作,直到每个节点的重复度均为3,其中,每相邻两个重复度为3的节点之间为一条3次贝奇尔曲线。在对原始的3次b样条曲线转化成3次贝奇尔曲线之前,需要获取原始的3次b样条曲线的所有的节点矢量,构成节点矢量集合u,以及3次b样条曲线的所有控制顶点,构成控制顶点集合p,其中,其中,u={u0,u1,…,un+4},p={p0,p1,…,pn},(n+1)为控制顶点的个数,其中,u0=u1=u2=u3=0和un+1=un+2=un+3=un+4=1。将原始3次b样条曲线转换为3次贝奇尔曲线的具体过程为,若节点矢量集合u中的某个节点ui满足ui=ui+1=…=ui+r-1,即连续r个节点值相等,则称ui的重复度为r,重复度r≤2,通常情况下,r=1。采用b样条节点插入技术,对节点矢量集合u中的所有节点进行重复插入操作,直到每个节点的重复度均为3,则此时3次b样条曲线转换为连续3次贝奇尔曲线,即每两个重复度为3的节点之间为一条3次贝奇尔曲线。通过b样条节点插入技术可以获得每段3次贝奇尔曲线的4个控制顶点p0、p1、p2和p3,并将其保存在如下形式的结构体数组中:其中p0,p1,p2和p3为每段3次贝奇尔曲线的4个控制顶点,m为贝奇尔曲线的段数。在上述各实施例的基础上,本发明的一个实施例中,对于每一段3次贝奇尔曲线,构造对应的快速插补模型具体方法为,获取每一段3次贝奇尔曲线的4个控制顶点,分别为p0、p1、p2和p3;将4个控制顶点沿偏移矢量v偏移后得到新的4个控制顶点p0’、p1’、p2’和p3’,其中,偏移矢量v根据3次贝奇尔曲线的4个控制顶点来确定,偏移矢量v的取值能够使得新的4个控制顶点p0’、p1’、p2’和p3’的坐标分量均不为0即可。令新的4个控制顶点分别为p0’=(x0,y0,z0)t,p1’=(x1,y1,z1)t,p2’=(x2,y2,z2)t,p3’=(x3,y3,z3)t,则新的3次贝奇尔曲线表示为:其中,t为曲线参数,bi,3(t)为3次伯恩斯坦基函数,计算为:将式(1)进行变形为:对式(3)计算关于参数t的一阶导矢可得:其中,δpi=pi+1-pi,i=0,1,2,联立式(3)和式(4)得到:c′(t)=mc(t);其中,m为系数矩阵,表示为:根据每一段3次贝奇尔曲线的控制顶点以及偏移矢量v,可得到系数矩阵m。在上述各实施例的基础上,本发明的一个实施例中,所述利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补的具体过程为,令c0=(x0,y0,z0,1)t和t0=0,则第(i+1)个插补周期的插补点ci+1计算为:其中,每一段3次贝奇尔曲线包括n个插补周期,i的取值为0到(n-1),δti、k1、k2、k3、k4为插补点递推参数,分别计算为:其中li为第i个插补周期规划的插补步长,c′i和c″i分别为点ci处的一阶导矢和二阶导矢,计算为:其中,对于当前3次贝奇尔曲线,当ti<1时,当前3次贝奇尔曲线未插补至终点,继续利用相应的快速插补模型进行插补;否则,当ti≥1,当前3次贝奇尔曲线插补结束。对每一段3次贝奇尔曲线都按照同样的方法进行快速插补,直到每一段3次贝奇尔曲线均快速插补完成。为加深对本发明提供的3次b样条曲线的快速插补方法的理解,下面以一个具体的例子来进行说明。步骤1:获取3次b样条曲线的参数,即获取3次b样条曲线的节点矢量集合u和控制顶点集合p,其中u={0,0,0,0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1,1,1,1},p={(60,90,0),(37.5,60,0),(0,60,0),(30,30,0),(22.5,0,0),(60,22.5,0),(97.5,0,0),(90,30,0),(120,60,0),(82.5,60,0),(60,90,0)}。步骤2:将3次b样条曲线转换为连续3次贝奇尔曲线。具体转换过程为,若节点矢量u中的某个节点ui满足ui=ui+1=…=ui+r-1,即连续r个节点值相等,则称ui的重复度为r。采用b样条节点插入技术,对节点矢量u中的所有节点进行重复插入操作,直到每个节点的重复度均为3,则此时3次b样条曲线转换为连续3次贝奇尔曲线,即每两个重复度为3的节点之间为一条3次贝奇尔曲线。通过b样条节点插入技术可以获得每段3次贝奇尔曲线的4个控制顶点p0、p1、p2和p3,并将其保存在如下形式的结构体数组中:其中p0,p1,p2和p3为每段3次贝奇尔曲线的控制顶点,m为贝奇尔曲线的段数。根据以上过程,获得8个贝奇尔曲线段,各个贝奇尔曲线段的控制顶点如下:序号p0p1p2p31(60,90,0)(37.5,60,0)(18.75,60,0)(14.375,55,0)2(14.375,55,0)(10,50,0)(20,40,0)(23.75,30,0)3(23.75,30,0)(27.5,20,0)(25,10,0)(30,8.75,0)4(30,8.75,0)(35,7.5,0)(47.5,15,0)(60,15,0)5(60,15,0)(72.5,15,0)(85,7.5,0)(90,8.75,0)6(90,8.75,0)(95,10,0)(92.5,20,0)(96.25,30,0)7(96.25,30,0)(100,40,0)(110,50,0)(105.625,55,0)8(105.625,55,0)(101.25,60,0)(82.5,60,0)(60,90,0)步骤3:构造快速插补模型,具体过程为,从结构体数组bezier[m]中获取一段3次贝奇尔曲线,得到该段3次贝奇尔曲线的4个控制顶点p0,p1,p2和p3,取1个偏移矢量v,将4个控制顶点p0,p1,p2和p3沿矢量v偏移后得到新的4个控制顶点p0’,p1’,p2’和p3’,使得p0’,p1’,p2’和p3’的坐标分量均不为0,令新的4个控制顶点分别为:p0’=(x0,y0,z0)t,p1’=(x1,y1,z1)t,p2’=(x2,y2,z2)t,p3’=(x3,y3,z3)t,则新的贝奇尔曲线可表示为:其中t为曲线参数,bi,3(t)为3次伯恩斯坦基函数,计算为:其中符号“!”表示阶乘运算。将式(1)变形为:对式(2)两边计算关于参数t的一阶导矢可得:其中δpi=pi+1'-pi',i=0,1,2。联立式(2)和式(2)可得:c′(t)=mc(t);其中m为系数矩阵,表示为:根据以上过程,由于所有的贝奇尔曲线控制顶点的z值均为0,因此选取偏移矢量v=(0,0,1),得到所有的m为:步骤4:利用构造的快速插补模型,对相应的3次贝奇尔曲线进行快速插补,具体过程为,令c0=(x0,y0,z0,1)t和t0=0,则第(i+1)个插补周期的插补点ci+1计算为:其中,每一段3次贝奇尔曲线包括n个插补周期,i的取值为0到(n-1),δti、k1、k2、k3、k4为插补点递推参数,计算为:其中li为第i个插补周期规划的插补步长,c′i和c″i分别为点ci处的一阶和二阶导矢,计算为:步骤5:当前贝奇尔曲线插补终点判断,其中,当ti<1时,当前贝奇尔曲线未插补至终点,转步骤4,继续对当前3次贝奇尔曲线进行快速插补;否则,转步骤3,对下一段3次贝奇尔曲线进行快速插补,直到结构体数组bezier[m]中的所有贝奇尔曲线插补完成时结束插补,即完成了对原始3次b样条曲线的快速插补。参见图3,提供了本发明另一个实施例的3次贝奇尔曲线的快速插补系统,包括转换模块31、构造模块32和插补模块33。转换模块31,用于采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线。构造模块32,用于针对每一段所述3次贝奇尔曲线,构造对应的快速插补模型。插补模块33,用于利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补,遍历每一段3次贝奇尔曲线,直到所有的3次贝奇尔曲线均快速插补完毕。参见图4,提供了本发明另一个实施例的3次b样条曲线的快速插补系统,包括获取模块30、转换模块31、构造模块32、插补模块33和存储模块34。转换模块31,用于采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线。构造模块32,用于针对每一段所述3次贝奇尔曲线,构造对应的快速插补模型。插补模块33,用于利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补,遍历每一段3次贝奇尔曲线,直到所有的3次贝奇尔曲线均快速插补完毕。获取模块30,用于获取原始3次b样条曲线的所有节点矢量和所有控制顶点,分别构成节点矢量集合u和控制顶点集合p,其中,u={u0,u1,…,un+4},p={p0,p1,…,pn},(n+1)为控制顶点的个数,其中,u0=u1=u2=u3=0和un+1=un+2=un+3=un+4=1。相应的,所述转换模块31,用于采用b样条节点插入技术,对节点矢量集合u中的所有节点进行重复插入操作,直到每个节点的重复度均为3,每相邻两个重复度为3的节点之间为一条3次贝奇尔曲线,其中,当原始3次b样条曲线的节点矢量集合u中的节点矢量ui满足ui=ui+1=…=ui+r-1时,则节点ui的初始重复度为r,且r≤2。所述获取模块30,还用于获取每一段3次贝奇尔曲线的4个控制顶点;相应的,存储模块34,用于将每一段3次贝奇尔曲线以及对应的4个控制顶点存储于结构体数组中。构造模块32具体用于:获取每一段3次贝奇尔曲线的4个控制顶点,分别为p0、p1、p2和p3;将4个控制顶点沿偏移矢量v偏移后得到新的4个控制顶点p0’、p1’、p2’和p3’,使得新的4个控制顶点p0’、p1’、p2’和p3’的坐标分量均不为0;令新的4个控制顶点分别为p0’=(x0,y0,z0)t,p1’=(x1,y1,z1)t,p2’=(x2,y2,z2)t,p3’=(x3,y3,z3)t,则新的3次贝奇尔曲线表示为:其中,t为曲线参数,bi,3(t)为3次伯恩斯坦基函数,计算为:将式(1)进行变形为:对式(3)计算关于参数t的一阶导矢可得:其中,δpi=pi+1-pi,i=0,1,2,联立式(3)和式(4)得到:c′(t)=mc(t);其中,m为系数矩阵,表示为:根据每一段3次贝奇尔曲线的4个控制顶点以及偏移矢量v,可得到系数矩阵m。插补模块43,具体用于:令c0=(x0,y0,z0,1)t和t0=0,则第(i+1)个插补周期的插补点ci+1计算为:其中,每一段3次贝奇尔曲线包括n个插补周期,i的取值为0到(n-1),δti、k1、k2、k3、k4为插补点递推参数,计算为:其中li为第i个插补周期规划的插补步长,c′i和c″i分别为点ci处的一阶导矢和二阶导矢,计算为:插补模块33,还用于对于当前3次贝奇尔曲线,当ti<1时,当前3次贝奇尔曲线未插补至终点,继续利用相应的快速插补模型进行插补;当ti≥1时,当前3次贝奇尔曲线插补结束,对下一段3次贝奇尔曲线进行快速插补。参见图5,提供了本发明一个实施例的电子设备连接框图,包括处理器(processor)501、存储器(memory)502和总线503;其中,所述处理器501和存储器502通过所述总线503完成相互间的通信。所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:采用b样条节点插入技术将原始3次b样条曲线转换为连续的多段3次贝奇尔曲线;针对每一段所述3次贝奇尔曲线,构造对应的快速插补模型;利用构造的所述快速插补模型,对相应的3次贝奇尔曲线进行快速插补;遍历每一段3次贝奇尔曲线,直到所有的3次贝奇尔曲线均快速插补完毕。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。本发明提供的一种3次b样条曲线的快速插补方法及系统,采用b样条的节点插入技术与微分递推求值技术来进行3次b样条插补,整个插补过程不涉及任何b样条基函数的求值求导计算,插补计算的效率高。最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1