复合插补法及其系统软件的制作方法

xiaoxiao2020-7-23  7

复合插补法及其系统软件的制作方法
【专利摘要】复合插补法及其系统软件,是计算机图形学核心【技术领域】里的一项新技术,它突破了目前国际上在该领域中,通常只能实现对直线、圆弧(部分系统可以对抛物线、椭圆)的直接插补生成,对非圆曲线只能靠直线或圆弧拟合的现状。本技术实现了对任意参数的渐伸线、阿基米德螺旋线、摆线、圆内外摆线、正余弦曲线、非圆二次曲线的直接插补生成,而且实现了对渐伸线、阿基米德螺旋线、非圆二次曲线等常用线型的平行线的插补生成,并解决了常用曲线及其平行线的光滑衔接问题,及能对相关曲线或其构成的图形实施任意旋转、扩缩、移动、对称等各种编辑还可显示其辅助线和相关参数。创建了将所生成曲线或图形编码的方法,数控设备无需插补运算仅解码数据即可作出要求的形状。这项技术将使计算机绘图、教学、相关科研及数控加工方法产生较大进步。
【专利说明】复合插补法及其系统软件
[0001]【技术领域】:本项目属于计算机图形学核心【技术领域】里曲线和图形生成与编辑的新方法,使用本方法编制的系统软件可直接生成含常用非圆曲线及其平行线的系列线型,并可显示其辅助线和相关参数,还能实现常用曲线及其平行线间的光滑衔接和对曲线或图形进行任意角度旋转等各种编辑功能,且可将已生成的各种曲线或图形进行数控编存解码等操作。
[0002]【背景技术】:在计算机绘图和数控加工的曲线生成相关技术方面,目前国际通用的方法是可以通过插补运算直接生成直线和圆弧,而对非圆曲线只能用直线或圆弧去分段拟合。本人在1989年2月申请并在之后已被授权的发明专利“复合逐点比较插补法及其系统软件”的项目中,解决了渐伸线、阿基米德螺旋线、摆线、圆内外摆线、正余弦曲线、椭圆、抛物线、双曲线等非圆曲线的直接插补生成问题。现在部分绘图系统也可对椭圆或抛物线进行插补,但是它们还未能真正成为计算机绘图和数控加工的母线。其原因在于,数控加工中刀具运行的中心轨迹应该是被加工工件轮廓的平行线,非圆曲线的平行线插补问题之前没有解决,还存在不同曲线或其平行线之间的光滑衔接问题,及由多种曲线构成图形的任意旋转、扩缩、剪切、延伸、移动、对称、矩阵、进退等编辑及复合编辑问题。另外现有数控设备执行机构运行时必需依赖即时插补运算,进而造成的微观阶梯式冲击和运行速度受到限制的问题也应该得到改善。
[0003]
【发明内容】
:针对以上背景和问题,若让常用非圆曲线与圆弧和直线一样真正成为计算机绘图或数控加工的母线,并从根本上提高数控加工的质量和速度,除必需让绘图或数控系统具有对非圆曲线的直接插补生成功能外,还应增加对常用非圆曲线的数控刀补功能,即也能直接插补生成相关曲线的平行线,并实现常用曲线及其平行线与其它曲线及其平行线的光滑衔接,还应具有对其构成的图形进行任意参数旋转、扩缩、剪切、延伸、移动、对称、矩阵、进退等编辑及选择或复合编辑功能。最好再创建数控编存解码方法,用于取代现有数控设备执行机构的即时插补运算过程,即设备运行时仅依靠已经运算完成的系列最终插补结果的组合编码数据驱动设备生成要求的图形。鉴于这些构想和对目标曲线的分析列出了系列课题:根据渐伸线、阿基米德螺旋线、摆线、圆内外摆线和正弦曲线的定义和性质,分析得出它们都存在与其参数对应的基圆,该基圆上每点的展开弧长又将作为曲线动点进给的变量基准,能在基圆相关点运行中用简易递推算法得到精确变化的弧长数据事关重要;针对常用曲线平行线生成和光滑衔接的目标,经分析部分曲线如圆弧、直线和渐伸线的平行线还是原曲线类型,通过改变相关参数就可解决刀补和衔接问题,而常用的椭圆、抛物线、双曲线及阿基米德螺旋线等线型的平行线已不再是其原来的线型,即不能通过改变原线型参数的方法得到其平行线,光滑衔接和自由旋转等编辑也相对较难;数控编存解码方法更无先例。下面分别说明本方法的主要技术特征和较具体的解决方法及其对应的数学模型:
[0004]1.复合插补法及其系统软件的主要技术特征
[0005]本复合插补法的主要特征是:这里采用自变量长度偏差修正法规正基圆轨迹,提高了作为许多非圆曲线复合插补变量基准的弧长递推计算精度,并在递推计算R倍弧长过程中依据不同R进行一定间隔的微量修正得到每步弧长这个变量基准;与该弧长基准相关的渐伸线和阿基米德螺旋线的生成是让其动点遵循弧长和角度复合变量基准运行,并在其动点位于X或Y轴极值点时作出判别并修改走向,即可在直角坐标系下生成可跨越象限任意长度的相关轨迹,并且可以在基准弧长较大时采用曲线长度细分计数以辅助控制线长,另外自变量长度偏差修正法也可用于修正常用非圆曲线轨迹与基准量的偏离;同样涉及圆弧长度的摆线、圆内外摆线和正弦曲线为其动圆沿导轨运动,动圆上的点与其导轨复合运动产生的轨迹,只要让动圆转动的弧长与导轨弧线长按比例同步运行,并将其相关点的位置相应叠加,即可得到该曲线或其变幅曲线;对常用曲线及其组成的图形绕自身原点或另外设定点的任意角度转动、对称、移动、扩缩、矩阵及剪切、衔接、倒退、删除、恢复、插入、追加的编辑及选择或复合编辑等操作是在曲线运行前,根据编辑项目和数据要求对用户程序相关的数据和指令进行修改处理后启动运行实现的,但非圆二次曲线的自由旋转对角度N中超过±90°的90倍数部分用修改用户程序数据和指令,小于90°部分用在程序启动预置后的运行中按标准曲线偏差和进给运算加与转角对应的位移分量的递推算法处理;在常用曲线的平行线生成和两条线段的光滑衔接方面,对渐伸线等仍可保持原线型的曲线平行线采用移动起点位置改变相关参数的方法实现,对已改变了原曲线性质的常用非圆二次曲线和阿基米德螺旋线等的平行线生成的方法是根据曲线的性质采用简化的递推算法数学模型顺序取得原线法向等距点的集合,光滑衔接则是相关曲线对应点切线角度一致的吻合;数控编码方法是在曲线或图形绘制及编辑完成后,根据设定的二轴叠加每次移动步距,在曲线或图形重绘时编辑生成代表每次步距和走向的系列数据。下面分别阐述相关数学模型的建立依据与主要逻辑判别方法:
[0006]2.自变量偏差修正规制基圆曲线轨迹保证递推计算弧长的精度
[0007]因为计算机绘图或数控运行的轨迹均是建立在直角坐标系基础之上,由被控动点沿平行于X、Y轴的运动构成各种曲线,该动点与基准量之间的偏差运算和判别是计算机图形中曲线轨迹生成的依据,长度偏差是插补方法中最基本最常用的偏差运算。圆在直角坐标系下基本方程式为:X2+Y2 = R2其轨迹生成的长度偏差判别式可以简单的确定为:F = X2+Y2-R2其中R为常量基准,其轨迹生成中常用的递推运算公式为:当X±1时:F =F±2*X+1,当Y±1时:F = F±2*Y+1,依此偏差的正负和走向指令结合,可以控制动点在沿基准R内外一个运算单位内的X、Y的正或负方向交替运行,形成微观阶梯状态的圆弧轨迹,因为位于坐标轴附近的该轴向坐标值远大于另一方向的坐标值,坐标值越大在偏差运算的权重上也越大,使在坐标轴附近的被控动点沿该轴向走一步偏差即反向改走另一方向,动点在另一方向要走许多步偏差才能再反向,构成圆弧的微观折线靠向坐标轴前在此轴向应为逐步增加的走向,而过坐标轴后此轴向应变为逐步减小的走向,因此造成被控动点在接近坐标轴前主要沿基准R外侧运行,过坐标轴时突然凹下,离开坐标轴附近主要沿基准R内侧运行,如图1所示,存在坐标轴上偏离最大,轴二侧的圆弧轨迹不对称问题。
[0008]作为圆弧长度控制和与许多非圆曲线生成相关的圆弧长变量的计算,这里设圆周上动点至圆心的半径R与X轴夹角为a,动点沿X轴向进给一步,对应的圆切线长度为H =l*sin(a) = Y/R,而RH = Y,动点沿Y轴向进给一步,对应的圆切线长度为H = l*cos (a)=X/R,而 RH = X,即:当 X±1 时 RH+Y,当 Y±1 时 RH+X,当 RH >= R 时 RH-R,H± 1,这里以 RH作为逐步递推计算圆弧长的基础,因此圆轨迹相对基准R的偏离,轴对称位置X或Y数据的差异,将影响递推弧长计算的精确度。
[0009]为了解决这个问题,针对轨迹偏离的最大点在坐标轴上,并随动点的移动逐渐减小,在二坐标轴的角分线45°处恰好跨越基准R的状况,这里采用其自身变量修正偏差的方法,减小圆的轨迹相对基准R的偏离。原理是在坐标轴至角分线45°处对其基准量R进行最大为0.5个运算单位至O的正负变量修正,如图2所示。例如动点在Y轴上其坐标为(O, Y = R),此时修正判别式为 F = 02+Y2-(R+0.5)2 = 0-R-0.25 < 0,当 F < O 时应该 Y 不变而进行X+1的动作,此时修正判别式的R = Y,而0.25可以忽略,等同于F-Y,并随Y值的减小逐渐减少修正量,而要达到在一个象限的中间45°处修正量为零,之后该R修正量应变为负值并且其绝对值逐渐增大,直到X轴时为负的最大值R-0.5,即F = X2+0-(R-0.5)2 =0+R-0.25,同时引入该圆的自身变量X等同于F+X。由Y轴向X轴运行的1/4象限中间各点的修正偏差应该是F = F-Y+X,而由X向Y轴运行的1/4象限中间各点的修正偏差应该是F=F-X+Y,这是满足在坐标轴上基准R±0.5最大修正量,然后逐渐减少修正量的绝对值到X轴与Y轴对角线45°处修正量为O并开始修正值的正负变换,这是曲线的自变量偏差修正公式。任意起点的圆运行前均可用该式进行偏差预置。而在曲线运行中仅将原来的递推运算公式最后的+1改为+2即可。原因是在1/4象限中,其F偏差修正值由-R到+R总修正量为2*R,满1/4象限时由F-(Y或X)到F+ (X或Y)总步数为X步+Y步=2*R步,而F判别式是X、Y变化的每步必算的,所以每步多+1即等于总修正量为2*R,而且也满足由R+0.5到R-0.5和在象限中间45°处不修正的设想。因为有起步前按动点起始位置X、Y的偏差修正预置,对任意起止点或不满1/4象限的曲线运行中的偏差递推修正式+1改+2同样可以达到理想的修正目的。即:
[0010]当X±1 时:F = F±2*X+2,当 Y± I 时:F = F±2*Y+2 ;
[0011]在象限变换时应进行缺项的F-X或F-Y的偏差修正预置。此方法还适用于曲线平行线和其它曲线长度偏差判别的公式,尤其对渐伸线、阿基米德螺旋线、摆线、圆内外摆线和正余弦曲线等以圆作基准量的场合更需要。
[0012]为了进一步提高递推方法计算的弧长精度,这里根据递推算法得到的弧长与常规算法得到的标准弧长值之间的微小误差,作出了针对不同R每运行N步再对R倍弧长修正土 I个运算单位的R-N微数据库,在含求取弧长的线段插补运算前的程序启动时根据R调出该数据N,在正常插补运算中对圆弧长度递推运算中每步X或Y± I时RH± (Y或X)后,每隔N步再插入对RH±1的微量修正,每次的修正量为1/R个运算单位,用以提高作为基准数据的准确性。弧长的累计和取整还是当RH > = R时,RH-R,整数圆弧长H±l。
[0013]3.弧长变量相关曲线的复合插补及对非圆曲线的长度偏差修正方法
[0014]与上述弧长变量基准相关的渐伸线、阿基米德螺旋线、摆线、圆内外摆线、正弦曲线等线形生成中涉及的复合插补数学模型和对渐伸线、阿基米德螺旋线相对于其基准弧长的自变量长度偏差修正法说明如下:
[0015]渐伸线动点Xd、Yd相对基圆X、Y切点的展开弧长H,如图3所示。该长度偏差F1 =Χ/+Υ/-Η2,这里也参照对圆弧长度偏差修正的方法根据动点所在象限,在其起步前进行相当于对基准变量H加减最大0.5个运算单位的偏差修正预置即=F1 = RiXd^Yd,运行中当被控动点本身的&±1时# =匕±2杜(1+2,¥(1±1时# =匕±2朴(1+2 ;但对由同步运行的基圆切点的移动引起的Xd±l、Yd± I变化,将根据切点所在象限对应的动点本身移动产生的xd、Yd加减变化是否一致,设定F1 =或F1 = ^±2^的后面是否需要再+2处理,
一致则加相反则不加,因为作为基准的H为变量,在极值点换象限或起步偏差修正预置时使用的是当时的H值,由基圆上切点变化引起H的伸缩也应在偏差修正中予以体现,预置时减掉的Xd*Yd为初值,在随后的递推偏差计算式的+2处理中相当于每步多加I使预置的修正值复原,并经中间O修正后逐渐使该修正值到下一个极值点变为加Yd*Xd,而对由于基圆上切点移动产生基准H变化的部分,恰好可用其对应的偏差递推计算式中的+2相当于修正量加I或不加相当于修正量减1,使修正量对应于基准值H的变化。另外F1与H变化相关的递推算式:当H±1时F1 = F1-+2*H-lo由渐伸线的参数方程Xd = R*cos(a)+Ra*sin(a) ,Yd=R氺sin (a) —Ra氺cos (a)求导得 dx/da = Ra氺cos (a), dy/da = Ra氺sin (a), dy/dx = tan (a),dy/dx = 0时Y = 0, dx/dy = ctan(a), dx/dy = 0时X = 0,说明渐伸线的极值点与基圆过坐标轴点垂直对应。角度偏差则取基圆切点至圆心半径的斜率Y/X与基圆切点至渐伸线被控动点展开切线的斜率Xd/Yd互相垂直即:Xd/Yd = Y/X取将其扩大X*Yd倍的差值作为角度偏差判别公式Fa = X*Xd_Y*Yd,因X、Yd均为正整数不影响运算结果的正负。其递推公式为:
[0016]当X土 I 时,Fa = Fa±Xd,当 Xd± I 时,Fa = Fa±X ;
[0017]当Y± I 时,Fa = Fa_+Yd,当 Yd± I 时,Fa = Fa_+Y ;
[0018]对在极坐标系下的阿基米德螺旋线,极径长度H = R*al其中R为伸缩系数常量,al为由极点和极轴起始的回转角度变量,而H恰好是R为半径的基圆与al弧度对应的弧长。因为计算机图形是建立在直角坐标系基础上的,将上述螺旋线的极点与原点对应将其移入直角坐标系,将al分为H = O的极轴与X轴正向夹角a0为初始角度常量(X轴起顺时针取正值逆时针取负值)和与X轴相关的角度变量a,并规定a+aO > = 0,代表极径H与a变化相关的H = R*(a+aO)的外端点(Xd、Yd)描绘的轨迹就是在直角坐标系下的阿基米德螺旋线,该螺旋线基圆的R与螺旋线的极径H都在由原点和极点起的同一条射线上角度一致。该螺旋线的Xd2+Yd2 = H2如图4所示,相关长度偏差判别式为=F1 = X/+Y/-H2,对其轨迹和偏差判别式的修正要考虑该曲线各轴向极值点不与坐标轴重合,故以其在一个象限内的极值点为界按X、Y走向可将该线段分为与基圆同向或异向两部分,对同向部分参照圆弧长度偏差判别修正的思路,根据所在象限进行单变量修正,对扩展型在起步或极值换限时将F1减掉X或Y极值向的Xd或Yd值,相当于在极值点处对基准H进行最大接近+0.5和随离开极值点而减小的修正,对收缩型在起步或坐标轴上象限变换时将F1加上由X或Y轴开始从O增加项的Xd或Yd值,相当于在坐标轴处对基准H进行最小为O并逐渐增加的修正,即F1 =FiiXd或F1 = FiiYd并以此进行线段起步及运行中变换象限或极值点时的偏差预置,运行中预置对应项的Xd± 1,Yd± I变化时F1 = &±2*&+2或& =而未预置项Xd± 1,Yd±l变化时F1 = ^±2^+1或F1 = [±2*1+1不变,扩展型在运行到坐标轴同向部分结束时由递推算式的+2多加I使修正值恢复为0,而收缩型同向部分由起步或换限预置开始通过对预置项运行中递推算式的+2多加I至该象限的极值点结束相当于F1 = ^+(Xd或Yd的最大值),此时为对基准H进行负最大接近-0.5的修正,在该处应用F1 = F1-(Xd或Yd)将F1恢复到修正值为O的状态,准备进入螺旋线与其基圆走向不同的部分。对一个象限内螺旋线与其基圆走向不同的部分这里不进行长度偏差的修正,螺旋线的F1与H变化相关的递推算式:当H±1时匕=&-+2*Η-1。对螺旋线的在直角坐标系下角度偏差的处理,根据代表螺旋线伸缩系数的基圆半径R(X、Y)的角度应与螺旋线被控动点至坐标原点(基圆中心)连线的极径H (Xd、Yd)角度相同Yd/Xd = Y/X的原则,取其差值Yd/Xd_Y/X再扩大X*Xd倍不影响偏差的正负即:Fa = X*Yd-Y*Xd,其递推公式为:当X±1时,?& = ?&±¥(1,当¥(1±1时,Fa = Fa±X ;当Y± I时,Fa = Fa_+Xd,当Xd± I时,Fa = Fa_+Y ;对螺旋线的X、Y向极值点以对应轴向的导数为O求取,阿基米德螺旋线在直角坐标系下表示Xd、Yd的方程式为:Xd =R* (a+aO) *cos (a), Yd = R* (a+aO) *sin (a), dx/da = R*cos (a) -R* (a+aO) *sin (a), dx/da = O时 dx/dy = O 为 X 向极限值,此时 R*cos(a) = R* (a+aO) *sin (a)得(a+aO) = ctan(a)其中(a+aO) = H/R, ctan (a) = X/Y 即 H/R = X/Y。在 Y轴向 dy/da = R*sin (a) +R* (a+aO) *cos (a),dy/da = O 时 dy/dx = O 为 Y 向极限值,此时 R*sin(a) = -R*(a+aO)*cos (a)得(a+aO)= -tan(a)因为通常(a+aO)为正值Y向极限值在2、4象限,其X、Y值的符号各异所以式中出现负号,这里取变量的绝对值计算故负号可忽略,得到H/R = Y/X,取其等式的R*Y或R*X倍为螺旋线的X、Y向极值点判别式,X轴向=Fj = H*Y-R*X,Y轴向=Fj = H*X_R*Y按此式进行偏差预置和判断t > O为螺旋线与基圆同向侧,Fj = O为螺旋线极值点,Fj < O为螺旋线与基圆异向侧,运行中以h递推运算结果的正负变换时为极值点,Fj递推算式:
[0019]当H±1时X向极值Fj = F」±Y Y向极值Fj = FjiX;
[0020]当X± I 时 X 向极值 Fj = Fr+R Y 向极值 Fj = Fj±H ;
[0021 ]当 Y± I 时 X 向极值 Fj = Fj±Η Y 向极值 Fj = Fr+R ;
[0022]对采用弧长H计数的渐伸线或阿基米德螺旋线,在H较大时可以使用渐伸线或螺旋线的曲线长度细分计数以辅助控制线长,是指对曲线长JJ参照圆弧长度的递推算法,取中间变量 Hjl,当 Xd±l 时:Hjl+Yd,当 Yd±l 时:Hjl+Xd,当 Hjl > = H 时 JJ± 1,Hjl_H。
[0023]圆沿直线导轨滚动圆周上一点形成摆线轨迹,如图5所示,保证滚动的条件是圆周长度与直线长度始终相等,其圆周长度按上述修正方法计算,直线长度L的递推计算方法,取直线起点为直角坐标系的原点至终点的X、Y构成斜边为R的直角三角形,如图6所示,根据勾股定理R = sqrt(X2+Y2), R与X轴的夹角为a, cos(a) = X/R, sin (a) = Y/R,设定线长为L,取中间变量R倍L为RL,当X+1时:L = L+l*cos (a) = L+X/R,扩大R倍RL =RL+X,同理当 Υ+l 时:L = L+l*sin(a) = L+Y/R,扩大 R 倍 RL = RL+Y,若 RL > = R 则:RL_R,L± I,以此计算直线的线长L。与之相关的变幅摆线导轨线长Lg和其变幅系数M与动圆弧长Hd和其变幅系数N同步时Lg*M = Hd*N以Lg*M与Hd*N的大小交替运行。
[0024]圆内外及其变幅摆线,如图7所示,导轨圆弧长Hg和其变幅系数M与动圆弧长Hd和其变幅系数N同步时Hg*M = Hd*N以Hg*M与Hd*N的大小交替运行。正弦曲线,如图8所示,则依直线ΧΛ线长L与圆弧长H同步运行,即L2 = X1WY12 = H2定义其偏差判别式为F1=X1^Yx2-H2以F1的正负交替运行,取线的轴向分量与圆弧的垂直于轴向的振幅分量的组合轨迹。它们的圆弧长度H相关计算均采用上述的偏差预置和递推运算中修正的方法以确保曲线生成精度的要求。
[0025]4.常用曲线顺逆时针转动角度的处理方法
[0026]本系统设定:转角N输入时顺时针取正值逆时针取负值,构建于直角坐标系的常用曲线,其任意角度的转动是怎样实现的呢?这里采用了对非圆二次曲线之外的常用曲线在运行前的预置处理或编辑程序中,以曲线的坐标原点或另外的编辑中心点计算转动角度后的动点新坐标重置起点坐标,并根据新起点是否过象限等情况视需要更改运行指令的前期处理,然后在程序运行中通常按转动后的数据和指令运行即可。
[0027]二次曲线的转动,这里采用在转角N的绝对值大于90°时,对90*n部分用修改指令和η为奇数时将X、Y相关的数据互换的方式处理,之后对余下小于90°的al = abs(N%90)部分,采用起步前按90*n转动后的标准曲线的X、Y值加转动al后预置被控动点V、V坐标,在运行中按90*n转动后的标准曲线的X、Y值进行偏差运算,对实际被控动点X'、V按标准Χ、Υ进给量加与转角对应的位移分量的递推算法进行处理。即起步前依据新X、Y所在象限及N为顺逆时针转向X轴或Y轴,计算转动角度al后被控动点X' Y'的坐标,如图9所示为:
[0028]V = X*cos(al)土Y*sin(al), Y' = Y*cos(al)_+X*sin(al);
[0029]根据上式还可以算出没有转动al前标准二次曲线上的某点与该曲线转动al角度后该点于 X 向和 Y 向的位移分量为:dx = IX-X' I = X* (1-COS (al)) -+Y*sin (al), dy =
Y-Y; I = Y*(l_cos(al)) ±X*sin(al);此位移量可以作为曲线运行中转动al角度时递推运算的依据,当按标准曲线插补运算结果为:x±l或Y±1时对应转动al角度,实际X'和Γ应移动的量为:
[0030]当X±1时:dx式中多出土(l-cos(al))项,dy式中多出土sin(al)项,此时X向位移应为:x' ±(l-cos(al)),Y 向位移应为:Y' 土sin(al);
[0031]当Y±1时:dy式中多出土(l_cos(al))项,dx式中多出-+sin(al)项,此时Y向位移应为:Y' ± (l-cos(al)),X向位移应为:X' -+Sin(al);其中因al是常量可在动点运行前的数据预置时算好三角函数值,以避免递推运算中解三角函数。为取整数运算,可将dx、dy和该三角函数值乘以固定系数(例如:10000)使其变为整数便于计算,这里设:A2 =sin (al) *10000, A3 = (1—cos (al)) *10000,当 X± I 时:dx±A3, dy ±A2,当 Y± I 时:dy ±Α3,dx-+A2,在当 dx >= 10000 时 X' +1,dx-10000 或 dy > = 10000 时 Y' +1,dy-10000,在当 dx <= 10000 时 X' -l,dx+10000 或 dy <= 10000 时 Y' _1,dy+10000,式中的正负运算符号应根据被控动点所处象限和其走向确定,这是本方法中对非圆二次曲线本身顺逆时针转动任意N角度时,使用的曲线轨迹中被控动点按标准偏差位移后加相应转角位移分量的递推运算方法。
[0032]5.常用曲线之间的光滑衔接及其平行线生成的方法:
[0033]常用非圆二次曲线、渐伸线和阿基米德螺旋线等同类及互相之间的光滑衔接及其平行线的生成和它们的平行线之间的光滑衔接的实现,是关系到该曲线能否真正成为计算机绘图或数控加工母线的关键问题。因为圆和直线的平行线及二线衔接问题,只要依据圆半径、线斜率设定或改变相应数据即可处理,属于初等数学范畴比较容易解决的课题。这也是它们在计算机绘图或数控加工领域得到广泛应用的一个重要原因。若实现上述其余的常用非圆曲线本身的生成,涉及到用简化的递推计算数学模型解决相当于高等数学范畴的微积分课题,同样若实现包括它们的平行线的生成及二线间的光滑衔接,也应该涉及到用简化的数学模型解决三角函数和微积分运算的课题。其中比较直观和相对容易解决的是以基圆的展开切线端点勾画的渐伸线,因为渐伸线的法线就是展开的基圆切线,而渐伸线某点的切线应与该点对应基圆切点的圆半径平行。这可由对渐伸线参数方程:x =Rcos (a) +Rasin (a),Y = Rsin (a) -Racos (a),求导:dx/da = Racos (a),dy/da = Rasin (a),dy/dx = tan (a),而tan (a) = Y0/\, Y0/X0为基圆上对应点至圆心半径的斜率而得到证实。因此与生成渐伸线的平行线相关的法线角度等于对应的基圆切线的角度,与渐伸线端点衔接的其它曲线的端点切线角度应与渐伸线端点至其基圆的切点到圆心的基圆半径角度一致。其它二次曲线和阿基米德螺旋线的平行线生成及衔接问题相对较难,但同样可以靠建立简单的能进行三角函数和微积分递推运算的数学模型解决相关的课题,下面分别加以说明。
[0034]5.1抛物线的平行线生成及与其它曲线光滑衔接相关数学模型和方法
[0035]以焦点在Y轴开口向上的抛物线为例,如图10所示,其标准方程为:
[0036]X2 = 2PY求导:2X = 2?Y'即:Y' = X/P与该抛物线的X点对应的导数即切线角度为:a = atan(X/P),在抛物线端点的该角度即为该抛物线与其它曲线光滑衔接时应与其它曲线端点的切线一致的角度,在抛物线的平行线生成过程中也用到该角度。设其平行线与抛物线的垂直距离为M,则在抛物线X点作M长法线,该法线分量为:Mx = M*sin (a) My =M*cos (a)即:Mx/My = X/P则其平行线的角度偏差判别式为:Fb = Mx/My-X/P因实际判别时仅要求偏差的正负,为简化运算并提高精度故可将上式扩大P*My倍,即:Fb = Mx*P_My*X而平行线与原线的间距偏差判别式为:Fm = Mx2+My2-M2曲线运行时依据表示动点所处的象限和其走向的指令,由Fb的正负判断该走原线还是该走其平行线,再由Fm的正负判断该走平行线的X正负方向或Y正负方向。运行起步前的Fb和Fm偏差预置时按上述原式计算,Fm参照圆的偏差加Fm = Fm-My+Mx ;或Fm = Fm+My-Mx修正,运行之中Fb和Fm均采用递推算法。(之后在抛物线转动角度后生成其平行线过程中Fm算式均不变)即:
[0037]当原线的X±1 时:Fb = Fb-+My ;
[0038]当其平行线的Mx± I 时:Fb = Fb+-P ;Fm = Fm±2*Mx+2 ;
[0039]当其平行线的My±l 时:Fb = Fb_+X ;Fm = Fm±2*My+2 ;
[0040]当抛物线转动角度N时与其平行线生成相关的Fb算式随之变化,如图11所示,如前述转角N输入时顺时针取正值逆时针取负值,对N的绝对值大于和等于90°的情况,对其90*n部分用修改指令和η为奇数时对换Χ、Υ坐标数据等方法解决,抛物线导数的求取按转90*η部分处理后的标准状态进行,对余下小于90°的al = abs(N% 90)部分的处理方法为:在标准状态当焦点在Y轴取切线与X轴夹角为a值,a、Mx、X、My、Y均取正值,若抛物线上动点的切线方向与其焦点轴转角N方向相同,都处于奇或偶象限且a >= al时:a_al为抛物线转动后的X点切线相对X轴或法线相对于Y轴的夹角,该线转动al角度后切点X 至其法向等距点 M 的 X、Y 分量为:Mx = abs (M*sin (a_al)), My = abs (M*cos (a_al)),因tan (a) = X/P 设 tan (al) = A, Mx/My = tan (a~al) = (X/P-A)/ (1+(X*A)/P) = (X_P*A)/(P+X*A)可设角度偏差判别式为:Fb = Mx/My-(X-P*A)/(P+X*A)将其扩大My* (P+X*A)倍正负结果不变为:Fb = Mx*P+Mx*X*A-My*X+My*P*A ;(I)
[0041]因角度a为在标准状态下Y焦轴抛物线上的X点切线相对于X轴的夹角,当转角al = a时将X点切线转到与X轴平行,X点法线转到与Y轴平行的位置,此时Mx = O,My =M为抛物线转al角度后,其平行线的Y向极值和My的换向点。
[0042]当抛物线动点的切线与焦点转角N方向相同都处于奇或偶象限且3 < al时:al_a为X点切线相对于X轴或法线相对于Y轴的夹角,其法向等距点M转al角度后X、Y分量为:Mx = abs (M*sin (al_a)) ,My = abs (M*cos (al_a)),也即:Mx/My = tan (a 1-a) = (A_X/P)/(1+(X*A)/P) = (P*A-X)/(P+X*A)从而可设角度偏差判别式为:Fb = Mx/My-(P*A_X)/(P+X*A)将其扩大My*(P+X*A)倍正负结果不变为:Fb = Mx*P+Mx*X*A_My*P*A+My*X ;(2)
[0043]当切线与转角方向不同处异象限a+al为抛物线转动后的X点切线相对于X轴或法线相对于Y轴的夹角,a+al = 90°与My = O为抛物线的平行线转动N后的X向极值点,即Mx走向变换点。a+al <=90°时:切点X至法向等距点M转后的X、Y分量为Mx = abs (M*sin (a+al)), My = abs (M*cos (a+al))此时 Mx/My = tan (a+al) = (X/P+A) /(1- (X*A) /P) = (X+P*A) / (P-X*A)从而可设角度偏差判别式为:Fb = Mx/My- ((X+P*A) /(P-X*A)取其扩大 My* (P-X*A)倍正负结果不变:Fb = Mx*P_Mx*X*A-My*X_My*P*A ;(3)
[0044]当切线与转角方向不同处异象限a+al > 90°时:切点X至法向等距点M转后的 X、Y 分量为:Mx = abs (M*cos (a+al-90)), My = abs (M*sin (a+al-90)),因 a+al >90° tan (a+al)本身为负值,而 Mx 和 My 为正值所以:Mx/My = -tan (a+al) = - (X/P+A) /(1- (X*A) /P) = - (X+P*A) / (P-X*A)从而可设角度偏差判别式为:Fb = Mx/My+ (X+P*A) /(P-X*A)其扩大 My* (P-X*A)倍正负值不变:Fb = Mx*P_Mx*X*A+My*X+My*P*A ;(4)
[0045]运行起步前的Fb和Fm偏差预置时按上述原式计算,Fm参照圆的偏差加Fm =Fm-My+Mx ;或Fm = Fm+My-Mx修正,运行之中Fb和Fm也采用递推算法以(I)式为例。即:
[0046]当原线的X±1 时:Fb = Fb+_Mx*A_+My ;
[0047]当其平行线的Mx± I 时:Fb = Fb+-P+_X*A ;Fm = Fm±2*Mx+2 ;
[0048]当其平行线的My± I 时:Fb = Fb_+X+_P*A ;Fm = Fm±2*My+2 ;
[0049]因本系统的变量Mx、X、My、Y均取绝对值进行运算,角度a也是取其相对于X轴的夹角,故在偏差运算方面Y焦轴上下开口的抛物线算式可以原点对称通用。但其平行线Mx和My走向,依动点所在象限和指令及偏差的正负进行不同判定,并且在Mx = O和My = M或Mx = M和My = O时,变更Mx或My的走向,并进行不含Mx = O或My = O项的偏差再预置。
[0050]同理要生成焦点在X轴的抛物线的平行线或与其它曲线光滑衔接,对其方程Y2=2PX求导:2Y = 2ΡΧ'即.Χ = Υ/Ρ与该抛物线的Y点对应的导数即切线角度为:a =atan (Y/P),因此角度为相对于Y轴的角度,其端点相对于X轴的该角度90_a是与其它曲线光滑衔接时与其端点切线一致的角度。作抛物线的平行线时,设平行线与抛物线的垂直距离为M,则在抛物线Y点作M长法线,该法线分量为:Mx = M*cos (a) My = M*sin (a)即:My/Mx = Y/P也可推导出相应的一组Fb和Fm偏差判别式及简化的递推算式(推导从略)。
[0051]焦点在X轴上无转动的抛物线平行线相关的偏差判别式:
[0052]Fb = My*P_Mx*Y, Fm = Mx2+My2-M2,再进行 Fm±Mx_+My 的修正。
[0053]运行之中Fb和Fm均采用递推算法。即:
[0054]当原线的Y± I 时:Fb = Fb-+Mx ;
[0055]当其平行线的Mx± I 时:Fb = Fb-+Y ;Fm = Fm±2*Mx+2 ;
[0056]当其平行线的My± I 时:Fb = Fb+_P ;Fm = Fm±2*My+2 ;
[0057]焦点在X 轴有转动 N(顺时针为正),a = atan (Y/P),al = abs(N% 90), A =tan(al),间距为M的抛物线平行线偏差判别式(推导从略)Fm不变,Fb以a = al或a+al=90及Mx = O或My = O的极值点为界分为4种算式,并变换极值点相关Mx或My走向:
[0058]a > = al:Mx = M*cos (a_al)My = M*sin(a_al)
[0059]Fb = My*P+My*Y*A_Mx*Y+Mx*P*A ;---(5)
[0060]a < al:Mx = M*cos (a 1-a) My = M*sin(al_a)
[0061]Fb = My*P+My*Y*A+Mx*Y_Mx*P*A ;---(6)
[0062]a+al <=90°:Mx = M*cos (a+al) My = M*sin(a+al)
[0063]Fb = My*P-My*Y*A_Mx*Y_Mx*P*A ;---(7)
[0064]a+al > 90°:Mx = M*sin (a+al-90。)My = M*cos (a+al-90。)
[0065]Fb = My*P_My*Y*A+Mx*Y+Mx*P*A ;---(8)
[0066]这也是程序运行前或程序运行中需要变换算式时抛去某个带有O变量项的偏差预置算式,运行之中Fb和Fm也采用递推算法以(5)式为例:
[0067]当原线的Y±1 时:Fb = Fb+_My*A_+Mx ;
[0068]当其平行线的Mx± I 时:Fb = Fb-+Y+_P*A ;Fm = Fm±2*Mx+2 ;
[0069]当其平行线的My± I 时:Fb = Fb+_P+_Y*A ;Fm = Fm±2*My+2 ;
[0070]其Fb判别式也可以作成Fb = X/P-Mx/My或Fb = Y/P-My/Mx的形式,此时与其相关的逻辑判别关系也要相应的正负反向。
[0071]5.2双曲线的平行线生成及与其它曲线光滑衔接的数学模型和方法
[0072]双曲线的标准方程为(焦点在X轴):X2/A2-Y2/B2 = I (焦点在Y轴):Y2/B2-X2/A2=1,如图 12 所示,求导:2X/A2-2YY/ /B2 = O 或 TiV /B2_2X/A2 = O 即:Y' = B2X/A2Y 双曲线的导数即切线斜率为:B2X/A2Y,与该切线对应的角度为:a2 = atan (B2X/A2Y),在双曲线端点的该角度即为该双曲线与其它曲线光滑衔接时应与其它曲线的端点的切线一致的角度。而与该切线垂直的法线角度取正值为:a = atan(A2Y/B2X),在双曲线的平行线生成方面,设其平行线与双曲线的垂直距离为M,则在双曲线上一点作M长法线,该法线X、Y分量为:Mx = M*cos(a)My = M*sin(a)即:A2Y/B2X = My/Mx则其平行线的角度偏差判别式为:Fb=A2Y/B2X-My/Mx因实际判别时仅要求偏差的正负,为简化运算并提高精度,因X、Y、Mx、My运算中取绝对值,故可在Fb等式两侧乘B2XMx用:Fb = Mx*A2*Y-My*B2*X取代前式。而平行线与原线的间距偏差判别式为:Fm = Mx2+My2-M2曲线运行时依据表示动点所处的象限和其走向的指令,由Fb的正负判断该走原线还是该走其平行线,再由Fm的正负判断该走平行线的X正负方向或Y正负方向。运行起步前的Fb和Fm偏差预置时按上述原式计算,Fm参照圆的偏差加Fm = Fm-My+Mx ;*Fm = Fm+My-Mx修正,运行之中Fb和Fm参照圆的修正递推算法为(Fm相关的判别式及其修正和递推算式在之后的转角处理时不变):
[0073]当原线的X±1 时:Fb = Fb_+My*B2 ;
[0074]当原线的Y± I 时:Fb = Fb+_Mx*A2 ;
[0075]当其平行线的Mx± I 时:Fb = Fb+_A2*Y ;Fm = Fm±2*Mx+2 ;
[0076]当其平行线的My±l 时:Fb = Fb_+B2*X ;Fm = Fm±2*My+2 ;
[0077]当双曲线转动角度N时其平行线生成的Fb算式也应随之变化,如图13所示,如前述转角N输入时顺时针取正值逆时针取负值,对N的绝对值大于和等于90°的情况,对其90*n部分用修改指令和η为奇数时对换X、Y坐标数据等方法解决,双曲线导数的求取按转90*η部分处理后的标准状态进行,对余下小于90°的al = abs(N% 90)部分的处理方法为:在标准状态取法线与X轴夹角为a值,角度a、Mx、My、X、Y均取正值。若转角al使双曲线对应线段靠向Y轴则其法线转向X轴,当a > = al时:a_al为双曲线转动al后其法线相对X轴夹角,该法线X、Y分量为:Mx = abs(M*COs(a-al)),My = abs (M*sin (a_al)),设 C = tan (al), tan (a~al) = ((A2*Y) / (B2*X) _C) / (1+(A2*Y) /(B2*X)*C) = (A2*Y-B2*X*C)/(B2*X+A2*Y*C) = My/Mx,从而可设角度偏差判别式为:Fb =(A2*Y-B2*X*C) / (B2*X+A2*Y*C)-My/Mx ;其简化判别式为:Fm 不变,Fb = Mx*A2*Y_Mx*B2*X*C-My*B2*X-My*A2*Y*C ;式中因 A2、B2、C 均为常数故可设:C1 = A2、C2 = B2*C、C3 = B2、C4 =A2*C 这样上式可以简化为:Fb = Mx*Cl*Y-Mx*C2*X-My*C3*X-My*C4*Y ;(9)
[0078]当a = al与My = 0时为平行线X向极值点,即Mx走向变换点。
[0079]ia<al时:al-a为双曲线转动后其法线相对X轴的角度,该法线X、Y分量为:Μχ=abs (M*cos (al_a)) ,My = abs (M*sin (al_a))设C = tan(al) ;tan (a 1-a) = (C_(A2*Y)/(B2*X))/(1+(A2*Y)/(B2*X)*C) = (B2*X*C_A2*Y)/(B2*X+A2*Y*C) = My/Mx ;从而可设角度偏差判别式为:
[0080]Fb = (B2*X*C_A2*Y) / (B2*X+A2*Y*C)-My/Mx ;其简化判别式为:
[0081 ] Fb = Mx*C2*X-Mx*Cl*Y-My*C3*X_My*C4*Y ;— (10)
[0082]若转角al使双曲线对应线段靠向X轴则其法线转离X轴,使该法线相对X轴的角度加大,即:a+al为双曲线转动后法线相对X轴的角度,a+al = 90°与Mx = O为平行线Y向极值点,即My走向变换点。
[0083]当a+al < = 90。时:该法线的 X、Y 分量为:Mx = abs (M*cos (a+al)), My=abs (M*sin (a+al)),设 C = tan (al), tan (a+al) = ((A2*Y) / (B2*X)+C) / (1-(A2*Y) /(B2*X)*C) = (A2*Y+B2*X*C)/(B2*x-A2*Y*C) = My/Mx ;从而可设角度偏差判别式为:Fb =(A2*Y+B2*X*C) / (B2*X-A2*Y*C)-My/Mx ;其简化判别式为:
[0084]Fb = Mx*Cl*Y+Mx*C2*X_My*C3*X+My*C4*Y ;— (11)
[0085]当a+al > 90。时:该法线的 X、Y 分量为:Mx = abs (M*sin (a+al-90° )),
[0086]My = abs (M*cos (a+al-90。)),设 C = tan (al),还因 a+al > 90。tan (a+al)本身为负值,而 Mx 和 My 为正值所以:My/Mx = -tan (a+al) = - ((A2*Y) / (B2*X) +0/(1-(A2*Y) /(B2*X)*C) = -(A2*Y+B2*X*C)/(B2*X-A2*Y*C) = My/Mx ;从而可设角度偏差判别式为:Fb =(A2*Y+B2*X*C) / (B2*X-A2*Y*C)+My/Mx ;其简化判别式为:
[0087]Fb = Mx*Cl*Y+Mx*C2*X+My*C3*X_My*C4*Y ;—(12)
[0088]运行起步前的Fb和Fm偏差预置时按上述原式计算,Fm参照圆的偏差加Fm =Fm-My+Mx ;或Fm = Fm+My-Mx修正,运行之中Fb和Fm也采用递推算法以(9)式为例。即:
[0089]当原线的χ±? 时:Fb = Fb-+Mx*C2_+My*C3 ;
[0090]当原线的γ±? 时:Fb = Fb+-Mx*Cl_+My*C4 ;
[0091]当其平行线的Mx± I 时:Fb = Fb+-Cl*Y-+C2*X ;Fm = Fm±2*Mx+2 ;
[0092]当其平行线的My± I 时:Fb = Fb-+C3*X-+C4*Y ;Fm = Fm±2*My+2 ;
[0093]因本系统的变量Mx、X、My、Y均取绝对值进行运算,角度a也是取双曲线上点至其平行线的法线相对于X轴的夹角,故在偏差运算方面X焦轴左右开口的双曲线算式可以原点对称通用。而且焦点在Y轴的双曲线的平行线其法线角度和平行线与原线间距的偏差判别公式也可以通用。但其平行线Mx和My走向,依动点所在象限和指令及偏差的正负进行不同判定,并且在Mx = O和My = M或Mx = M和My = O时,变更Mx或My的走向和进行不含Mx = O或My = O项的偏差再预置。
[0094]双曲线Fb判别式也可作成Fb = My/Mx-A2Y/B2X或Fb = Mx/My-B2X/A2Y等形式,此时与其相关的逻辑判别关系也要相应的正负反向。
[0095]5.3椭圆的平行线生成及与其它曲线光滑衔接的数学模型和方法
[0096]椭圆的标准方程为:X2/A2+Y2/B2 = 1,如图14所示,求导:2X/A2+2YY ' /B2 = O,Y' = -B2XA2Y是椭圆上点切线的斜率,在椭圆弧的端点处a2 = atan(B2XA2Y),a2应该是与其它曲线光滑衔接时二线端点切线一致的角度。而与其平行线相关的法线的斜率为A2Y/B2X,该法线相对于X轴的夹角为:a = atan(A2Y/B2X),在椭圆的平行线生成方面,设其平行线与椭圆的垂直距离为M,则在椭圆内外M长法线的X、Y分量为:Mx = M*C0S(a)My=M*sin(a)即:A2Y/B2X = My/Mx则其平行线的角度偏差判别式为:Fb = A2Y/B2X-My/Mx因实际判别时仅要求偏差的正负,为简化运算并提高精度故可将等式两侧乘B2XMx用:Fb =Mx*A2*Y-My*B2*X取代。而平行线与原线的间距偏差判别式为:Fm = Mx2+My2-M2上式与双曲线的法线角度偏差和间距偏差判别式完全相同,但在动点走向判断时依据各自的指令和偏差判别的结果决定有所区别。运行起步前的Fb和Fm偏差预置时按上述原式计算,Fm参照圆的偏差加Fm = Fm-My+Mx ;*Fm = Fm+My-Mx修正,运行之中Fb和Fm参照圆的修正递推算法。(之后与椭圆转角平行线相关的Fm算式均不变)即:
[0097]当原线的X±1 时:Fb = Fb_+My*B2 ;
[0098]当原线的Y± I 时:Fb = Fb+_Mx*A2 ;
[0099]当其平行线的Mx± I 时:Fb = Fb+_A2*Y ;Fm = Fm±2*Mx+2 ;
[0100]当其平行线的My±l 时:Fb = Fb_+B2*X ;Fm = Fm±2*My+2 ;
[0101]当椭圆转动角度N时其平行线的生成相关Fb算式也应随之变化,如图15所示,如前述转角N输入时顺时针取正值逆时针取负值,对N的绝对值大于和等于90°的情况,对其90*n部分用修改指令和η为奇数时对换X、Y坐标数据等方法解决,椭圆导数的求取按转90*η部分处理后的标准状态进行,对余下小于90°的al = abs(N% 90)部分的处理方法为:在标准状态取法线与X轴夹角为a值,角度a、Mx、My、X、Y均取正值。若al转角使椭圆的法线转向X轴,当a > = al时:a_al为椭圆转动后其法线与X轴的夹角,该法线的X、
Y分量为:Mx = abs (M*cos (a_al)), My = abs (M*sin (a_al)),设 C = tan (al) ;tan (a_al)=((A2*Y)/(B2*X)-C)/(1+(A2*Y)/(B2*X)*C) = (A2*Y-B2*X*C) / (B2*X+A2*Y*C) = My/Mx;设角度偏差式为:Fb = (A2*Y-B2*X*C)/(B2*X+A2*Y*C)-My/Mx 其简化判别式为:Fb = Mx*A2*Y-Mx*B2*X*C-My*B2*X-My*A2*Y*C ;式中因 A2、B2、C 均为常数故可设:C1 = A2、C2 = B2*C、C3 =B2、C4 = A2*C这样上式可以简化为与双曲线法线与X轴夹角为a-al时相同的算式:Fb = Mx*Cl*Y-Mx*C2*X-My*C3*X-My*C4*Y ;— (9)
[0102]经分析在椭圆角度转动后,当a < al或当a+al <= 90°及a+al >90°时的平行线上点与其原线法向对应点的角度偏差和间距偏差判别式也可与双曲线的相应的Fb判别式共用。
[0103]Fb = Mx*C2*X-Mx*Cl*Y-My*C3*X_My*C4*Y ;(10)
[0104]Fb = Mx*Cl*Y+Mx*C2*X_My*C3*X+My*C4*Y ;—(11)
[0105]Fb = Mx*Cl*Y+Mx*C2*X+My*C3*X_My*C4*Y ;(12)
[0106]但曲线运行时依据表示动点所处的象限和其走向的指令,由Fb的正负判断该走原线还是该走其平行线,再由Fm的正负判断该走平行线的X正负方向或Y正负方向的逻辑关系则是不同的。运行起步前的Fb和Fm偏差预置时按上述原式计算,Fm参照圆的偏差加Fm=Fm-My+Mx ;或Fm = Fm+My-Mx修正,运行之中Fb和Fm也采用递推算法以(10)式为例。即:
[0107]当原线的χ± I 时:Fb = Fb+-Mx*C2_+My*C3 ;
[0108]当原线的γ± I 时:Fb = Fb-+Mx*Cl_+My*C4 ;
[0109]当其平行线的Mx± I 时:Fb = Fb+-C2*X-+Cl*Y ;Fm = Fm±2*Mx+2 ;
[0110]当其平行线的My± I 时:Fb = Fb_+C3*X_+C4*Y ;Fm = Fm±2*My+2 ;
[0111]在Mx = 0和My = M或Mx = M和My = 0时,变更Mx或My的走向和进行不含Mx=O或My = O项的偏差再预置。
[0112]椭圆Fb判别式也可作成Fb = My/Mx-A2Y/B2X或Fb = Mx/My-B2X/A2Y等形式,此时与其相关的逻辑判别关系也要相应的正负反向。
[0113]5.4阿基米德螺旋线的性质及其平行线生成和与其它曲线衔接的方法
[0114]如前所述H = R* (a+aO)的外端点描绘的轨迹就是阿基米德螺旋线,其中H为极径长度变量,R为伸缩系数常量,a为以X轴正向起的转角变量,aO为H = O时极轴与X轴正向的初始夹角常量。经分析得出:阿基米德螺旋线具有从其极点起垂直于极径向曲线的展开方向作伸缩系数R长线段,再由该线段R的外端点向极径H生成螺旋线处的端点作射线,该射线就是此点螺旋线的法线,该法线与极径的锐夹角C = atan(R/H或l/(a+aO))为R/H或极角倒数的反正切值,而该螺旋线的切线与极径的锐夹角是C的余角,并且该余角的正切值与其极角的弧度值相等,即tan(90-C) = (H/R或a+aO)的性质。如图16所示,此性质可以由前述的在轴向极值点处H/R = Y/X或H/R = X/Y,即该处螺旋线的法线或切线与极径的夹角等于极径与X或Y坐标轴的夹角,因为过极值点的法线或切线均与坐标轴平行的推导结果得以证实,也说明螺旋线的极值点是符合其性质的特例。该极值点均不在坐标轴上,同一条螺旋线距原点或极点越远过极值点的极径H与直角坐标轴的夹角越小,法线与极点或坐标原点的垂直距离等于R*cos(C)。而在螺旋线的非极值点处,其法线或切线与直角坐标轴的夹角,也应该是其法线或切线与极径的夹角同极径与坐标轴夹角的和或差。
[0115]阿基米德螺旋线的平行线应是其法向等距点的集合,而螺旋线要与其它曲线光滑衔接就应该在衔接点处二曲线的切线角度相等,欲作其平行线或与其它曲线光滑衔接就应该得到其相应点法线或切线与坐标轴的夹角,如图17所示,由上述螺旋线的性质中得到其法线与极径H的锐夹角C = atan (R/H),其切线与极径的锐夹角是C的余角,而极径与坐标轴的锐夹角视不同象限和走向为:al = (atan(Y/X)或atan (X/Y)),螺旋线与其它曲线光滑衔接用其切线与坐标轴的夹角a2视不同象限和走向为:a2 = 90_C±al角度值。在生成螺旋线的平行线相关的被控动点与其母线的距离和角度复合判别式中,其间距偏差判别公式与其它曲线的相同为:Fm = Mx2+My2-M2运行起步前的Fm偏差预置时按上述原式计算,同时参照圆的偏差加Fm = Fm-My+Mx ;或Fm = Fm+My-Mx修正,在保证法向角度准确方面,需用到其法线与直角坐标轴夹角的连续变量,从而涉及三角和差的递推运算说明如下:
[0116]第一象限逆时针走向在X极值点下方属于螺线与基圆异向段,以延伸型螺旋线为例,因为在极值点上其法线与X轴平行,极值点下方的法线与极径的夹角大于极径与坐标轴的夹角,此时坐标轴与螺旋线法线的夹角为C-al,该夹角的正切值为:tan(C-al) = (R/H-Y/X) / (1+RY/HX) = (RX-HY) / (HX+RY),在其法线上设与螺旋线等距点M,螺旋线至M连线的X、Y分量为Mx和My,理论上(RX-HY) / (HX+RY) = My/Mx,设M连线与法线的角度偏差判别式为:
[0117]Fb = (RX-HY) / (HX+RY) -My/Mx = R*X*Mx-H*Y*Mx_H*X*My-R*Y*My ;(13)
[0118]同象限逆时针走向在X极值点上方属于螺旋线与基圆同向段,延伸型的螺旋线,其极径与X轴夹角大于极径与法线的夹角,这时取tan(al-C) = (Y/X-R/H)/(1+RY/HX)=(HY-RX)/(HX+RY)为基准正切值,此时角度偏差判别式为:
[0119]Fb = (HY-RX) / (HX+RY) -My/Mx = H*Y*Mx-R*X*Mx_H*X*My-R*Y*My ;(14)
[0120]第二象限逆时针走向在Y极值点右方属于螺旋线与基圆异向段,延伸型的螺旋线,其极径与法线夹角大于极径与Y轴的夹角,其法线与Y轴夹角的正切值为:tan(c-al)=(R/H-X/Y)/(1+RX/HY) = (RY-HX)/(HY+RX)。同样在其法线上设与螺旋线等距点M,螺旋线至M连线的X、Y分量为Mx和My,理论上(RY-HX) / (HY+RX) = Mx/My,设M连线与法线的角度偏差判别式为:
[0121]Fb = (RY-HX) / (HY+RX) -Mx/My = R*Y*My-H*X*My-H*Y*Mx-R*X*Mx ; (15)
[0122]同象限逆时针走向在Y极值点左方属于螺旋线与基圆同向段,延伸型的螺旋线,其极径与Y轴夹角大于极径与法线的夹角,这时取tan(al-c) = (X/Y-R/H)/(1+RX/HY)=(HX-RY)/(HY+RX)为基准正切值,此时角度偏差判别式为:
[0123]Fb = (HX-RY) / (HY+RX) -Mx/My = H*X*My-R*Y*My-H*Y*Mx_R*X*Mx ;(16)
[0124]运行之中Fb和Fm也采用递推算法以(13)式为例。即:
[0125]当原线的X± I 时:Fb = Fb+-R*Mx_+H*My ;
[0126]当原线的γ± I 时:Fb = Fb-+H*Mx_+R*My ;
[0127]当原线的H± I 时:Fb = Fb-+Y*Mx_+X*My ;
[0128]当其平行线的Mx± I 时:Fb = Fb+-R*X-+H*Y ;Fm = Fm±2*Mx+2 ;
[0129]当其平行线的My± I 时:Fb = Fb_+H*X_+R*Y ;Fm = Fm±2*My+2 ;
[0130]曲线运行时依据表示动点所处的象限和其走向的指令,由Fb的正负判断该走原线还是该走其平行线,再由Fm的正负判断该走平行线的X正负方向或Y正负方向。针对X =
O、Y = O、Mx = O、My = O等情况,运行中需要变换象限和走向并对Fb进行缺项预置。
[0131]另外三、四象限与一、二象限对称,并且顺时针转向延伸型的螺旋线及顺逆时针转向收缩型的螺旋线,与上述对应极值方向和基圆与螺旋线的走向同异线段的角度偏差判别式相同可以共用,其间距偏差判别公式完全共用,但对不同象限,不同转向及延伸或收缩类型的线段,应依其表示动点所处的象限和其走向的指令,由Fb的正负判断该走原线还是该走其平行线,再由Fm的正负判断该走平行线的X正负方向或Y正负方向。同样针对X = O、
Y= O,Mx = O,My = O等情况,运行中需要变换象限与走向并对Fb进行缺项预置。阿基米德螺旋线的本身及其平行线顺逆时针转动角度的处理,是在程序运行前的偏差预置中进行的,与运行中的角度和平行线间距的偏差判别运算无关。
[0132]6.数控编存解码方法
[0133]目前的数控设备都是根据用户输入或根据要求自行编制的G代码等用户程序,顺序地对构成整体的每一段曲线由起点开始逐步进行即时的被控动点偏差计算,依据计算结果和当前指令作出动点走向的判断,再向驱动执行机构发出运行指令,执行机构依据该指令运行(闭环系统同时返回运行数据供比较)。遇到二线段交替时还要等待后段程序的数据和偏差预置操作,周而复始插补出要求的图形。这种方法一则前后步之间的预置、计算和判别需要时间,影响速度,二则由于依据即时插补运算偏差结果的单轴向移动动作,在原本光滑的线段内产生并非理想的微观阶梯状态。若能将全部插补运算的过程放在整个控制运行开始之前的其它时间或另外设备进行,仅存储插补的结果需要时用来驱动数控执行机构,就可以节省即时插补运算的时间加快设备运行速度,若再将插补结果的几步组合起来分段同步运行,即可由一段段顺应曲线走向的微观折线取代交替单步运行的阶梯状态,如图18所示。鉴于以上分析,这里采用在要求的曲线或图形绘制编辑完成后,在本系统内通过对话框给出根据需要设定的二轴叠加同步进给步距数即每段步数(本系统中取值范围设为I至6)和数控编码指令,启动该曲线或图形的重绘过程,其中分别累计各轴向走行的方向和步数,当二轴合计步数大于或等于设定步距时,将此累计数据按轴向分别存储于一个字节的低4位和高4位,每4位的最高位代表正负走向,其余3位代表同步进给的步数(I至7步),存储后进行移位处理,等待继续存储下一段落的累计数据,当一条线段至终点时将剩余的可能还不满足设定段落的累计数据也进行存储,完成该条曲线数据存储后,连续进行下一条曲线进给数据的采集累计和存储,直至整个图形重绘完成时结束数据存储。这样通常计算机中每个字4字节,若段落步距设为6的话可存储约24步插补结果的进给数据。使用时调出并顺序按字节读取该数据,以每字节的4与8位的O或I状态分别确定X与Y轴的走向,以I至3位与5至7位分别确定X与Y轴同步进给的步数,用以同时驱动速度与步距正比的二轴同步进给机构,即可得到顺应曲线路径的连续折线段,从而可以消除原折线位置的微观阶梯状态,实现不需即时插补的数控设备驱动新方法。此方法对一或多条各种曲线构成的简繁图形均可进行编存解码处理,自动生成一套连续完整的数据及图形。并且在本系统中还可以将编制完成的一套数据及将存储本套数据的编号、字节数和起始坐标作为一种新线型和其它曲线类似地存储于系统的硬盘,需要时可以一种线型的形式随时调出。另外还可以在每完成一个字(4字节)或几个字的数据编制时分别存储图形生成中被控动点的X、Y坐标值,该坐标值可用于分段编制现行数控设备的以直线段拟合曲线的G代码等用户程序。
[0134]7.复合插补法系统软件的用户程序内容及指令表
[0135]
系统软件的用户程序内容及指令表
[0136]
【权利要求】
1.在计算机图形学的核心【技术领域】中的一种可直接生成含常用非圆曲线及其平行线的系列线型,并可显示其辅助线和相关参数,还能将含常用非圆曲线及其平行线的多种线型进行光滑衔接和各种编辑使之构成理想图形,且具有将曲线或完整图形进行数控编存解码功能的复合插补法及其系统软件,其主要特征是:这里采用自变量长度偏差修正法规正基圆轨迹,提高了作为许多非圆曲线复合插补变量基准的弧长递推计算精度,并在递推计算R倍弧长过程中依据不同R进行一定间隔的微量修正得到每步弧长这个变量基准;与该弧长基准相关的渐伸线和阿基米德螺旋线的生成是让其动点遵循弧长和角度复合变量基准运行,并在其动点位于X或Y轴极值点时作出判别并修改走向,即可在直角坐标系下生成可跨越象限任意长度的相关轨迹,并且可以在基准弧长较大时采用曲线长度细分计数以辅助控制线长,另外自变量长度偏差修正法也可用于修正常用非圆曲线轨迹与基准量的偏离,同样涉及圆弧长度变量的摆线、圆内外摆线和正弦曲线为其动圆沿导轨运动,动圆上的点与其导轨复合运动产生的轨迹,只要让动圆转动的弧长与导轨弧线长按比例同步运行,并将其相关点的位置相应叠加,即可得到该曲线或其变幅曲线;对常用曲线及其组成的图形绕自身原点或另外设定点的任意角度转动、对称、移动、扩缩、矩阵及剪切、衔接、倒退、删除、恢复、插入、追加的编辑及选择或复合编辑等操作是在曲线运行前,根据编辑项目和数据要求对用户程序相关的数据和指令进行修改处理后启动运行实现的,但非圆二次曲线的自由旋转是对角度N中超过±90°的90倍数部分用修改用户程序数据和指令,对小于90°部分用在程序启动预置后的运行中按标准曲线偏差和进给运算加与转角对应的位移分量的递推算法处理的;在常用曲线的平行线生成和两条线段的光滑衔接方面,对渐伸线等仍可保持原线型的曲线平行线采用移动起点位置改变相关参数的方法实现,对已改变了原曲线性质的常用非圆二次曲线和阿基米德螺旋线等的平行线生成的方法是根据曲线的性质采用简化的递推算法数学模型顺序取得原线法向等距点的集合,光滑衔接则是相关曲线对应点切线角度一致的吻合;数控编码方法是在曲线或图形绘制及编辑完成后,根据设定的二轴叠加每次移动步距,在曲线或图形重绘时编辑生成代表每次步距和走向的系列数据。
2.根据权利要求1所述的复合插补法及其系统软件,其特征在于:针对使用通常偏差算法产生的圆弧轨迹在坐标轴上偏离最大,轴二侧的轨迹不对称的问题,采用圆弧的自变量对长度偏差修正法,该方法是对通常的被控动点与基准量的长度偏差算式:F =X2+Y2-R2在起步偏差预置或运行中象限变换时根据起点所在象限和走向是离开X轴或朝向X轴进行F = F-X+Y或F = F-Y+X的偏差修正预置,及对曲线运行中的递推算式:当X± I时:F = F±2*X+1,当 Y±1 时:F = F±2*Y+1,改为:当 X±1 时:F = F±2*X+2,当 Y±1 时:F = F±2*Y+2,用以使对基准R的修正量在一个象限内实现由0.5经O到-0.5的变化,达到去除在坐标轴上被控点相对基准R的最大偏离,使坐标轴两侧轨迹对称,整个轨迹均以R为中心运行;另外在递推计算R倍弧长过程中依据不同R进行一定间隔的微量修正是指在递推计算圆弧长度,即:当X±1时RH+Y,当Y±1时RH+X,当RH> = R时RH-R,H±1的过程中,根据事先针对不同R半径的圆常规计算弧长与递推计算弧长的微小差异设定的调整数据N,每隔N步对递推计算弧长的中间变量R倍弧长RH进行+1或-1的操作,每次修正量为1/R个运算单位,以提高基准弧长的准确性。
3.根据权利要求1所述的复合插补法及其系统软件,其特征在于:与上述弧长基准相关的渐伸线和阿基米德螺旋线的生成是让其动点遵循弧长和角度复合变量基准运行,并在其动点位于X或Y轴极值点时作出判别并修改走向,即可在直角坐标系下生成可跨越象限任意长度的相关轨迹,并且自变量长度偏差修正法也可用于修正常用非圆曲线轨迹与基准量的偏离,一是指渐伸线动点xd、Yd相对基圆X、Y切点的展开弧长H的长度偏差F1 =X/+Y/-H2,这里也参照对圆弧长度偏差修正的方法根据动点所在象限和走向,对其进行起步前的偏差修正预置即=F1 = hiXd—Yd,运行中当Xd±l时=F1 = [±2^+2,当Yd±l时:F1 = [±2*1+2,但对由基圆切点的移动引起的Xd±l、Yd±I变化,将根据切点所在象限对应的动点本身移动Xd、Yd变化是否一致设定F1 =或F1 = ^±2*1后是否需要+2处理,一致则加相反则不加,另外F1与H变化相关的递推算式:当H± I时F1 = Fr+2*H-1,复合插补中与渐伸线长度偏差相关的角度偏差判别公式为Fa = X*Xd-Y*Yd,其递推公式为:当X±1 时,Fa = Fa±Xd,当 Xd±l 时,Fa = Fa±X,当 Y±1 时,Fa = Fa_+Yd,当 Yd±l 时,Fa =Fa_+Y,其极值点与基圆过坐标轴点垂直对应;二是指阿基米德螺旋线的长度偏差判别式F1=X/+Y/-H2,因其轴向极值点不与坐标轴重合,对其走向与基圆相同部分参照圆弧长度偏差判别修正的思路,根据所在象限进行单变量修正,对扩展型在起步或换限时将F1减掉X或Y极值向的Xd或Yd值,对收缩型在起步或换限时将F1加上由X或Y轴开始从O增加项的Xd或Yd值,即F1 = RiXd或F1 = RiYd,运行中预置对应项的Xd± l、Yd± I变化时F1 =F1±2*Xd+2*F1 =其余未预置项 Xd±l、Yd±l 变化时 F1 = F1±2*Xd+l =^ + 2?+1不变,而收缩型同向部分在极值点结束时相当于F1 = ^+(Xd或Yd的最大值),应用F1 = F1-(Xd或Yd)将F1恢复到修正值为O的状态,对一个象限内螺旋线与其基圆走向不同的部分这里不进行长度偏差的修正;螺旋线的F1与H变化相关的递推算式:当H±1时F1 = Ff+2*H-1,螺旋线的角度偏差式为:Fa = X*Yd_Y*Xd,其递推公式为:当X±1时,Fa =Fa±Yd,当 Yd±l 时,Fa = Fa±X ;当 Y±1 时,Fa = Fa_+Xd,当 Xd±l 时,Fa = Fa_+Y ;螺旋线的X、Y向极值点以X轴向=Fj = H*Y-R*X,Y轴向=Fj = H*X_R*Y进行偏差预置和判断Fj >O为与基圆同向,h = O为极值点,& < O为与基圆异向,运行中以&递推运算结果的正负变换时为极值点,h递推算式: 当H± I时X向极值Fj = F」±Y ;Y向极值Fj = F」±X ; 当X± I时X向极值Fj = Fr+R ;Y向极值Fj = F」±H ; 当Y± I时X向极值Fj = Fj±Η ;Υ向极值Fj = Fr+R ; 在基准弧长H较大时可采用曲线长度细分计数以辅助控制线长,是指对渐伸线或阿基米德螺旋线曲线长JJ参照圆弧长度的递推算法,取中间变量Hjl,当Xd± I时:Hjl+Yd,当Yd±l时:Hjl+Xd,当Hjl >=H时JJ±1,Hjl-H ;同样涉及圆弧长度变量的摆线、圆内外摆线和正弦曲线为其动圆沿导轨运动,动圆上的点与其导轨复合运动产生的轨迹,是指该曲线的轨迹生成中不仅与精确的圆弧长度递推计算相关,而且涉及直线长度的递推计算,这里首先根据直线的X、Y向长度利用勾股定理取得R并设中间变量R倍L为RL,当X+1时:RL+X,当Y+1时:RL+Y,若RL>= R则:RL_R,L±1,以此计算直线的线长L,与之相关的变幅摆线导轨线长Lg和其变幅系数M与动圆弧长Hd和其变幅系数N同步时Lg*M = Hd*N以Lg*M与Hd*N的大小交替运行,并将其相关点的位置相应叠加;圆内外及其变幅摆线,导轨圆弧长Hg和其变幅系数M与动圆弧长Hd和其变幅系数N同步时Hg*M = Hd*N以Hg*M与Hd*N的大小交替运行,并将其相关点的位置相应叠加;正弦曲线,则依直线W线长L与圆弧长H同步运行,即=F1 = X^+Y^-H2以F1的正负交替运行,取直线的轴向分量与圆弧的垂直于轴向的振幅分量的组合轨迹。
4.根据权利要求1所述的复合插补法及其系统软件,其特征在于:非圆二次曲线的自由旋转对角度N中超过±90°的90*n倍数部分采用修改用户程序指令和将η为奇数时的X、Y相关数据互换处理,之后对余下小于90°的al = abs(N% 90)部分,依据新X、Y所在象限及N为顺逆时针转向X轴或Y轴用:X' = X*cos(al) 土Y*sin(al),Y'=Y*cos(al)-+X*sin(al)在程序启动时进行转角后被控动点的预置,在运行中将按90*n转动后的新X、Y等变量进行标准偏差和进给运算加与转角al对应的位移分量的递推算法处理,这里设:A2 = sin (al) *10000, A3 = (1-cos (al)) *10000,当 X+ I 时:dx + A3, dy±A2,当 Y±1 时:dy±A3,dx-+A2,在当 dx > = 10000 时 X' +1,dx-10000 或 dy >= 10000 时Y' +1,dy-10000,在当 dx < = 10000 时 X' -1,dx+10000 或 dy < = 10000 时 Y' -1,dy+10000,式中的正负运算符号应根据被控动点所处象限和其走向确定,这是本方法中对非圆二次曲线本身顺逆时针转动任意N角度时,使用的曲线轨迹中被控动点按标准偏差位移后加相应转角位移分量的递推运算方法。
5.根据权利要求1所述的复合插补法及其系统软件,其特征在于:在常用非圆二次曲线中抛物线的平行线生成和两条线段的光滑衔接方面,焦点在Y轴的抛物线端点与其它曲线光滑衔接的角度为a = atan(X/P),焦点在X轴的抛物线端点与其它曲线光滑衔接的角度为a = atan(Y/P),其中P为焦点参数,与焦点在Y轴无转角的抛物线间距为M的平行线生成相关的角度和距尚复合偏差式中角度偏差算式:Fb = Mx*P_My*X,距尚偏差算式:Fm = Mx2+My2-M2其中距离偏差参照圆弧偏差修正的方法进行了 Fm = Fm-My+Mx ;或Fm =Fm+My-Mx的偏差修正预置,在极值点X = O与Y = O时变换指令,运行中采用递推算法: 当原线的x±l时:Fb = Fb-+My ; 当其平行线的 Mx±l 时:Fb = Fb±P ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb-+X ;Fm = Fm±2*My+2 ; 焦点在Y轴带转角N的抛物线的间距为M的平行线生成相关的距离偏差计算和判别式与无转角时相同,角度偏差Fb算式依抛物线转角中小于90*n的(90*n部分的处理方法与非圆二次曲线本身转角相同)al = abs(N%90)部分与变化的切线角度a大小关系不同,以a = al或a+al = 90及Mx = O或My = O的极值点为界分为4种算式,并变换极值点相关Mx或My走向,其中设tan (al) =A: a 与 al 同向且 a>=al 时:Fb = Mx*P+Mx*X*A_My*X+My*P*A ; (I) a 与 al 同向且 a < al 时:Fb = Mx*P+Mx*X*A_My*P*A+My*X ; (2) a 与 al 反向且 a+al <=90° 时:Fb = Mx*P-Mx*X*A_My*X_My*P*A ; (3) a 与 al 反向且 a+al >90。时:Fb = Mx*P_Mx*X*A+My*X+My*P*A ; (4) 这也是程序运行前的偏差预置算式和程序运行中需要变换算式时抛去某个带有O变量项的算式,在程序运行中的递推算式以(I)式为例:: 当原线的 x±l 时:Fb = Fb±Mx*A-+My ; 当其平行线的 Mx±l 时:Fb = Fb±P±X*A ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb-+X土P*A ;Fm = Fm±2*My+2 ; 焦点在X轴无转角的抛物线间距为M的平行线生成相关的角度和距离偏差计算和判别式为:角度偏差算式:Fb = My*P-Mx*Y距离偏差算式及其偏差修正预置方法与Y焦轴时相同,在极值点X = O与Y = O时变换指令,运行中递推算法: 当原线的Y±1时:Fb = Fb-+Mx ; 当其平行线的 Mx±l 时:Fb = Fb-+Y ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb±P ;Fm = Fm±2*My+2 ; 焦点在X轴带转角N的抛物线的间距为M的平行线生成相关的距离偏差计算和判别式与无转角时相同,角度偏差Fb算式依抛物线转角中小于90*n的(90*n部分的处理方法与非圆二次曲线本身转角相同)al = abs(N%90)部分与变化的切线角度a大小关系不同,以a = al或a+al = 90及Mx = O或My = O的极值点为界分为4种算式,并变换极值点相关Mx或My走向,其中设tan (al) =A:
a 与 al 同向且 a > = al 时:Fb = My*P+My*Y*A_Mx*Y+Mx*P*A ; (5)
a 与 al 同向且 a < al 时:Fb = My*P+My*Y*A+Mx*Y_Mx*P*A ; (6)
a 与 al 反向且 a+al < = 90° 时:Fb = My*P-My*Y*A_Mx*Y_Mx*P*A ; (7)
a 与 al 反向且 a+al >90。时:Fb = My*P_My*Y*A+Mx*Y+Mx*P*A ; (8) 这也是程序运行前或程序运行中需要变换算式时抛去某个带有O变量项的偏差预置算式,在程序运行中的递推算式以(5)式为例: 当原线的 Y±1 时:Fb = Fb±My*A-+Mx ; 当其平行线的 Mx±l 时:Fb = Fb-+Y土P*A ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb±P±Y*A ;Fm = Fm±2*My+2。
6.根据权利要求1所述的复合插补法及其系统软件,其特征在于:常用非圆二次曲线中双曲线和椭圆的平行线生成和两条线段的光滑衔接方面的角度和间距判别式可以共用,但在被控动点的走向判别方面各不相同,双曲线和椭圆端点与其它曲线光滑衔接的角度为a2 = atan (B2X/A2Y),式中A、B为双曲线的实虚轴或椭圆的长短轴系数,与其平行线生成相关的法线角度为:a = atan(A2Y/B2X),无转角的双曲线和椭圆与间距为M的平行线生成相关的复合偏差判别式中角度偏差算式:Fb = Mx*A2*Y-My*B2*X距离偏差算式:Fm = Mx2+My2-M2其中距离偏差参照圆弧偏差修正的方法进行Fm = Fm-My+Mx ;*Fm = Fm+My-Mx的偏差修正预置,在极值点X = O或Y = O时变换指令,运行中采用递推算法: 当原线的 X±1 时:Fb = Fb-+My*B2 ; 当原线的 Y±1 时:Fb = Fb±Mx*A2 ; 当其平行线的 Mx±l 时:Fb = Fb±A2*Y ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb-+B2*X ;Fm = Fm±2*My+2 ; 带转角N的双曲线和椭圆与间距为M的平行线生成相关的复合偏差判别式中距离偏差算式与无转角时的判别式及其偏差修正方式相同,角度偏差Fb算式依双曲线和椭圆转角中小于90*n的(90*n部分的处理方法与非圆二次曲线本身转角相同)al = abs (N% 90)部分与变化的法线角度a大小关系不同,以a = al或a+al = 90及Mx = O或My = O的极值点为界分为4种算式,并变换极值点相关Mx或My走向,其中C = tan (al)、Cl = A2、C2 =B2*C、C3 = B2、C4 = A2*C:
al 使法线转向 X 轴且 a > = al 时:Fb = Mx*Cl*Y-Mx*C2*X-My*C3*X_My*C4*Y ; (9)
al 使法线转向 X 轴且 a < al 时:Fb = Mx*C2*X-Mx*Cl*Y-My*C3*X_My*C4*Y ; (10)
al 使法线转离 X 轴 a+al <= 90 时:Fb = Mx*Cl*Y+Mx*C2*X_My*C3*X+My*C4*Y ; (11)
al 使法线转离 X 轴 a+al > 90 时:Fb = Mx*Cl*Y+Mx*C2*X+My*C3*X_My*C4*Y ; (12) 运行之中Fb和Fm也采用递推算法以(9)式为例。即: 当原线的 X±1 时:Fb = Fb-+Mx*C2-+My*C3 ; 当原线的 Y±1 时:Fb = Fb±Mx*Cl-+My*C4 ; 当其平行线的 Mx±l 时:Fb = Fb±Cl*Y-+C2*X ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb-+C3*X-+C4*Y ;Fm = Fm±2*My+2。
7.根据权利要求1所述的复合插补法及其系统软件,其特征在于:经分析发现H=R*(a+a0)的阿基米德螺旋线具有从其极点起垂直于极径向曲线的展开方向作伸缩系数R长线段,再由该线段R的外端点向极径H生成螺旋线处的端点作射线,该射线就是此点螺旋线的法线,该法线与极径的锐夹角C = atan(R/H或l/(a+a(l))为R/H或极角倒数的反正切值,而该螺旋线的切线与极径的锐夹角是C的余角,并且该余角的正切值与其极角的弧度值相等,即tan(90-C) = (H/R或a+%)的性质;螺旋线的极径与坐标轴的锐夹角视不同象限和走向为:al = (atan(Y/X)或atan (X/Y)),螺旋线与其它曲线光滑衔接用其切线与坐标轴的夹角a2视不同象限和走向为:a2 = 90_C±al角度值;在生成螺旋线的平行线相关的被控动点与其母线的距离和角度复合判别式中,其间距偏差判别公式与其它曲线的相同为:Fm = Mx2+My2-M2运行起步前的Fm偏差预置时按上述原式计算,同时参照圆的偏差修正方法,在程序启动或运行中换限时作Fm = Fm-My+Mx ;或Fm = Fm+My-Mx的偏差修正预置,在保证法向角度准确方面,根据不同极值方向和螺旋线与其基圆走向的同异,以坐标轴和极值点为界区分Fb算式: X 向极值的异向段:Fb = R*X*Mx-H*Y*Mx-H*X*My-R*Y*My ;—(13) X 向极值的同向段:Fb = H*Y*Mx-R*X*Mx-H*X*My-R*Y*My ;—(14) Y向极值的异向段:Fb = R*Y*My-H*X*My-H*Y*Mx-R*X*Mx ;—(15) Y向极值的同向段:Fb = H*X*My-R*Y*My-H*Y*Mx-R*X*Mx ;—(16) 运行之中Fb和Fm也采用递推算法以(13)式为例: 当原线的 X±1 时:Fb = Fb±R*Mx-+H*My ; 当原线的 Y±1 时:Fb = Fb-+H*Mx-+R*My ; 当原线的 H±1 时:Fb = Fb-+Y*Mx-+X*My ; 当其平行线的 Mx±l 时:Fb = Fb±R*X-+H*Y ;Fm = Fm±2*Mx+2 ; 当其平行线的 My±l 时:Fb = Fb-+H*X-+R*Y ;Fm = Fm±2*My+2。
8.根据权利要求1所述的复合插补法及其系统软件,其特征在于:数控编码方法是在曲线或图形绘制及编辑完成后,根据设定的二轴叠加每次移动步距,在曲线或图形重绘时编辑生成代表每次步距和走向的系列数据的具体方法为:对图形准备进行数控编码前,首先通过对话等形式设定二轴叠加同步进给步距数即每段步数(本系统中取值范围设为I至6),在曲线或图形重绘过程中,由系统分别累计各轴向走行的方向和步数,当二轴合计步数大于或等于设定步距时,将累计的X、Y步距数按轴向分别存储于一个字节的低4位和高4位,每4位的最高位代表正负走向,其余3位代表同步进给的步数(I至7步),存储后进行移位处理,等待继续累计和存储下一段落的数据,在每条曲线末尾即使不满足设定段落的累计数据也进行存储,完成该条曲线数据存储后,连续进行下一条曲线进给数据的采集累计和存储,直至整个图形重绘完成时结束数据存储;使用时调出并顺序按字节读取该数据,以每字节的第4与第8位的O或I状态分别确定X与Y轴的走向,以I至3位与5至7位分别确定X与Y轴同步进给的步数,用以同时驱动速度与步距正比的二轴同步进给机构,即可得到顺应曲线路径的连续折线段,从而实现不需即时插补运算的数控设备驱动新方法;在本系统中还可以将编制完成的一套数据及将存储本套数据的编号、字节数和起始坐标作为一种新线型和其它曲线类似地存储于系统的硬盘,需要时可以一种线型的形式随时调出;另外还可以在每完成一个字(4字节)或几个字的数据编制时分别存储图形生成中被控动点的X、Y坐标值,该坐标值可用于分段编制现行数控设备的以直线段拟合曲线的G代码等用户程序。
【文档编号】G05B19/41GK104166376SQ201310202145
【公开日】2014年11月26日 申请日期:2013年5月18日 优先权日:2013年5月18日
【发明者】刘希汉 申请人:刘希汉

最新回复(0)