亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種弧段多邊形二維布爾運(yùn)算方法與流程

文檔序號:12735702閱讀:1022來源:國知局
一種弧段多邊形二維布爾運(yùn)算方法與流程

本發(fā)明涉及圖形處理技術(shù)領(lǐng)域,特別涉及一種弧段多邊形二維布爾運(yùn)算方法。



背景技術(shù):

二維布爾運(yùn)算是計算幾何和計算機(jī)圖形學(xué)的重要內(nèi)容之一,它的主要功能與結(jié)果是簡單的圖形經(jīng)布爾運(yùn)算后可以得到復(fù)雜圖形,在機(jī)械零件設(shè)計、建筑平面設(shè)計、船舶制造等很多領(lǐng)域都有廣泛的應(yīng)用。作為一種最常用、最基礎(chǔ)的算法工具,二維布爾運(yùn)算在PCB電路板制造行業(yè)也有著廣泛應(yīng)用。

現(xiàn)有的二維布爾運(yùn)算算法一般用“環(huán)”的形式描述圖形邊界,例如目前被廣泛應(yīng)用的二維布爾運(yùn)算開源庫Clipper,是一個非常精致的二維布爾運(yùn)算的庫,但是它和其它同類二維布爾運(yùn)算庫都有共同的缺點,就是不能處理曲線,需要將曲線切割成近似的多段直線段后才能處理。這樣既增加了數(shù)據(jù)量,又改變了數(shù)據(jù)類型,處理過程復(fù)雜?,F(xiàn)有技術(shù)也有采用三維布爾運(yùn)算庫來實現(xiàn)二維布爾運(yùn)算需求,但是三維庫容量大、成本高、價格昂貴。



技術(shù)實現(xiàn)要素:

針對以上問題,本發(fā)明專利目的在于設(shè)計了一種弧段多邊形二維布爾運(yùn)算方法,能有效解決曲線類二維圖形布爾運(yùn)算,成本低、運(yùn)算快。

本發(fā)明具體的技術(shù)方案如下:

一種弧段多邊形二維布爾運(yùn)算方法,包括:

步驟S101,依次讀入主體A和主體B的數(shù)據(jù),剔除主體A和主體B多余的共線點;

步驟S102,計算主體A和主體B的島、洞,以及每個島、洞對應(yīng)的交點和子邊的數(shù)據(jù),并計算島的最低子邊;

步驟S103,創(chuàng)建島和洞與自身對應(yīng)的交點的哈希映射關(guān)系,為每個交點建立其與子邊的映射關(guān)系;

步驟S104,通過迭代算法計算每個島和洞的子邊的繞數(shù)值;

步驟S105,通過所述繞數(shù)值進(jìn)行主體A和主體B的并集、差集、交集布爾運(yùn)算。

具體的,本發(fā)明所述島為封閉逆時針方向走向多邊形;所述洞為所述島內(nèi)的順順時針方向多邊形;所述交點為所述多邊形兩兩邊段的銜接點或相交點;所述子邊為兩個所述交點間的邊段。

具體的,本發(fā)明所述創(chuàng)建島和洞與自身對應(yīng)的交點的哈希映射關(guān)系,為每個交點建立其與子邊的映射關(guān)系,具體包括:

使用迭代法建立每個交點與子邊的映射關(guān)系。

具體的,本發(fā)明所述通過迭代算法計算每個島和洞的子邊的繞數(shù)值,具體包括:

定義繞數(shù)值為子邊被多邊形環(huán)繞的次數(shù);

子邊的繞數(shù)初始值為0,若子邊被某多邊形環(huán)繞,如果所述多邊形是逆時針,那么子邊的繞數(shù)值加1;如果所述多邊形是順時針,那么子邊的繞數(shù)值減1。

本發(fā)明提供的弧段多邊形二維布爾運(yùn)算方法與現(xiàn)有技術(shù)相比,能解決曲線類二維圖形布爾運(yùn)算,且精小成本低,運(yùn)算強(qiáng)大高效。

附圖說明

以下參照附圖對本發(fā)明實施例作進(jìn)一步說明,其中:

圖1是本發(fā)明的拓?fù)涠x圖;

圖2是本發(fā)明的布爾運(yùn)算圖;

圖3是本發(fā)明的流程圖;

圖4是本發(fā)明的數(shù)據(jù)計算處理流程圖;

圖5是本發(fā)明的建立映射關(guān)系流程圖;

圖6是本發(fā)明的子邊繞數(shù)值計算流程圖;

圖7是本發(fā)明的計算結(jié)果流程圖。

具體實施方式

下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明。

本發(fā)明提出了一種弧段多邊形二維布爾運(yùn)算方法,能解決曲線類二維圖形布爾運(yùn)算。

請參閱圖1,相關(guān)的拓?fù)涠x如下:

島Island:封閉逆時針方向走向多邊形;

洞Hole:島內(nèi)的順順時針方向多邊形;

交點Interaction:多邊形兩兩邊段的銜接點及兩兩邊段的相交點統(tǒng)稱交點;

子邊Edge:兩交點間的邊段。

每個二維實體必須有僅有一個島,島內(nèi)可包含多個洞。

請參閱圖2,本發(fā)可實現(xiàn)三種布爾運(yùn)算操作,并集操作(A∪B),差集操作(A-B),交集操作(A∩B)。

請參閱圖3,具體包括如下步驟:

步驟S101,依次讀入主體A和主體B的數(shù)據(jù),剔除主體A和主體B多余的共線點。

步驟S102,計算主體A和主體B的島、洞,以及每個島、洞對應(yīng)的交點和子邊的數(shù)據(jù),并計算島的最低子邊。

具體的,請參見圖4,按照上述島、洞,以及每個島、洞對應(yīng)的交點和子邊的定義方法,統(tǒng)計出主體A和主體B的各個數(shù)據(jù)。同時要剔除主體A和主體B多余的共線點。

步驟S103,創(chuàng)建島和洞與自身對應(yīng)的交點的哈希映射關(guān)系,為每個交點建立其與子邊的映射關(guān)系。

具體的,使用迭代法建立每個交點與子邊的映射關(guān)系,具體處理方式請參閱圖5。

步驟S104,通過迭代算法計算每個島和洞的子邊的繞數(shù)值。

具體的,繞數(shù)值為各子邊被多少個多邊形環(huán)繞的次數(shù)。子邊的繞數(shù)初始值為0,繞數(shù)是個矢量,假如子邊Edge被一個多邊形Poly環(huán)繞,如果Poly是逆時針,那么Edge的繞數(shù)+1;如果Poly是順時針,那么Edge的繞數(shù)-1。因為每個島的子邊都被自身環(huán)繞,所以獨(dú)立島的子邊的繞數(shù)都等于1。而如果獨(dú)立島中包含洞的話,那么其洞的子邊既被島環(huán)繞又被洞環(huán)繞,所以洞的字邊繞數(shù)為0。具體的繞數(shù)值計算流程請參閱圖6。

步驟S105,通過所述繞數(shù)值進(jìn)行主體A和主體B的并集、差集、交集布爾運(yùn)算。

具體的,本發(fā)明實現(xiàn)了三種布爾運(yùn)算操作,并集操作(A∪B),差集操作(A-B),交集操作(A∩B)。

請參閱圖7,通過所述繞數(shù)值進(jìn)行主體A和主體B的并集、差集、交集布爾運(yùn)算策略是可以各子邊繞數(shù)值很容易總結(jié)出來的,其本身是布爾運(yùn)算幾何規(guī)則轉(zhuǎn)化為繞數(shù)代數(shù)的表現(xiàn)形式。

拾取結(jié)果邊的尋路:迭代每個島、洞,從該島,洞最低邊開始尋路,只走滿足布爾運(yùn)算拾取條件的子邊,走過并設(shè)置經(jīng)過標(biāo)記防止重復(fù)遍歷,當(dāng)發(fā)現(xiàn)下一條路是走過了的,意味著拾取結(jié)果生成一個閉環(huán),接著尋找未走過得符合條件子邊,循環(huán)迭代所有的子邊都迭代過才結(jié)束。

所有得出的新的洞(順時針多邊形)需要重新尋找其歸屬島。對新的島洞做規(guī)范化。

以上所述本發(fā)明的具體實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何根據(jù)本發(fā)明的技術(shù)構(gòu)思所做出的各種其他相應(yīng)的改變與變形,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1