本發(fā)明涉及一種可避免過切的刀具半徑補償方法,屬于數(shù)控加工技術領域。
背景技術:
刀具半徑補償功能是數(shù)控加工設備的基本功能,它能夠依據(jù)刀具半徑設定和工件尺寸自動生成加工路徑,可以減少操作人員的繁瑣計算并避免了由人工計算誤差引起的成型尺寸偏差。在電子工業(yè)協(xié)會(EIA)的RS-274-D中規(guī)定通過G40/G41/G42指令設定刀具半徑補償功能,需要實現(xiàn)直線和直線,直線和圓弧,圓弧和圓弧連接的半徑補償方法。
刀具干涉分為局部干涉和全局干涉:局部干涉是指由于刀具直徑過大致使刀刃對工件表面造成的過度切削,即過切問題;全局干涉是指刀具非刀刃部分與加工表面或機床其他部分的碰撞問題。刀具干涉是在生成刀具加工軌跡過程中需要解決的一個核心問題。刀具半徑補償功能可視為一種給定工件尺寸數(shù)據(jù)的刀具加工軌跡生成過程,必須解決刀具局部干涉問題,否則致使精度失準甚至工件報廢。
在刀具半徑補償方法方面,已有技術基于解析幾何的方法,通過判斷轉(zhuǎn)接點類型(縮短、伸長或插入)的方式,計算偏移曲線。在避免過切(刀具局部干涉)的方法方面,已有技術采用多面體法、偏置面法和包絡面法等:多面體法是將曲面化為若干三角面片,或者將曲線化為若干直線段,再根據(jù)刀具中心到三角面片或直線段的距離判定是否存在過切;偏置面法是通過微分幾何方法計算出刀位面,然后在刀位面上規(guī)劃刀具加工軌跡,由于在刀位面上不存在干涉,因此它是一種避免過切的方法;包絡面法是通過刀具旋轉(zhuǎn)包絡面的曲率半徑與工件輪廓檢測點處的曲率半徑進行比較,判斷是否在檢測點處發(fā)生過切。多面體法和包絡面法是一種離散化方法,會引入逼近誤差,誤差大小與迭代粒度的選擇有關。雖然偏置面法不存在逼近誤差,但是求取刀位面的計算復雜。
技術實現(xiàn)要素:
為了克服現(xiàn)有技術中存在的不足,本發(fā)明目的是提供一種可避免過切的刀具半徑補償方法,在實現(xiàn)C功能刀具半徑補償方法的同時,該方法是以掃描線算法和基于布爾運算的無效區(qū)域判定方法為核心,以更低的計算量實現(xiàn)無逼近誤差的無過切刀補軌跡。
為了實現(xiàn)上述發(fā)明目的,解決現(xiàn)有技術中所存在的問題,本發(fā)明采取的技術方案是:一種可避免過切的刀具半徑補償方法,包括以下步驟:
步驟1、通過工件輪廓線頂點前、后徑向的刀具半徑偏移,計算所有頂點的前、后偏移點,包括以下子步驟:
(1)設工件輪廓線頂點個數(shù)為N,為第i個頂點向量,Pi-1為前一個頂點向量,Pi+1為后一個頂點向量;
(2)令i=0;
(3)若i=N則轉(zhuǎn)子步驟(10)否則轉(zhuǎn)子步驟(4);
(4)若邊Pi-1Pi為直線段則采用公式(1)計算前切向若其為圓弧段則采用公式(2)計算前切向
式(2)中,Ci-1為邊Pi-1Pi的圓心,函數(shù)sgn(x)為符號函數(shù),
二維向量與的外積采用公式(4)計算得到,
(5)若邊PiPi+1為直線段則采用公式(5)計算后切向若其為圓弧段則采用公式(6)計算后切向
式(6)中,Ci為邊PiPi+1的圓心;
(6)若為左刀補設置,則采用公式(7)計算前徑向若為右刀補設置,則采用公式(8)計算前徑向
(7)若為左刀補設置,則采用公式(9)計算后徑向若為右刀補設置,則采用公式(10)計算后徑向
(8)利用公式(11)(12)分別計算前、后偏移點和
式(11)(12)中R為刀具補償半徑,二維向量的長度采用二范數(shù)定義,
(9)令i=i+1,轉(zhuǎn)子步驟(3);
(10)結(jié)束;
步驟2、通過在前后偏移點間增加過渡頂點和過度線段,將間斷的偏移邊接續(xù)為閉合的偏移曲線,包括以下子步驟:
(1)設工件輪廓線頂點個數(shù)為M,為第i個頂點向量,為邊PiPi+1的偏移邊;
(2)令i=0;
(3)若i=M則轉(zhuǎn)子步驟(8),否則轉(zhuǎn)子步驟(4);
(4)若則在偏移邊Ei和Ei-1間插入過度線段
(5)若且則通過公式(13)計算中過渡頂點TiC,并在偏移邊Ei和Ei-1間插入過度線段和
(6)若且則通過公式(14)(15)計算前過渡頂點TiB和后過渡頂點TiF,并在偏移邊Ei和Ei-1間插入過度線段和
(7)令i=i+1,轉(zhuǎn)子步驟(3);
(8)結(jié)束;
步驟3、通過矩形包絡相交預判斷和直線段重心坐標、圓弧段三角投影坐標,計算偏移曲線中的自交點,并依據(jù)自交點對圓弧段直線化,包括以下子步驟:
(1)設偏移曲線頂點個數(shù)為U,為第個i頂點,為邊PiPi+1;
(2)令i=0;
(3)若i=U,則轉(zhuǎn)子步驟(11),否則轉(zhuǎn)子步驟(4);
(4)令j=i+1;
(5)若j=U,則轉(zhuǎn)子步驟(10),否則轉(zhuǎn)子步驟(6);
(6)若Ei或Ej的矩形包絡不存在,則按照以下子步驟計算其矩形包絡:
(a)若Ek=(Pk,Pk+1)為直線段,則其矩形包絡為,
式(16)中,和分別為頂點Pk的橫、縱坐標,min和max分別為取最小值和最大值函數(shù);
(b)若Ek為圓弧段,則轉(zhuǎn)子步驟(c),否則轉(zhuǎn)子步驟(i);
(c)設Ek圓心為Ck,半徑為R,和所處象限分別為s1和s2,X方向加工區(qū)域范圍為[XMIN,XMAX],Y方向加工區(qū)域范圍為[YMIN,YMAX];
(d)令i=s1,d=1,xmin=XMAX,xmax=XMIN,ymin=Y(jié)MAX,ymax=Y(jié)MIN,若圓弧為順時針,則令d=-1;
(e)若i=s2,則轉(zhuǎn)子步驟(i),否則轉(zhuǎn)子步驟(f);
(f)根據(jù)條件賦值,若i為第Ⅰ象限且i+d為第Ⅱ象限,或者i為第Ⅱ象限且i+d為第Ⅰ象限,則ymax=Ck,y+R,若i為第Ⅱ象限且i+d為第Ⅲ象限,或者i為第Ⅲ象限且i+d為第Ⅱ象限,則xmin=Ck,x-R,若i為第Ⅲ象限且i+d為第Ⅳ象限,或者i為第Ⅳ象限且i+d為第Ⅲ象限,則ymin=Ck,y-R,若i為第Ⅳ象限且i+d為第Ⅰ象限,或者i為第Ⅰ象限且i+d為第Ⅳ象限,則xmax=Ck,x+R;
(g)令i=i+d轉(zhuǎn)子步驟(e);
(h)按照公式(17)計算圓弧段的矩形包絡,
(i)包絡為以(xmin,ymin)和(xmax,ymax)為對角頂點的矩形,結(jié)束;
(7)判斷Ei和Ej矩形包絡間是否相交,若不相交則轉(zhuǎn)子步驟(9),否則轉(zhuǎn)子步驟(8);
(8)計算Ei和Ej的交點,并用以下判定確定可行解:
(a)若交點P位于直線,轉(zhuǎn)子步驟(b),否則轉(zhuǎn)子步驟(e);
(b)設交點P所在邊的起、止點坐標分別為P1和P2;
(c)按照公式(18)計算重心坐標λ,
(d)若0<λ<1則轉(zhuǎn)(e)否則P為不可行解,轉(zhuǎn)子步驟(j);
(e)若交點P位于圓上,轉(zhuǎn)子步驟(f),否則轉(zhuǎn)子步驟(i);
(f)設交點P所在邊的圓心、起、止點坐標分別為C,P1和P2;
(g)若P所在邊為逆時針圓弧則按照公式(19)計算三角投影坐標μ(P)和μ(P2),否則按照公式(20)計算
式(19)(20)中,為函數(shù)自變量,三角函數(shù)可按公式(21)計算,
(h)若0<μ(P)<μ(P2)則轉(zhuǎn)子步驟(i),否則P為不可行解轉(zhuǎn)子步驟(j);
(i)確定P為可行解;
(j)結(jié)束;
(9)令j=j+1并轉(zhuǎn)子步驟(5);
(10)令i=i+1,轉(zhuǎn)子步驟(3);
(11)令i=0;
(12)若i=U則轉(zhuǎn)子步驟(16),否則轉(zhuǎn)子步驟(13);
(13)若Ei上自交點數(shù)大于0,則轉(zhuǎn)子步驟(14),否則轉(zhuǎn)子步驟(15);
(14)若Ei為圓弧段,則按照三角投影坐標升序,在Pi和Pi+1間插入Ei所有自交點;否則按照重心坐標升序,在Pi和Pi+1間插入Ei所有交點,然后把從Pi到Pi+1之間的所有點用直線段連接,并在偏移曲線中刪除Ei;
(15)令i=i+1,轉(zhuǎn)子步驟(12);
(16)結(jié)束;
步驟4、通過掃描線分割和基于分割區(qū)域的布爾運算無效區(qū)判定直線化偏移曲線中的無效區(qū)域,包括如下子步驟:
(1)根據(jù)直線化偏移曲線,利用標準掃描線構(gòu)建邊表ET;
(2)設邊表ET中存在的掃描線條數(shù)為V,并令i=0;
(3)若i=V轉(zhuǎn)子步驟(18),否則轉(zhuǎn)子步驟(4);
(4)針對掃描線i并利用標準掃描線算法構(gòu)建活動邊表AEL;
(5)設AEL中有W條邊,令j=0;
(6)若j=W轉(zhuǎn)子步驟(10),否則轉(zhuǎn)子步驟(7);
(7)若AEL中邊Ej與Ej+1重合且方向相反,則標注二者均為無效邊并從AEL中刪除,令j=j+1轉(zhuǎn)子步驟(9);
(8)若Ej為平行方向,則標注其為有效邊并從AEL中刪除,轉(zhuǎn)子步驟(9);
(9)令j=j+1,轉(zhuǎn)子步驟(6);
(10)若輪廓為內(nèi)環(huán),則在AEL的左、右端分別插入下、上趨向的兩條輔助邊;
(11)經(jīng)過以上步驟的一輪預處理后,AEL中判定數(shù)據(jù)共有K組,則其邊共有2K條;
(12)令j=0;
(13)若j=K,則轉(zhuǎn)子步驟(17),否則轉(zhuǎn)子步驟(14);
(14)利用公式(22)計算第j組判定邊之左判定邊的左區(qū)域?qū)傩宰笈卸ㄟ叺挠覅^(qū)域?qū)傩杂遗卸ㄟ叺淖髤^(qū)域?qū)傩院陀遗卸ㄟ叺挠覅^(qū)域?qū)傩?/p>
式中,和+運算為布爾代數(shù)中的“異或”和“或”運算,和分別為左、右判定邊的趨向,邊PjPj+1的趨向按照公式(23)計算,
(15)若則標注其為無效邊,若則標注其為無效邊;
(16)令j=j+1,轉(zhuǎn)子步驟(13);
(17)令i=i+1,轉(zhuǎn)子步驟(3);
(18)結(jié)束;
步驟5、利用多邊形邊的無效屬性,刪除無效區(qū)域并恢復直線化圓弧的原始形狀,包括以下子步驟:
(1)設多邊形中共有Z條邊;
(2)令i=0;
(3)若i=Z,轉(zhuǎn)子步驟(6),否則轉(zhuǎn)子步驟(4);
(4)若邊Ei為無效邊,則將其從多邊形中刪除;
(5)令i=i+1,轉(zhuǎn)子步驟(3);
(6)再次遍歷多邊形按照邊首尾相連的原則,找出其中所有閉合多邊形;
(7)遍歷上一步生成的多個多邊形,若其中某邊源自某圓弧段的直線化,則通過其圓弧段的圓心坐標恢復形狀;
(8)結(jié)束。
本發(fā)明有益效果是:一種可避免過切的刀具半徑補償方法,包括以下步驟:(1)通過工件輪廓線頂點前、后徑向的刀具半徑偏移,計算所有頂點的前、后偏移點,(2)通過在前后偏移點間增加過渡頂點和過度線段,將間斷的偏移邊接續(xù)為閉合的偏移曲線,(3)通過矩形包絡相交預判斷和直線段重心坐標、圓弧段三角投影坐標,計算偏移曲線中的自交點,并依據(jù)自交點對圓弧段直線化,(4)通過掃描線分割和基于分割區(qū)域的布爾運算無效區(qū)判定直線化偏移曲線中的無效區(qū)域,(5)利用多邊形邊的無效屬性,刪除無效區(qū)域并恢復直線化圓弧的原始形狀。與已有技術相比,本發(fā)明方法具有以下優(yōu)點,一是:已有技術為了簡化計算,通過離散化的方法,用若干直線段對曲線進行逼近,存在逼近誤差。本發(fā)明雖然也需要將圓弧段做直線化處理,但是由于直線分段點來自于自交點,保證在處理前后其自交的拓撲性質(zhì)不變(即判斷圓弧段是否位于無效自交環(huán)與判斷直線段等價),并且在無效環(huán)清除后可以將直線段恢復為圓弧段,因此可以做到無逼近誤差。二是:已有技術通過計算距離或者曲率半徑的方法判斷是否發(fā)生刀具局域干涉,計算量較大。本發(fā)明采用掃描線算法和基于布爾運算的無效區(qū)域判定方法,先利用掃描線對偏移曲線所圍多邊形分割,再借助布爾運算公式對各分割區(qū)域的屬性標定,最后將標定過程中的矛盾區(qū)域判定為無效區(qū)域(過切區(qū)域),從而確保計算量較小。三是:已有技術在尋找自交點的過程中,需要遍歷所有邊(直線段和圓弧段)的組合關系,算法復雜度為O(n2)。本發(fā)明采用矩形包絡相交預判斷的方法,只求解相交可能性大的邊與邊之間交點,因此運算量較低,其算法復雜度為O(nlogn)。四是:已有技術根據(jù)直線方向與圓弧徑向的夾角判定圓弧上交點的可行解。本發(fā)明利用圓弧三角投影函數(shù)(單調(diào)函數(shù)),賦予圓弧上的點(二維坐標)一維坐標。三角投影坐標的優(yōu)勢在于既可以用于判定可行解,又可以對圓弧上端點和交點按照偏移曲線的繞向排序,為無效自交區(qū)域的判定做準備。為了提高計算效率,三角投影坐標中避免了反三角函數(shù)的使用。
附圖說明
圖1是本發(fā)明方法步驟流程圖。
圖2是本發(fā)明方法中的工件輪廓線圖。
圖3是本發(fā)明方法中的工件幾何偏移圖。
圖4是本發(fā)明方法中的工件直線接續(xù)圖。
圖5是本發(fā)明方法中的工件自交點圖。
圖6是本發(fā)明方法中的工件圓弧段直線化圖。
圖7是本發(fā)明方法中的工件掃描線圖。
圖8是本發(fā)明方法中的工件無效邊標注圖。
圖9是本發(fā)明方法中的工件無效環(huán)刪除圖。
圖10是本發(fā)明方法中的工件加工路徑圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明作進一步說明。
本發(fā)明方法步驟流程圖如圖1所示,算例工件輪廓線如圖2所示。本算例為型腔加工類型,圖2中曲線段從E0到E12按照順時針連接,頂點P0到P12為各曲線段的起始點。為了加工型腔,采用右側(cè)刀具半徑補償,刀具半徑設定為φ=2mm。按照上文定義,圖2中存在(1)直線與直線局域自交點,如E3、E4相交;(2)圓弧與圓弧局域自交點,如E6、E7相交;(3)直線與圓弧局域自交點,如E5、E6相交;(4)直線與直線全局自交點,如E4、E10相交;(5)圓弧與圓弧全局自交點,如E6、E8相交;(6)直線與圓弧全局自交點,如E1、E11相交。
步驟1、通過工件輪廓線頂點的前、后徑向的刀具半徑偏移,計算所有頂點的前、后偏移點。對于輪廓線上每個頂點,經(jīng)過幾何偏移運算后生成兩個偏移點。一個頂點位于連續(xù)的兩段直線或圓弧上,分別稱其為“后段”和“前段”,在加工過程中前段直線或圓弧先于后段直線或圓弧行進。頂點就是前段和后段的交點或者銜接點,因此其在前段和后段分別具有一個切線方向,分別稱其為前切向和后切向,規(guī)定切線方向指向行進方向。定義切向的垂直方向為其徑向,左徑向為切向逆時針旋轉(zhuǎn)90°,右徑向為順時針旋轉(zhuǎn)90°,前徑向和后徑向分別為由前切線和后切線確定徑向方向。每個頂點擁有兩個徑向,即前徑向和后徑向,而每個徑向的左右之分則由刀補設定(左、右刀補)?;谝陨隙x,頂點的前、后偏移點定義為從頂點出發(fā)分別沿前、后徑向經(jīng)過一個刀具半徑距離的兩個點。下面為上述定義的數(shù)學表達,
直線段前切向:其中Pi-1和Pi分別為前直線段的起點和終點。
直線段后切向:其中Pi和Pi+1分別為后直線段的起點和終點。
圓弧段前切向:其中Pi-1、Pi和Ci-1分別為前圓弧段的起點、終點和圓心。圓弧段前切向與垂直,將其旋轉(zhuǎn)90°后根據(jù)圓弧的旋轉(zhuǎn)方向選擇正確的垂直方向。
圓弧段后切向:其中Pi、Pi+1和Ci分別為后圓弧段的起點、終點和圓心。其幾何原理同圓弧段前切向所述。
左徑向:其中τi可以是前切向或后切向。左徑向與切向垂直,且位于切向的“左側(cè)”,即將τi旋轉(zhuǎn)90°。
右徑向:其中τi可以是前切向或后切向。其幾何原理同左徑向所述。
前偏移點:其中R為刀具半徑,可以是左徑向或右徑向。前偏移點為以Pi為基點,向方向移動R距離的點。
后偏移點:其中R為刀具半徑,可以是左徑向或右徑向。其幾何原理同前偏移點所述。
實施步驟1包括以下子步驟:
1)設工件輪廓線頂點個數(shù)為N,為第i個頂點向量,Pi-1為前一個頂點向量,Pi+1為后一個頂點向量,
(2)令i=0,
(3)若i=N則轉(zhuǎn)子步驟(10)否則轉(zhuǎn)子步驟(4),
(4)若邊Pi-1Pi為直線段則采用公式(1)計算前切向若其為圓弧段則采用公式(2)計算前切向
式(2)中,Ci-1為邊Pi-1Pi的圓心,函數(shù)sgn(x)為符號函數(shù),
二維向量與的外積采用公式(4)計算得到,
(5)若邊PiPi+1為直線段則采用公式(5)計算后切向若其為圓弧段則采用公式(6)計算后切向
式(6)中,Ci為邊PiPi+1的圓心,
(6)若為左刀補設置,則采用公式(7)計算前徑向若為右刀補設置,則采用公式(8)計算前徑向
(7)若為左刀補設置,則采用公式(9)計算后徑向若為右刀補設置,則采用公式(10)計算后徑向
(8)利用公式(11)(12)分別計算前、后偏移點和
式(11)(12)中R為刀具補償半徑,二維向量的長度采用二范數(shù)定義,
(9)令i=i+1,轉(zhuǎn)子步驟(3),
(10)結(jié)束。
步驟2、通過在前后偏移點間增加過渡頂點和過度線段的方法,將間斷的偏移邊接續(xù)為閉合的偏移曲線。經(jīng)過幾何偏移后,前后偏移點往往不會重合,通過接續(xù)處理可將間斷的部分連接起來。定義外接續(xù)為前切向與后徑向夾角小于90°時前后偏移點的直線過渡,內(nèi)接續(xù)為前切向與后徑向夾角大于90°時前后偏移點的直線過渡。內(nèi)接續(xù)情形時,選擇以前、后偏移點分別為起、止點的直線段作為過渡曲線,雖然會產(chǎn)生局域自交環(huán),但是可以在后續(xù)階段中消除。外接續(xù)情形時,分為兩種情況處理:前、后切向夾角小于或等于120°時,將分別過前、后偏移點且以前、后切向為斜率的兩直線交點作為中過渡頂點,則過渡曲線為依次經(jīng)過前偏移點、中過渡頂點和后偏移點的兩條直線段;前、后切線夾角大于120°時,將在前切線方向上距前偏移點一個半徑的點作為前過渡頂點,將在負后切線方向上距后偏移點一個半徑的點作為后過渡頂點,則過渡曲線為依次經(jīng)過前偏移點、前過渡頂點、后過渡頂點和后偏移點的三條直線段。下面為上述定義的數(shù)學表達,
外接續(xù)判定條件:
內(nèi)接續(xù)判定條件:
前、后切向夾角和半角:
中過渡頂點:中過渡頂點為以Pi為基點,沿著旋轉(zhuǎn)后的方向移動距離到達的點。通過自適應輪廓線的旋轉(zhuǎn)方向。
前過渡頂點:其幾何原理同中過渡頂點所述。
后過渡頂點:其幾何原理同中過渡頂點所述。
按照輪廓線頂點順序依次處理生成加工軌跡。將輪廓線相鄰兩頂點A、B之間的直線段或圓弧段用A后偏移點和B前偏移點之間的直線段或圓弧段代替,同一頂點的前偏移點和后偏移點之間按上述方法采用一條(內(nèi)接續(xù))、兩條(外接續(xù)且夾角小于等于120°)或三條(外接續(xù)且夾角大于120°)直線段過渡。對于外接續(xù)的兩種情況,如果前段是直線段,則將前偏移點從加工軌跡的頂點中刪除,如果后段是直線段,則將后偏移點刪除。
按照刀具設定,則輪廓線的偏移距離為R=2mm。按照順序逐點計算前、后偏移點QB,QF,計算結(jié)果如圖3所示。采用直線接續(xù),計算結(jié)果如圖4實線所示。
實施步驟2包括以下子步驟:
(1)設工件輪廓線頂點個數(shù)為M,為第i個頂點向量,為邊PiPi+1的偏移邊,
(2)令i=0,
(3)若i=M則轉(zhuǎn)子步驟(8),否則轉(zhuǎn)子步驟(4),
(4)若則在偏移邊Ei和Ei-1間插入過度線段
(5)若且則通過公式(13)計算中過渡頂點TiC,并在偏移邊Ei和Ei-1間插入過度線段和
(6)若且則通過公式(14)(15)計算前過渡頂點TiB和后過渡頂點TiF,并在偏移邊Ei和Ei-1間插入過度線段和
(7)令i=i+1,轉(zhuǎn)子步驟(3),
(8)結(jié)束。
步驟3、通過矩形包絡相交預判斷法和直線段重心坐標、圓弧段三角投影坐標,計算偏移曲線中的自交點,并依據(jù)自交點對圓弧段直線化。為了簡化后續(xù)計算,在生成掃描線之前,首先采用圓弧端點和自交點對圓弧段直線化。自交點可以是圓弧和圓弧的交點,直線和直線的交點或者圓弧和直線的交點,如果直接用解析幾何的方法判斷相交,計算量巨大,因此利用圓弧的矩形包絡和直線的矩形包絡粗略判斷相交可能性。定義圓弧段的矩形包絡為其上各點X軸范圍和Y軸范圍所轄矩形。定義直線段的矩形包絡為以其為對角線的矩形。當矩形包絡相交則計算兩直線段之間,兩圓弧段之間或者直線段與圓弧段的交點,否則無需計算交點。在計算交點時,為了消除非可行解,還需要判斷交點是否位于直線段或者圓弧段。在判斷圓弧交點的可行解時,通過引入圓弧的三角投影坐標,降低了計算復雜性。
逆時針圓弧三角投影坐標:其中C,P1,P2,P分別為逆時針圓弧的圓心、起止點坐標和圓上的任意點。三角投影坐標為θ的單調(diào)函數(shù),賦予圓弧上的點(二維坐標)一個一維有序坐標。為了提高計算效率,也避免了反三角函數(shù)的使用。
順時針圓弧三角投影坐標:其中C,P1,P2,P分別為順時針圓弧的圓心、起止點坐標和圓上的任意點。其幾何原理同逆時針圓弧三角投影坐標所述。
判斷并計算任意兩條邊的交點,偏移曲線的所有自交點及頂點如圖5所示。利用自交點對圓弧段直線化后,計算結(jié)果如圖6所示。
實施步驟3包括以下子步驟:
(1)設偏移曲線頂點個數(shù)為U,為第個i頂點,為邊PiPi+1,
(2)令i=0,
(3)若i=U,則轉(zhuǎn)子步驟(11),否則轉(zhuǎn)子步驟(4),
(4)令j=i+1,
(5)若j=U,則轉(zhuǎn)子步驟(10),否則轉(zhuǎn)子步驟(6),
(6)若Ei或Ej的矩形包絡不存在,則按照以下子步驟計算其矩形包絡,
(a)若Ek=(Pk,Pk+1)為直線段,則其矩形包絡為,
式(16)中,和分別為頂點Pk的橫、縱坐標,min和max分別為取最小值和最大值函數(shù),
(b)若Ek為圓弧段,則轉(zhuǎn)子步驟(c),否則轉(zhuǎn)子步驟(i),
(c)設Ek圓心為Ck,半徑為R,和所處象限分別為s1和s2,X方向加工區(qū)域范圍為[XMIN,XMAX],Y方向加工區(qū)域范圍為[YMIN,YMAX],
(d)令i=s1,d=1,xmin=XMAX,xmax=XMIN,ymin=Y(jié)MAX,ymax=Y(jié)MIN,若圓弧為順時針,則令d=-1,
(e)若i=s2,則轉(zhuǎn)子步驟(i),否則轉(zhuǎn)子步驟(f),
(f)根據(jù)條件賦值,若i為第Ⅰ象限且i+d為第Ⅱ象限,或者i為第Ⅱ象限且i+d為第Ⅰ象限,則ymax=Ck,y+R,若i為第Ⅱ象限且i+d為第Ⅲ象限,或者i為第Ⅲ象限且i+d為第Ⅱ象限,則xmin=Ck,x-R,若i為第Ⅲ象限且i+d為第Ⅳ象限,或者i為第Ⅳ象限且i+d為第Ⅲ象限,則ymin=Ck,y-R,若i為第Ⅳ象限且i+d為第Ⅰ象限,或者i為第Ⅰ象限且i+d為第Ⅳ象限,則xmax=Ck,x+R,
(g)令i=i+d轉(zhuǎn)子步驟(e),
(h)按照公式(17)計算圓弧段的矩形包絡,
(i)包絡為以(xmin,ymin)和(xmax,ymax)為對角頂點的矩形,結(jié)束,
(7)判斷Ei和Ej矩形包絡間是否相交,若不相交則轉(zhuǎn)子步驟(9),否則轉(zhuǎn)子步驟(8),
(8)計算Ei和Ej的交點,并用以下判定確定可行解,
(a)若交點P位于直線,轉(zhuǎn)子步驟(b),否則轉(zhuǎn)子步驟(e),
(b)設交點P所在邊的起、止點坐標分別為P1和P2,
(c)按照公式(18)計算重心坐標λ,
(d)若0<λ<1則轉(zhuǎn)(e)否則P為不可行解,轉(zhuǎn)子步驟(j),
(e)若交點P位于圓上,轉(zhuǎn)子步驟(f),否則轉(zhuǎn)子步驟(i),
(f)設交點P所在邊的圓心、起、止點坐標分別為C,P1和P2,
(g)若P所在邊為逆時針圓弧則按照公式(19)計算三角投影坐標μ(P)和μ(P2),否則按照公式(20)計算
式(19)(20)中,為函數(shù)自變量,三角函數(shù)可按公式(21)計算,
(h)若0<μ(P)<μ(P2)則轉(zhuǎn)子步驟(i),否則P為不可行解轉(zhuǎn)子步驟(j),
(i)確定P為可行解,
(j)結(jié)束,
(9)令j=j+1并轉(zhuǎn)子步驟(5),
(10)令i=i+1,轉(zhuǎn)子步驟(3),
(11)令i=0,
(12)若i=U則轉(zhuǎn)子步驟(16),否則轉(zhuǎn)子步驟(13),
(13)若Ei上自交點數(shù)大于0,則轉(zhuǎn)子步驟(14),否則轉(zhuǎn)子步驟(15),
(14)若Ei為圓弧段,則按照三角投影坐標升序,在Pi和Pi+1間插入Ei所有自交點;否則按照重心坐標升序,在Pi和Pi+1間插入Ei所有交點,然后把從Pi到Pi+1之間的所有點用直線段連接,并在偏移曲線中刪除Ei,
(15)令i=i+1,轉(zhuǎn)子步驟(12),
(16)結(jié)束。
步驟4、通過掃描線分割和基于分割區(qū)域的布爾運算無效區(qū)判定方法,判定直線化偏移曲線中的無效區(qū)域。經(jīng)過以上各階段處理,偏移曲線成為只有直線段的集合,采用水平掃描線,按照由底向上的方式逐行掃描。若偏移曲線不閉合,可以將其首尾用直線段連接,則使其成為閉合曲線。由于本階段處理的偏移曲線不存在圓弧段,因此稱閉合偏移曲線為多邊形,稱其直線段為多邊形的邊E。定義邊的高度為其兩端點高度最小值。定義等高邊集為具有相同高度邊的集合。定義邊表ET為按照高度升序的等高邊集的列表。定義掃描線為由相鄰等高邊集的高度區(qū)間界定的橫向直帶。定義上、下掃描交點分別為某邊與當前掃描線上、下沿的交點。定義活動邊表AEL為按照下掃描交點從左至右排列并與當前掃描線相交的邊集合。依照邊表元素的順序生成掃描線和活動邊表的過程,就是從底向上逐行掃描的過程。
計算幾何中采用多邊形內(nèi)部在輪廓線的左側(cè)或右側(cè)的定義,區(qū)分內(nèi)環(huán)和外環(huán)。內(nèi)環(huán)和外環(huán)具有不同的旋轉(zhuǎn)方向,比如通常外環(huán)為逆時針,內(nèi)環(huán)為順時針。不失一般性,本發(fā)明也采用此種方向定義。正則多邊形必然是外環(huán)包圍內(nèi)環(huán)或者內(nèi)環(huán)包圍外環(huán)。但若違反該規(guī)則,則多邊形存在無效區(qū)域,需要刪除無效區(qū)域后使其成為若干正則多邊形。多邊形的凹凸性和自交情形增加了判定無效區(qū)域的復雜性,本發(fā)明根據(jù)邊的趨向和區(qū)域內(nèi)、外屬性的布爾運算,能夠快速標定無效區(qū)域上的無效邊,最后統(tǒng)一刪除無效邊并構(gòu)建正則多邊形。定義邊的趨向DIR為縱坐標的變化方向,由于AEL在判斷前刪除水平邊,所以只存在上下兩種方向。當邊的左側(cè)鄰域位于多邊形內(nèi)部時,邊的左區(qū)域?qū)傩訪RA等于1,否則等于0。當邊的右側(cè)鄰域位于多邊形內(nèi)部時,邊的右區(qū)域?qū)傩訰RA等于1,否則等于0。AEL中邊的數(shù)量為偶數(shù),在無效區(qū)域判定時選擇連續(xù)的偶序數(shù)和奇序數(shù)邊作為一組判定數(shù)據(jù),定義偶序數(shù)邊為左判定邊LTE,奇序數(shù)邊為RTE。
按照從底向上的方式生成水平掃描線,掃描線為兩條虛線之間的部分,計算結(jié)構(gòu)如圖7所示。由于本算例的輪廓為內(nèi)環(huán),所以需要在AEL的左右兩端添加輔助邊,無效邊標注計算結(jié)果如圖8所示(無效邊用虛線標示)。
實施步驟4包括如下子步驟:
(1)根據(jù)直線化偏移曲線,利用標準掃描線構(gòu)建邊表ET,
(2)設邊表ET中存在的掃描線條數(shù)為V,并令i=0,
(3)若i=V轉(zhuǎn)子步驟(18),否則轉(zhuǎn)子步驟(4),
(4)針對掃描線i并利用標準掃描線算法構(gòu)建活動邊表AEL,
(5)設AEL中有W條邊,令j=0,
(6)若j=W轉(zhuǎn)子步驟(10),否則轉(zhuǎn)子步驟(7),
(7)若AEL中邊Ej與Ej+1重合且方向相反,則標注二者均為無效邊并從AEL中刪除,令j=j+1轉(zhuǎn)子步驟(9),
(8)若Ej為平行方向,則標注其為有效邊并從AEL中刪除,轉(zhuǎn)子步驟(9),
(9)令j=j+1,轉(zhuǎn)子步驟(6),
(10)若輪廓為內(nèi)環(huán),則在AEL的左、右端分別插入下、上趨向的兩條輔助邊,
(11)經(jīng)過以上步驟的一輪預處理后,AEL中判定數(shù)據(jù)共有K組,則其邊共有2K條,
(12)令j=0,
(13)若j=K,則轉(zhuǎn)子步驟(17),否則轉(zhuǎn)子步驟(14),
(14)利用公式(22)計算第j組判定邊之左判定邊的左區(qū)域?qū)傩宰笈卸ㄟ叺挠覅^(qū)域?qū)傩杂遗卸ㄟ叺淖髤^(qū)域?qū)傩院陀遗卸ㄟ叺挠覅^(qū)域?qū)傩?/p>
式中,和+運算為布爾代數(shù)中的“異或”和“或”運算,和分別為左、右判定邊的趨向,邊PjPj+1的趨向按照公式(23)計算,
(15)若則標注其為無效邊,若則標注其為無效邊,
(16)令j=j+1,轉(zhuǎn)子步驟(13),
(17)令i=i+1,轉(zhuǎn)子步驟(3),
(18)結(jié)束。
步驟5、利用多邊形邊的無效屬性,刪除無效區(qū)域(過切區(qū)域)并恢復直線化圓弧的原始形狀。經(jīng)過上述階段處理,多邊形的每個邊已經(jīng)被標定為無效或者有效。由無效邊首尾相接組成的多邊形稱為無效環(huán),一個多邊形的無效環(huán)刪除后,可能產(chǎn)生多個多邊形。在步驟3對圓弧段直線化處理時,通過將原始圓弧段的圓心存儲在其生成直線段數(shù)據(jù)結(jié)構(gòu)體,則可以保證在復原時利用直線段兩端點和圓心坐標得到圓弧曲線。
刪除標注為無效的邊,保留有效的邊(圖8中實線標示的邊),獲得四個無自交點的正多邊形,如圖9所示?;謴瓦叺膱A弧屬性后,最終的加工路徑如圖10所示。
實施步驟5包括以下子步驟:
(1)設多邊形中共有Z條邊,
(2)令i=0,
(3)若i=Z,轉(zhuǎn)子步驟(6),否則轉(zhuǎn)子步驟(4),
(4)若邊Ei為無效邊,則將其從多邊形中刪除,
(5)令i=i+1,轉(zhuǎn)子步驟(3),
(6)再次遍歷多邊形按照邊首尾相連的原則,找出其中所有閉合多邊形,
(7)遍歷上一步生成的多個多邊形,若其中某邊源自某圓弧段的直線化,則通過其圓弧段的圓心坐標恢復形狀,
(8)結(jié)束。
綜上,經(jīng)過以上步驟的處理,可以快速地且無逼近誤差地生成具有避免過切的加工軌跡。本發(fā)明除計算圓弧段交點、向量長度和半角公式時需要開根號運算外,其它均為普通四則運算,適用于計算資源有限且實時性要求高的嵌入式應用領域。然而雖計算方法簡單,但能保證無逼近誤差,因此使低成本嵌入式系統(tǒng)實現(xiàn)高精度數(shù)控功能成為可能。