本發(fā)明涉及二維坐標(biāo)系統(tǒng)中幾何多邊形之間的外靠接臨界多邊形計算技術(shù)領(lǐng)域,特別是不規(guī)則多邊形之間的外靠接臨界多邊形的快速和準(zhǔn)確的計算技術(shù)。
背景技術(shù):
外靠接臨界多邊形計算問題廣泛存在于鈑金、服裝、木材、皮革、石材、玻璃等原材料下料加工作業(yè)中,例如現(xiàn)代制造業(yè)中的鈑金切割、服裝裁剪、木材加工、皮革切割等下料作業(yè),都需要采用專業(yè)的技術(shù)手段先在原材料上對需要加工或裁切的部件進(jìn)行靠接排放,以獲得滿意的原材料利用率。
這些技術(shù)應(yīng)用所涉及的科學(xué)問題在理論上稱為二維排樣優(yōu)化問題,其研究內(nèi)容是根據(jù)給定的原材料以及需加工的部件需求,確定部件在原材料上的最佳排放方案,以獲得最佳的材料利用率。由于問題具有組合特性和幾何特性,其計算難度很大。特別是在涉及不規(guī)則部件的二維優(yōu)化排樣應(yīng)用中,由于部件輪廓的不規(guī)則和任意性,問題的計算復(fù)雜度急劇增加,給優(yōu)化問題的求解帶來極大困難。目前,原材料下料排樣多采用計算機技術(shù)自動完成。自動化排樣作為降低生產(chǎn)成本、提高工作效率的重要技術(shù)手段,在現(xiàn)代制造業(yè)中至關(guān)重要。
在尋找良好的排樣方案時,需要大量地考慮部件之間的靠接。此時,不規(guī)則部件之間的外靠接臨界多邊形是被大量使用的基礎(chǔ)手段和幾何工具。為了獲得較好的原材料利用率,就需要使用準(zhǔn)確、可靠和快速的外靠接臨界多邊形計算方法。外靠接臨界多邊形的幾何定義為:對于兩個形狀任意的多邊形a和b,讓多邊形a固定不動,多邊形b繞a的外部輪廓一周做不旋轉(zhuǎn)的平移運動,運動過程中保持b與a接觸但不重疊,那么b上預(yù)先選定的某個參考點在b的移動過程中所形成的一個或若干個封閉的多邊形就是b相對于a的外靠接臨界多邊形(集合)。外靠接臨界多邊形給出了二維部件(體現(xiàn)為多邊形)之間所有可能的外靠接位置,其計算問題是二維排樣問題中的基礎(chǔ)性幾何問題,也是二維排樣應(yīng)用中的關(guān)鍵技術(shù)問題。因此,一種快速、準(zhǔn)確、適應(yīng)性強的外靠接臨界多邊形計算方法是二維排樣問題的難點和重點,也是本發(fā)明主要解決的問題。
雖然國內(nèi)外眾多研究人員在多邊形(特別是不規(guī)則多邊形)之間的外靠接臨界多邊形計算上已經(jīng)做了大量的工作,目前常用的方法有移動碰撞法、明科夫斯基矢量和法、斜率圖法等,但是這些方法都有不同的缺陷,比如移動碰撞法無法獲得帶有狹小凹槽多邊形的內(nèi)部臨界多邊形,且計算復(fù)雜度高;明科夫斯基矢量和法只適用于凸多邊形之間的外靠接臨界多邊形計算;斜率圖法無法解決兩個多邊形都是凹多邊形的外靠接臨界多邊形計算。目前來看,現(xiàn)有的外靠接臨界多邊形計算方法適用面窄且時間復(fù)雜度高,在實際應(yīng)用中有諸多限制。要提高我國的自動化排樣技術(shù),需要對這些關(guān)鍵基礎(chǔ)技術(shù)重點研究,解決其關(guān)鍵難題,才能為后續(xù)其他在此基礎(chǔ)上的研究奠定基礎(chǔ),獲得事半功倍的效果。
就目前調(diào)研結(jié)果看,在國內(nèi)尚無利用矢量線段合成方法計算兩個任意形狀多邊形之間的外靠接臨界多邊形的相關(guān)論文和專利授權(quán)。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供一種適用于形狀任意的兩個多邊形之間的外靠接臨界多邊形的計算方法。
為了便于準(zhǔn)確描述,對發(fā)明所述方法中涉及的若干數(shù)學(xué)概念與數(shù)學(xué)符號作說明如下:
1、發(fā)明中所用的坐標(biāo)空間均為平面坐標(biāo)空間,并采用笛卡爾直角坐標(biāo)系。為方便描述,假定水平向右方向為x軸正方向,水平向左方向為x軸負(fù)方向,垂直向上方向為y軸正方向,垂直向下方向為y軸負(fù)方向。
2、以符號a、b分別指代平面坐標(biāo)系中兩個形狀任意的多邊形。為方便描述,本發(fā)明中所指的外靠接臨界多邊形均指多邊形b相對于多邊形a的外靠接臨界多邊形,即多邊形b繞多邊形a平移一周所形成的外靠接臨界多邊形。
3、多邊形a、b的表示方式既可采用多邊形輪廓的頂點集合表示方式,也可以采用多邊形輪廓的邊集合表示方式;頂點集合或邊集合的描述順序既可采用逆時針方向順序描述,也可以采用順時針方向順序描述。為方便描述,本發(fā)明以逆時針方向頂點集合的多邊形表示方法來描述有關(guān)計算方法。
為了實現(xiàn)發(fā)明目的,本發(fā)明采用的計算方法的方案為:先計算得到多邊形的角頂點相對于另一多邊形的矢量邊移動產(chǎn)生的矢量線段,對產(chǎn)生的矢量線段進(jìn)行必要的分割處理后,再對分割處理后的矢量線段采取“最小旋轉(zhuǎn)角”策略來合成一個外部臨界多邊形和可能存在的內(nèi)部臨界多邊形,則得到的一個或多個臨界多邊形即為所需計算的多邊形之間的外靠接臨界多邊形(集合)。
對于給定的任意形狀的兩個多邊形a、b,若需計算多邊形b相對多邊形a的外靠接臨界多邊形,方法具體包括如下步驟:
s1、判斷一個多邊形的各個角頂點(矢量邊)與另一個多邊形各個矢量邊(角頂點)的接觸情況;
s2、多邊形的參考點選取。多邊形b輪廓邊上的任意一個點(包括其角頂點和矢量邊上的點)均可選為參考點。參考點一旦選定,在外靠接臨界多邊形的計算過程中不可更改;
s3、計算產(chǎn)生初始的矢量線段。利用步驟s1得到的能接觸的“角頂點-矢量邊”組合以及步驟s2選取的參考點,讓多邊形b的各個角頂點(和各矢量邊)在a的能接觸的矢量邊(和角頂點)上移動,此時參考點的移動將產(chǎn)生矢量線段;產(chǎn)生的所有矢量線段構(gòu)成初始的矢量線段集合,兩個多邊形之間的外靠接臨界多邊形必定包含在上述方式產(chǎn)生的矢量線段之中;
s4、矢量線段的分割處理,此步驟對在步驟s3中計算產(chǎn)生初始的矢量線段進(jìn)行分割處理;通過此步驟的分割處理,可將初始的矢量線段集合處理成后面合成外靠接臨界多邊形所需的矢量線段集合;
s5、通過篩選矢量線段合成外部臨界多邊形,具體步驟如下:
s5.1、在篩選矢量線段合成外部臨界多邊形前,選擇一個初始出發(fā)點和一個初始的參考方向;
s5.2、采用“最小旋轉(zhuǎn)角”策略逐步篩選矢量線段來合成外部臨界多邊形;
s6、通過篩選矢量線段合成可能存在的內(nèi)部臨界多邊形。
s7、計算可能存在的退化情形。在一些特殊情況下,內(nèi)部臨界多邊形可能會出現(xiàn)退化情形,包括退化為點和退化為線段兩種情形;
優(yōu)選的,步驟s1中判定各個角頂點(矢量邊)與另一個多邊形各個矢量邊(角頂點)是否接觸,若角頂點的出邊相對于其入邊逆時針轉(zhuǎn)過的角度大于180度,則判斷角頂點和矢量邊不可能接觸;若不大于180度,且該矢量邊位于角頂點的入邊與出邊反向延長線所構(gòu)成的逆時針方向夾角區(qū)域內(nèi),則判斷為兩者能接觸。通過此步驟,可計算獲得兩個多邊形的各個角頂點與各條矢量邊之間能接觸的所有“角頂點-矢量邊”組合。
優(yōu)選的,步驟s3中初始的矢量線段集合的獲取包括兩個部分:
(1)、針對多邊形b的角頂點與多邊形a的矢量邊的每個能接觸“角頂點-矢量邊”組合,先平移多邊形b使其在組合中的角頂點與a中對應(yīng)矢量邊的起點重合,然后沿矢量邊方向平移多邊形b,直到該角頂點到達(dá)該矢量邊的終點位置(且多邊形b在平移過程中始終保持其角頂點與該矢量邊相接觸),此過程中多邊形b的參考點的移動將產(chǎn)生一條矢量線段。通過這一計算,可產(chǎn)生一組基于多邊形b角頂點和多邊形a矢量邊的能接觸“角頂點-矢量邊”組合的矢量線段;
(2)、針對多邊形a的角頂點與多邊形b的矢量邊的每個能接觸“角頂點-矢量邊”組合,先平移多邊形b使其在該組合中的矢量邊的起點與a中對應(yīng)的角頂點重合,然后沿該矢量邊的反方向平移多邊形b,直到該矢量邊的終點到達(dá)角頂點位置(多邊形b在平移過程中始終保持其矢量邊與該角頂點相接觸),此過程中多邊形b的參考點的移動也將產(chǎn)生一條矢量線段。通過這一計算,可產(chǎn)生一組基于多邊形a角頂點和多邊形b矢量邊的能接觸“角頂點-矢量邊”組合的矢量線段;
其中上述兩部分計算得到的兩組矢量線段構(gòu)成本算法所需的初始的矢量線段集合。
優(yōu)選的,步驟s4的矢量線段分割處理包括兩種情形:
①若矢量線段之間存在相交,其中兩線段重合或部分重合,以及一線段的端點與另一線段的端點重合不在此范疇內(nèi),則計算出它們的交點,并用交點分割該交點所在的矢量線段,每個交點都將其所在的矢量線段分割成兩條矢量線段;
②若某些矢量線段出現(xiàn)重合,其中長度相同的矢量線段完全重合的情形不在此范疇內(nèi),則用矢量線段位于重合部分的端點來分割矢量線段;
其中所述的分割處理僅針對初始矢量線段集合中滿足所述的兩種情形的矢量線段,分割得到的新矢量線段將加入矢量線段集合,而被分割的矢量線段則從集合中剔除;那些無需分割的矢量線段仍保留在集合中。
優(yōu)選的,步驟s5.1所述的初始出發(fā)點需在步驟s4得到的所有矢量線段的端點中處于極限位置的端點中選取(有最下端點、最上端點、最右端點和最左端點四類端點可以選擇),并根據(jù)選擇的初始出發(fā)點的情況選擇一個對應(yīng)的初始參考方向:x軸正方向與最下端點配對,x軸負(fù)方向與最上端點配對,y軸正方向與最右端點配對,y軸負(fù)方向與最左端點配對(若多邊形a、b用順時針表示,則各端點配對的坐標(biāo)軸不變,但坐標(biāo)軸的方向與上面所述方向相反)。
優(yōu)選的,步驟s5.2采用“最小旋轉(zhuǎn)角”策略逐步篩選矢量線段來合成外部臨界多邊形的具體步驟如下:
s5.2.1、對于選定的初始的出發(fā)點與參考方向,在矢量線段集合中所有以該出發(fā)點為起點的矢量線段(簡稱為出發(fā)點的出邊)中,找到一條相對于參考方向具有最小旋轉(zhuǎn)角的矢量線段,記錄該矢量線段,并將其矢量方向作為新的參考方向、其終點作為新的出發(fā)點,再將該線段從矢量線段集合中刪除(以保證在后面的矢量線段篩選中不再考慮該矢量線段);
s5.2.2、針對新的出發(fā)點和參考方向,在當(dāng)前矢量線段集合該出發(fā)點的所有出邊中,找到一條相對于當(dāng)前參考方向具有最小旋轉(zhuǎn)角的矢量線段,同樣記錄該線段,并將其方向作為新的參考方向、其終點作為新的出發(fā)點,再將該線段從集合中刪除。重復(fù)這一操作,每次均利用新的出發(fā)點尋找一條相對于當(dāng)前參考方向具有最小旋轉(zhuǎn)角的矢量線段,直到所找到的矢量線段足以形成一個封閉的多邊形為止。此過程得到的封閉多邊形即為所需計算的外部臨界多邊形。
更優(yōu)選的,步驟s5.2中所述的“最小旋轉(zhuǎn)角”策略,其中涉及到計算一條矢量線段相對于一個給定參考方向的旋轉(zhuǎn)角;該旋轉(zhuǎn)角定義為:參考方向所在的矢量邊繞其起點旋轉(zhuǎn)到與該矢量線段方向一致(或平行)時所轉(zhuǎn)過的角度;旋轉(zhuǎn)角的取值范圍為(-180,180],若參考方向是逆時針旋轉(zhuǎn)后與矢量線段方向一致,則旋轉(zhuǎn)角取正值;若是順時針旋轉(zhuǎn)后與矢量線段方向一致,則旋轉(zhuǎn)角取負(fù)值。
優(yōu)選的,步驟s6中通過基于“最小旋轉(zhuǎn)角策略”的矢量線段篩選方法來嘗試合成可能存在的內(nèi)部臨界多邊形;篩選方法遍歷當(dāng)前矢量線段集合的所有端點,每次以一個端點作為出發(fā)點來進(jìn)行一次內(nèi)部臨界多邊形的合成嘗試,并確定可能存在的內(nèi)部臨界多邊形;由于第一條矢量線段無法應(yīng)用最小旋轉(zhuǎn)角策略來篩選,因此采用遍歷方式,分別以當(dāng)前矢量線段集合中該出發(fā)點的各條出邊作為第一條矢量線段,進(jìn)行多個輪次的矢量線段篩選和內(nèi)部臨界多邊形合成嘗試;具體合成內(nèi)部臨界多邊形的步驟如下:
s6.1、在以某條出邊作為第一條矢量線段進(jìn)行一個輪次的操作時,首先以該線段的終點作為出發(fā)點、其矢量方向作為參考方向;
s6.2、基于最小旋轉(zhuǎn)角策略在該出發(fā)點的所有出邊中篩選出下一條矢量線段;
s6.3、以選中的矢量線段的終點作為新的出發(fā)點、其矢量方向作為新的參考方向,同樣采用最小旋轉(zhuǎn)角策略篩選出下一條矢量線段;后繼矢量線段的篩選方法以此類推,在每一輪次的篩選過程中,已被選中的矢量線段不再參與后面的篩選,但是并不從矢量線段集合中刪除;
s6.4、在一個輪次的矢量線段篩選過程中,如果選中的矢量線段能夠形成一個封閉多邊形,且該封閉多邊形的點集方向正確,則該多邊形即為多邊形b相對于多邊形a的一個內(nèi)部臨界多邊形;此時,再從矢量線段集合中剔除掉這個封閉多邊形所包含的所有矢量線段,從而完成一個輪次的內(nèi)部臨界多邊形合成嘗試;
s6.5、在以矢量線段集合的每一個端點作為出發(fā)點進(jìn)行內(nèi)部臨界多邊形的合成嘗試過程中,所得到的所有有效的封閉多邊形就構(gòu)成多邊形b相對于多邊形a的內(nèi)部臨界多邊形集合。
優(yōu)選的,步驟s7退化點和退化線的具體情況如下:
①在矢量線段集合中,如果存在三條以上(含三條)的矢量線段相交于同一點,平移多邊形b使其參考點與該交點重疊,判斷此時的多邊形b是否在多邊形a外部;若是,則該點是一個退化為點的內(nèi)部臨界多邊形(簡稱退化點)。
②在矢量線段集合中,如果存在兩條以上(含兩條)反向共線的矢量線段,且這些矢量線段與其它矢量線段存在兩個以上(含兩個)交點,則這在些交點中滿足退化點條件的兩個交點之間的線段是一個退化為線段的內(nèi)部臨界多邊形(簡稱退化線)。
通過上述步驟計算得到的一個外部臨界多邊形以及可能存在一個或若干個內(nèi)部臨界多邊形、退化點、退化線,共同構(gòu)成了多邊形b相對于多邊形a的外靠接臨界多邊形(集合)。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點和有益效果:
1、本發(fā)明適用于形狀任意的兩個多邊形之間的外靠接臨界多邊形的計算,在實際應(yīng)用中不受零部件輪廓的限制,適用面廣。
2、本發(fā)明在計算多邊形之間的外靠接臨界多邊形時大量采用矢量運算,具有較低的時間復(fù)雜度,能夠快速求得外靠接臨界多邊形,更加適用于與大規(guī)模搜索算法配合求解復(fù)雜的二維排樣問題。
3、本發(fā)明采用矢量線段合成方法計算外靠接臨界多邊形,除了外部臨界多邊形外,還能夠獲得可能存在的內(nèi)部臨界多邊形及退化點、退化線,計算更加準(zhǔn)確和可靠。
附圖說明
圖1是本發(fā)明的計算方法流程圖;
圖2(a)-圖2(c)是本發(fā)明的多邊形的角頂點與另一多邊形的矢量邊的接觸判斷示意圖;其中圖2(a)是∠aob的示意圖,圖2(b)是矢量邊
圖3(a)-圖3(c)是本發(fā)明的初始矢量線段集合的獲取示意圖;其中圖3(a)是多邊形b的示意圖,圖3(b)多邊形a的示意圖;圖3(c)是平移之后的示意圖;
圖4是本發(fā)明的矢量線段相交時的分割處理;
圖5是本發(fā)明的矢量線段重合時的分割處理;其中圖5(a)矢量線段方向相同、部分重合的情況;圖5(b)矢量線段方向相同、包含重合;圖5(c)矢量線段方向相反、部分重合;圖5(d)矢量線段方向相反、包含重合;
圖6是本發(fā)明的合成外部臨界多邊形的算法流程圖;
圖7是本發(fā)明的“最小旋轉(zhuǎn)角”策略;
圖8是本發(fā)明的合成內(nèi)部臨界多邊形的算法流程圖;
圖9(a)-圖9(d)是本發(fā)明的臨界多邊形退化為點或線的情形;其中圖9(a)為多邊形b的示意圖,圖9(b)為臨界多邊形退化為點的情形;圖9(c)為多邊形a的事宜圖;圖9(d)為臨界多邊形退化為線段的情形;
圖10(a)-圖10(c)是本發(fā)明的實施例基于矢量線段合成方法得到的完整的外靠接臨界多邊形集合;其中,圖10(a)為多邊形b的示意圖,圖10(b)為多邊形a的示意圖,圖10(c)為矢量平移之后的示意圖。
具體實施方式
下面結(jié)合實施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實施方式不限于此。
實施例
為了便于準(zhǔn)確描述,對發(fā)明所述方法中涉及的若干數(shù)學(xué)概念與數(shù)學(xué)符號作說明如下:
①發(fā)明中所用的坐標(biāo)空間均為平面坐標(biāo)空間,并采用笛卡爾直角坐標(biāo)系。為方便描述,假定水平向右方向為x軸正方向,水平向左方向為x軸負(fù)方向,垂直向上方向為y軸正方向,垂直向下方向為y軸負(fù)方向。
②以符號a、b分別指代平面坐標(biāo)系中兩個形狀任意的多邊形。為方便描述,發(fā)明書中所指的外靠接臨界多邊形均指多邊形b相對于多邊形a的外靠接臨界多邊形,即多邊形b繞多邊形a平移一周所形成的外靠接臨界多邊形。
③多邊形a、b的表示方式既可采用多邊形輪廓的頂點集合表示方式,也可以采用多邊形輪廓的邊集合表示方式;頂點集合或邊集合的描述順序既可采用逆時針方向順序描述,也可以采用順時針方向順序描述。為方便描述,本發(fā)明以逆時針方向頂點集合的多邊形表示方法為例描述有關(guān)算法。
如圖1所示為本發(fā)明的計算方法流程,包括如下步驟:
(1)判斷多邊形的角頂點與另一多邊形的矢量邊的接觸情況。如圖2(a)中,判斷角∠aob的頂點o能否與矢量邊接觸:如圖2(b)中,移動矢量邊
(2)選取多邊形參考點。若求取多邊形b相對多邊形a的外靠接臨界多邊形,則選取多邊形b輪廓上的任一點作為參考點。參考點一旦選定,則在外靠接臨界多邊形的計算過程中不可更改。在實際應(yīng)用中,為方便計算,通常選取多邊形的某個處于極限位置的頂點作為參考點。
(3)計算獲取初始矢量線段集合。求解過程為:針對步驟(1)獲得的多邊形b與多邊形a的各個角頂點與各條矢量邊的能接觸組合,移動多邊形b使其矢量邊沿著可接觸的多邊形a的角頂點移動,以及移動多邊形b使其角頂點沿可接觸的a的矢量邊移動,此過程中參考點移動得到的多條線段構(gòu)成初試的矢量線段集合。整個過程中,多邊形a固定,多邊形b移動。如圖3(a)、圖3(b)所示為初始矢量線段集合的獲取,其中多邊形b為逆時針方向的正方形,多邊形a為逆時針方向、帶有凹糟的不規(guī)則多邊形,參考點選取的是多邊形b的左下角頂點。如圖3(c)圖中點畫線1是多邊形b的角頂點在多邊形a的矢量邊上移動產(chǎn)生的矢量線段,點畫線2為多邊形b的矢量邊在多邊形a的角頂點上移動產(chǎn)生的矢量線段。為了便于觀察,圖中有重合的矢量線段做了微平移處理。
(4)分割矢量線段。在初始矢量線段集合中,若矢量線段之間存在相交或重合,則用矢量線段的交點或位于重合部分的端點分割相關(guān)矢量線段,得到分割后的矢量線段集合。包括兩種可能情況:
①若矢量線段之間存在相交(兩線段重合或部分重合,以及一線段的端點與另一線段的端點重合不在此范疇內(nèi)),則計算出它們的交點,并用交點分割該交點所在的矢量線段,每個交點都將其所在的矢量線段分割成兩條矢量線段。圖4舉例說明了矢量線段相交時的分割方法。圖中矢量線段
②若某些矢量線段出現(xiàn)重合(長度相同的矢量線段完全重合的情形不在此范疇內(nèi)),則用矢量線段位于重合部分的端點來分割矢量線段,分割方法與矢量線段的方向以及重合形式有關(guān)。圖5(a)-圖5(d)舉例說明了矢量線段重合時的分割方法。圖5(a)為兩條同向且為部分重合的矢量線段的分割:同向矢量線段
(5)合成外部臨界多邊形。如圖6為計算外部多邊形的算法流程圖。每次通過選取合適的出發(fā)點和參考方向,并以“最小旋轉(zhuǎn)角”策略從矢量線段集合中篩選出一條矢量線段來合成一個封閉多邊形,該多邊形即為外部臨界多邊形。其中,圖7所示為利用最小旋轉(zhuǎn)角策略從出發(fā)點的所有出邊中篩選出一條用于合成外部臨界多邊形的矢量線段的示例。假定圖中
(6)合成可能存在的內(nèi)部臨界多邊形。如圖8為計算內(nèi)部臨界多邊形的算法流程圖。通過遍歷矢量線段的端點集合,以每個端點作為初始的出發(fā)點(起點),采用“最小旋轉(zhuǎn)角”策略,經(jīng)過多個輪次來篩選矢量線段和嘗試合成內(nèi)部臨界多邊形。在任一輪次的搜索過程中,如果無法構(gòu)成封閉多邊形,則說明該輪次的起點(某個矢量線段端點)不是內(nèi)部臨界多邊形的頂點,則放棄該端點,選取下一個端點作為起點,重新嘗試合成內(nèi)部臨界多邊形;如果能夠獲得封閉多邊形,則判斷該多邊形的點集方向是否正確,如正確則為有效的內(nèi)部臨界多邊形,將其加入臨界多邊形集合,否則,不是有效內(nèi)部臨界多邊形,丟棄該封閉多邊形。特別地,對合成得到的每個封閉多邊形,算法都需要通過判斷其方向是否正確來確定是否屬于有效的內(nèi)部臨界多邊形。判斷方法為:若多邊形a、b的點集采用逆時針表示,則有效的內(nèi)部臨界多邊形必須為順時針多邊形;若a、b的點集采用順時針表示,則有效的內(nèi)部臨界多邊形必須為逆時針多邊形。另外還需說明的是,并非任意兩個多邊形之間的外靠接臨界多邊形都一定會包含內(nèi)部臨界多邊形,如果利用矢量線段合成方法無法獲得封閉的內(nèi)部多邊形,說明這兩個多邊形之間的外靠接臨界多邊形只有外部臨界多邊形,而沒有內(nèi)部臨界多邊形。
(7)計算可能存在的退化點和退化線。
在一些特殊情況下,內(nèi)部臨界多邊形可能會出現(xiàn)退化情形。包括兩種:內(nèi)部臨界多邊形退化為點或退化為線段。退化點與退化線均屬于內(nèi)部臨界多邊形的范疇,其確定方法分述如下:
①在矢量線段集合中,如果存在三條以上(含三條)的矢量線段相交于同一點,平移多邊形b使其參考點與該交點重疊,判斷此時的多邊形b是否在多邊形a外部。若是,則該點是一個退化為點的內(nèi)部臨界多邊形(簡稱退化點)。圖9(a)、圖9(b)為內(nèi)部臨界多邊形退化為點的示例,多邊形b為一梯形,多邊形a為帶凹糟的長方形,參考點選取為多邊形b的左下角頂點,利用多邊形a、b計算得到的部分矢量線段(圖中所示的6條帶方向箭頭的線段)相交于一點(o),平移多邊形b使得其參考點(最下端點)與o點重合后,因多邊形b在多邊形a外部,故o點為退化點。
②在矢量線段集合中,如果存在兩條以上(含兩條)反向共線的矢量線段,且這些矢量線段與其它矢量線段存在兩個以上(含兩個)交點,則這在些交點中滿足退化點條件的兩個交點之間的線段是一個退化為線段的內(nèi)部臨界多邊形(簡稱退化線)。圖9(c)、圖9(d)為內(nèi)部臨界多邊形退化為線的示例,多邊形b為一正方形,多邊形a為帶凹糟的長方形,參考點選取為多邊形b的左下角頂點,用多邊形a、b計算得到的部分矢量線段有:
最終,通過上述步驟計算得到的外部臨界多邊形、內(nèi)部臨界多邊形、退化線、退化點共同構(gòu)成兩個多邊形之間的臨界多邊形集合。如圖10(a)-圖10(c)所示,多邊形b采用的是逆時針方向的正方形,多邊形a采用的是逆時針方向中間有凹糟的長方形,參考點選取的是多邊形b的左下角頂點。圖10(c)中點畫線段的集合即為通過本發(fā)明所述方法計算得到的多邊形b相對于多邊形a的外靠接臨界多邊形集合。其中,多邊形abcdh為外部臨界多邊形,多邊形efg為內(nèi)部臨界多邊形,線段de為退化線。當(dāng)多邊形b的參考點位于外靠接臨界多邊形的任一點上時,多邊形b與多邊形a之間均為既靠接但不重疊的接觸。
上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。