複合插補法及其系統軟體的製作方法
2023-05-15 02:28:56 1
複合插補法及其系統軟體的製作方法
【專利摘要】複合插補法及其系統軟體,是計算機圖形學核心【技術領域】裡的一項新技術,它突破了目前國際上在該領域中,通常只能實現對直線、圓弧(部分系統可以對拋物線、橢圓)的直接插補生成,對非圓曲線只能靠直線或圓弧擬合的現狀。本技術實現了對任意參數的漸伸線、阿基米德螺旋線、擺線、圓內外擺線、正餘弦曲線、非圓二次曲線的直接插補生成,而且實現了對漸伸線、阿基米德螺旋線、非圓二次曲線等常用線型的平行線的插補生成,並解決了常用曲線及其平行線的光滑銜接問題,及能對相關曲線或其構成的圖形實施任意旋轉、擴縮、移動、對稱等各種編輯還可顯示其輔助線和相關參數。創建了將所生成曲線或圖形編碼的方法,數控設備無需插補運算僅解碼數據即可作出要求的形狀。這項技術將使計算機繪圖、教學、相關科研及數控加工方法產生較大進步。
【專利說明】複合插補法及其系統軟體
[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°時的平行線上點與其原線法向對應點的角度偏差和間距偏差判別式也可與雙曲線的相應的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 ; (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日
【發明者】劉希漢 申請人:劉希漢