2015-09-04 47 views
1

我正在切割網格。那我究竟想實現的是:如何獲得兩個平面網格的公共部分?

輸入 - 兩個網格(當然程序產生的)

輸出 - 3個網格(或更多,取決於給定網格)

A - 這是一個米沙網狀。減去B,

乙 - 這是目A和B的公共部分,

ç - 這是網狀乙目。減去A.

enter image description here

我使用三角函數,給定的頂點集爲我創建三角形。我所要做的就是給他這些頂點,這裏就是問題所在。有沒有什麼算法可以幫助我做到這一點?當你看到這張照片的時候,你的想法可能是你想到的嗎?我在Unity(C#)中工作,所以與Unity Tools相關的任何東西都是有用的。謝謝 !

編輯:

我使用這條新聞庫:http://sourceforge.net/projects/polyclipping/,一切工作正常,直到這種情況下: enter image description here

我想獲得的區別AB和它應該看起來像從圖2中的一個),不幸的是,輸出是網格A和網格B,如圖1)所示。

我做什麼:

Clipper c = new Clipper(); 
c.AddPath(here goes the vertices of mesh A, polyType.Subject, true); 
c.AddPath(here goes the vertices of mesh B, polyType.Clip, true); 
c.Execute(ClipType.ctDIfference, a list of lists for my output, PolyFillType.NonZero, PolyFillType.NonZero); 

我已經試圖改變PolyFillTypes但什麼也沒有改變。在這裏,我是,要求你的建議:)

+0

是否有可能由多個單獨的形狀組成B,或者是否保證此布爾運算中的兩個相交形狀是凸的? – Serlite

+0

你有試過什麼嗎?發佈一些你的代碼,以便我們可以幫助你。 – maksymiuk

+0

我剛開始這個。在我編寫任何會影響我未來工作的事情之前,我會考慮一下。我聽說過有關3D網格的布爾操作,但它不適用於2D網格。 – Power

回答

1

這是足以處理網格邊界。有了這個,你有兩個多邊形和交叉點的問題。一些外部庫可用於它,如GPC

找到相交點後,只需執行這三個多邊形的三角測量。

相關問題