一种基于离散点的曲线重构方法与流程

专利2022-06-29  83


本发明涉及数控切割生产领域,具体涉及一种基于pchip(分段三次hermite插值多项式)与g1(双圆弧交点处的法线方向相同)连续的离散点曲线重构方法。



背景技术:

数控切割技术是传统加工工艺与计算机数控技术、计算机辅助设计和辅助制造技术的有机结合。切割生产中往往采用已有加工坐标文件,由于现有数控系统没有样条插补功能,这类坐标文件中样条曲线以离散点的形式存在,且分布不均,一般采用折线连接,使用直线插补,刀具在每一个插补段都需经过加速、匀速、减速和停顿4个阶段,加工质量差、机床冲击大、效率低,切割质量差。



技术实现要素:

发明目的:为了解决现有技术的不足,本发明提供了一种基于离散点的曲线重构方法。

技术方案:一种基于离散点的曲线重构方法,具体操作步骤如下:

步骤1、读取坐标文件,将文件内容提取到列表;

步骤2、取出样条曲线中的点,依次取出坐标元素,判断折线长度标记位是否为空,不为空,则上一次循环中已经计算相应的值,将上一次计算的长度值赋给折线长度标记位,避免重复计算;为空,则是第一次计算,计算当前折线的长度,判断初始折线的趋势是否为空,不为空,取出初始折线的趋势值,为空,计算初始折线的趋势;

步骤3、判断当前图形元素是否为直线;

步骤4、判断折线长度是否小于给定值:计算当前点与上一点的距离,当前点与下一点的距离,若当前点与上一点的距离小于给定值,则当前点在曲线上,标记当前点与下一点的距离,待下次选点时将取出标记位中的值;

步骤5、判断折线间夹角是否小于给定值:计算两段折线的夹角,判断夹角是否小于给定值;

步骤6、判断当前折线x坐标的增减趋势:曲线方向以x轴的方向为标准,与x轴正向相同的为正向曲线,与x轴正向相反的是反向曲线;判断方法为,当前折线与初始折线的始终点x坐标增减趋势一致,计算初始折线首尾两点的x的差值,当前折线首尾两点的x的差值,将计算出的两个差值相乘;若是乘积为正数,则当前折线的趋势与初始折线的趋势相同,否则,趋势相反,再根据初始折线的趋势将当前点写入正向列表或是反向列表,若乘积为负数,继续筛选余下曲线;

步骤7、判断曲线列表的长度是否超过给定值,若正向列表或反向列表的长度大于给定值,又因为步骤6添加离散点时未加入第一点,则若当前列表为正向列表,将当前样条区间第一个点写入正向列表;若当前反向列表,将当前样条区间第一个点写入反向列表,否则,将列表清零,筛选余下样条区间离散点;

步骤8、拟合离散点,得到函数值与一阶导数连续的曲线,拟合函数只能拟合x方向递增曲线,若当前列表为反向列表,反转列表,转换为正向曲线,基于保形的目的,使用分段三次hermite插值多项式拟合列表中的离散点;

步骤9、双圆弧逼近拟合曲线:基于误差最小原则计算圆弧的圆心坐标、半径、公切点坐标,取出当前曲线列表,以当前列表的x的最小值为第一个点,最大值为最后一点,从1开始分段,每段步长有两种计算方法:(1)整体区间分段,在样条曲线区间内递增段数直到获得符合误差要求的双圆弧,剩余部分步长不变;(2)剩余区间分段,每次在区间内剩余部分由1开始划分段数,并计算步长,以第一点的x值加上步长为双圆弧终止点,计算双圆弧起始点与终止点的坐标的切线角度,再结合双圆弧起始点与终止点的连线的角度,计算出两点的弦切角;

步骤10、角度溢出处理:若起止点的弦切角超过 /-180°,则将弦切角减去或加上360°,计算起始点与终止点弦切角的插值,若插值的绝对值大于180°,且插值为负数,则将起始点的弦切角加上360°,若插值为正数,则减去360°;

步骤11、确定起点切线与公切点切线的夹角:根据起止点的弦切角,若起止点弦切角的乘积为正数,则此段双圆弧为c型双圆弧,若乘积小于零,则此段双圆弧为s型双圆弧,不同类型的双圆弧,计算自由角度,自由角度为起点切线与公切点切线的夹角;

步骤12、圆心、半径以及公切点的确定:根据弦切角、自由角度、正弦定理、起止点连线的长度,计算圆弧半径,由半径、起始点切线的法向量、公切点切线的法向量,计算出圆心与公切点坐标;

步骤13、误差计算:根据得到的双圆弧参数计算误差,在每段圆弧区间内按角度平均分段取拟合曲线上的点,点到圆心的距离与圆弧半径的差值就是误差,若双圆弧的误差大于给定值,则记为1,否则记为0;

步骤14、圆弧分段:双圆弧段数确定,若是标记为1,改变误差标记位的状态,将分段数加1,重新计算步长,若是标记为零,双圆弧的误差符合要求,将此段双圆弧的终点与切线角度当作下一段的起点与起点角度,对余下曲线重新分段,并将圆弧参数写入列表;

步骤15、若下一段起始点为列表最大值,逼近结束,若原来的曲线为反向曲线,则将圆弧列表反转,输出圆弧参数,否则,继续逼近,直到曲线逼近完毕,逼近完成继续筛选样条区间。

有益效果:本发明提出了的基于pchip与g1连续的离散点曲线重构方法,在离散点拟合为样条曲线的基础上采用双圆弧算法逼近原始曲线,算法最大程度保持了原始曲线形状,相对于直线逼近样条曲线,减少了圆弧段数;由于g1连续,两相邻圆弧交点处法线相同,切线夹角为零,减少了刀具转动,提高了切割速度。

附图说明

图1是本发明的重构曲线的系统流程示意图;

图2是本发明的双圆弧逼近pchip曲线的流程示意图;

图3是本发明的弦切角角度溢出处理流程示意图;

图4是本发明的不同类型双圆弧自由角度计算流程示意图;

图5是本发明的双圆弧参数计算流程示意图。

具体实施方式

下面将对本发明实施例中的技术方案进行清楚、完整地描述,以使本领域的技术人员能够更好的理解本发明的优点和特征,从而对本发明的保护范围做出更为清楚的界定。本发明所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例

如图1-5所示,一种基于离散点的曲线重构方法,(1)从坐标文件中提取样条曲线区间的离散点。作为样条曲线离散点应该具备如下特征:每两点间折线段长度小、两折线间角度小、多个连续折线组成且离散点x坐标的增减趋势相同。计算当前折线的距离,下一折线的距离,若当前折线的距离小于给定值,则当前点在曲线上。计算两段折线的夹角,判断夹角是否小于给定值。当前折线x坐标的增减趋势。曲线方向以x轴的方向为标准,与x轴正向相同的为正向曲线,与x轴正向相反的是反向曲线。判断方法为,当前折线与初始折线的始终点x坐标增减趋势一致,计算初始折线首尾两点的x的差值和当前折线首尾两点的x的差值,将计算出的两个差值相乘;若乘积为正数,则当前折线的趋势与初始折线的趋势相同,否则,趋势相反。若正向列表或反向列表的长度大于给定值,则说明是样条曲线上的点。上述折线长度给定值、角度给定值、列表长度值可根据不同加工机床和产品自由设置。

(2)拟合离散点。得到函数值与一阶导数连续的曲线。拟合函数只能拟合x方向递增曲线。若当前列表为反向列表,反转列表,转换为正向曲线。基于保形的目的,使用分段三次hermite插值多项式拟合列表中的离散点。

(3)双圆弧逼近拟合曲线,基于误差最小原理计算圆弧的圆心坐标、半径、公切点坐标。取出样条曲线离散点,以当前列表的x的最小值为第一个点,最大值为最后一点,计算步长,以第一点的x值加上步长为双圆弧终止点,计算双圆弧起始点与终止点的坐标的切线角度,再结合双圆弧起始点与终止点的连线的角度,计算出两点的弦切角。角度溢出处理。若起止点的弦切角超过 /-180°,则将弦切角减去或加上360°,计算起始点与终止点弦切角的差值,若差值的绝对值大于180°,且差值为负数,则将起始点的弦切角加上360°,若插值为负数,则减去360°。确定自由角度的夹角,自由角度为起点切线与公切点切线的夹角,根据起止点的弦切角,若起止点弦切角的乘积为正数,则此段双圆弧为c型双圆弧,若乘积小于零,则此段双圆弧为s型双圆弧,不同类型的双圆弧,分别计算自由角度。由自由角度、弦切角、起止点连线的长度、正弦定理(起止点与公切点组成的三角形),计算双圆弧的半径。再根据起点与公切点的法向量计算圆心与公切点坐标。根据得到的双圆弧参数计算误差,在每段圆弧区间内按角度平均分段取拟合曲线上的点,点到圆心的距离与圆弧半径的差值就是误差,若双圆弧的误差大于给定值,将分段数加1,重新计算步长,反之,双圆弧的误差符合要求,将此段双圆弧的终点与切线角度当作下一段的起点与起点角度,对余下曲线重新分段,并将圆弧参数写入列表。

具体的操作步骤如下:

步骤1、读取坐标文件,将文件内容提取到列表;

步骤2、取出样条曲线中的点,依次取出坐标元素,判断折线长度标记位是否为空,不为空,则上一次循环中已经计算相应的值,将上一次计算的长度值赋给折线长度标记位,避免重复计算;为空,则是第一次计算,计算当前折线的长度,判断初始折线的趋势是否为空,不为空,取出初始折线的趋势值,为空,计算初始折线的趋势;

步骤3、判断当前图形元素是否为直线;

步骤4、判断折线长度是否小于给定值:计算当前点与上一点的距离,当前点与下一点的距离,若当前点与上一点的距离小于给定值,则当前点在曲线上,标记当前点与下一点的距离,待下次选点时将取出标记位中的值;

步骤5、判断折线间夹角是否小于给定值:计算两段折线的夹角,判断夹角是否小于给定值;

步骤6、判断当前折线x坐标的增减趋势:曲线方向以x轴的方向为标准,与x轴正向相同的为正向曲线,与x轴正向相反的是反向曲线;判断方法为,当前折线与初始折线的始终点x坐标增减趋势一致,计算初始折线首尾两点的x的差值,当前折线首尾两点的x的差值,将计算出的两个差值相乘;若是乘积为正数,则当前折线的趋势与初始折线的趋势相同,否则,趋势相反,再根据初始折线的趋势将当前点写入正向列表或是反向列表,若乘积为负数,继续筛选余下曲线;

步骤7、判断曲线列表的长度是否超过给定值,若正向列表或反向列表的长度大于给定值,又因为步骤6添加离散点时未加入第一点,则若当前列表为正向列表,将当前样条区间第一个点写入正向列表;若当前反向列表,将当前样条区间第一个点写入反向列表,否则,将列表清零,筛选余下样条区间离散点;

步骤8、拟合离散点,得到函数值与一阶导数连续的曲线,拟合函数只能拟合x方向递增曲线,若当前列表为反向列表,反转列表,转换为正向曲线,基于保形的目的,使用分段三次hermite插值多项式拟合列表中的离散点;

步骤9、双圆弧逼近拟合曲线:基于误差最小原则计算圆弧的圆心坐标、半径、公切点坐标,取出当前曲线列表,以当前列表的x的最小值为第一个点,最大值为最后一点,从1开始分段,每段步长有两种计算方法:(1)整体区间分段,在样条曲线区间内递增段数直到获得符合误差要求的双圆弧,剩余部分步长不变;(2)剩余区间分段,每次在区间内剩余部分由1开始划分段数,并计算步长,以第一点的x值加上步长为双圆弧终止点,计算双圆弧起始点与终止点的坐标的切线角度,再结合双圆弧起始点与终止点的连线的角度,计算出两点的弦切角;

步骤10、角度溢出处理:若起止点的弦切角超过 /-180°,则将弦切角减去或加上360°,计算起始点与终止点弦切角的插值,若插值的绝对值大于180°,且插值为负数,则将起始点的弦切角加上360°,若插值为正数,则减去360°;

步骤11、确定起点切线与公切点切线的夹角:根据起止点的弦切角,若起止点弦切角的乘积为正数,则此段双圆弧为c型双圆弧,若乘积小于零,则此段双圆弧为s型双圆弧,不同类型的双圆弧,计算自由角度,自由角度为起点切线与公切点切线的夹角;

步骤12、圆心、半径以及公切点的确定:根据弦切角、自由角度、正弦定理、起止点连线的长度,计算圆弧半径,由半径、起始点切线的法向量、公切点切线的法向量,计算出圆心与公切点坐标;

步骤13、误差计算:根据得到的双圆弧参数计算误差,在每段圆弧区间内按角度平均分段取拟合曲线上的点,点到圆心的距离与圆弧半径的差值就是误差,若双圆弧的误差大于给定值,则记为1,否则记为0;

步骤14、圆弧分段:双圆弧段数确定,若是标记为1,改变误差标记位的状态,将分段数加1,重新计算步长,若是标记为零,双圆弧的误差符合要求,将此段双圆弧的终点与切线角度当作下一段的起点与起点角度,对余下曲线重新分段,并将圆弧参数写入列表;

步骤15、若下一段起始点为列表最大值,逼近结束,若原来的曲线为反向曲线,则将圆弧列表反转,输出圆弧参数,否则,继续逼近,直到曲线逼近完毕,逼近完成继续筛选样条区间。

本发明提出了的基于pchip与g1连续的离散点曲线重构方法,在离散点拟合为样条曲线的基础上采用双圆弧算法逼近原始曲线,算法最大程度保持了原始曲线形状,相对于直线逼近样条曲线,减少了圆弧段数;由于g1连续,两相邻圆弧交点处法线相同,切线夹角为零,减少了刀具转动,提高了切割速度。


技术特征:

1.一种基于离散点的曲线重构方法,其特征在于:具体操作步骤如下:

步骤1、读取坐标文件,将文件内容提取到列表;

步骤2、取出样条曲线中的点,依次取出坐标元素,判断折线长度标记位是否为空,不为空,则上一次循环中已经计算相应的值,将上一次计算的长度值赋给折线长度标记位,避免重复计算;为空,则是第一次计算,计算当前折线的长度,判断初始折线的趋势是否为空,不为空,取出初始折线的趋势值,为空,计算初始折线的趋势;

步骤3、判断当前图形元素是否为直线;

步骤4、判断折线长度是否小于给定值:计算当前点与上一点的距离,当前点与下一点的距离,若当前点与上一点的距离小于给定值,则当前点在曲线上,标记当前点与下一点的距离,待下次选点时将取出标记位中的值;

步骤5、判断折线间夹角是否小于给定值:计算两段折线的夹角,判断夹角是否小于给定值;

步骤6、判断当前折线x坐标的增减趋势:曲线方向以x轴的方向为标准,与x轴正向相同的为正向曲线,与x轴正向相反的是反向曲线;判断方法为,当前折线与初始折线的始终点x坐标增减趋势一致,计算初始折线首尾两点的x的差值,当前折线首尾两点的x的差值,将计算出的两个差值相乘;若是乘积为正数,则当前折线的趋势与初始折线的趋势相同,否则,趋势相反,再根据初始折线的趋势将当前点写入正向列表或是反向列表,若乘积为负数,继续筛选余下曲线;

步骤7、判断曲线列表的长度是否超过给定值,若正向列表或反向列表的长度大于给定值,又因为步骤6添加离散点时未加入第一点,则若当前列表为正向列表,将当前样条区间第一个点写入正向列表;若当前反向列表,将当前样条区间第一个点写入反向列表,否则,将列表清零,筛选余下样条区间离散点;

步骤8、拟合离散点,得到函数值与一阶导数连续的曲线,拟合函数只能拟合x方向递增曲线,若当前列表为反向列表,反转列表,转换为正向曲线,基于保形的目的,使用分段三次hermite插值多项式拟合列表中的离散点;

步骤9、双圆弧逼近拟合曲线:基于误差最小原则计算圆弧的圆心坐标、半径、公切点坐标,取出当前曲线列表,以当前列表的x的最小值为第一个点,最大值为最后一点,从1开始分段,每段步长有两种计算方法:(1)整体区间分段,在样条曲线区间内递增段数直到获得符合误差要求的双圆弧,剩余部分步长不变;(2)剩余区间分段,每次在区间内剩余部分由1开始划分段数,并计算步长,以第一点的x值加上步长为双圆弧终止点,计算双圆弧起始点与终止点的坐标的切线角度,再结合双圆弧起始点与终止点的连线的角度,计算出两点的弦切角;

步骤10、角度溢出处理:若起止点的弦切角超过 /-180°,则将弦切角减去或加上360°,计算起始点与终止点弦切角的插值,若插值的绝对值大于180°,且插值为负数,则将起始点的弦切角加上360°,若插值为正数,则减去360°;

步骤11、确定起点切线与公切点切线的夹角:根据起止点的弦切角,若起止点弦切角的乘积为正数,则此段双圆弧为c型双圆弧,若乘积小于零,则此段双圆弧为s型双圆弧,不同类型的双圆弧,计算自由角度,自由角度为起点切线与公切点切线的夹角;

步骤12、圆心、半径以及公切点的确定:根据弦切角、自由角度、正弦定理、起止点连线的长度,计算圆弧半径,由半径、起始点切线的法向量、公切点切线的法向量,计算出圆心与公切点坐标;

步骤13、误差计算:根据得到的双圆弧参数计算误差,在每段圆弧区间内按角度平均分段取拟合曲线上的点,点到圆心的距离与圆弧半径的差值就是误差,若双圆弧的误差大于给定值,则记为1,否则记为0;

步骤14、圆弧分段:双圆弧段数确定,若是标记为1,改变误差标记位的状态,将分段数加1,重新计算步长,若是标记为零,双圆弧的误差符合要求,将此段双圆弧的终点与切线角度当作下一段的起点与起点角度,对余下曲线重新分段,并将圆弧参数写入列表;

步骤15、若下一段起始点为列表最大值,逼近结束,若原来的曲线为反向曲线,则将圆弧列表反转,输出圆弧参数,否则,继续逼近,直到曲线逼近完毕,逼近完成继续筛选样条区间。

技术总结
本发明公开了一种基于离散点的曲线重构方法,本发明在离散点拟合为样条曲线的基础上采用双圆弧算法逼近原始曲线,算法最大程度保持了原始曲线形状,相对于直线逼近样条曲线,减少了圆弧段数;由于G1连续,两相邻圆弧交点处法线相同,切线夹角为零,减少了刀具转动,提高了切割速度。

技术研发人员:朱志松;刘宇;赵旭;张子立;严晓照
受保护的技术使用者:南通大学
技术研发日:2020.01.13
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-21082.html

最新回复(0)