2015-09-16 42 views
1

我開始使用剪切庫從本網站:http://sourceforge.net/projects/polyclipping/剪切庫差異問題

我在Unity(C#)中工作。

一切都很好,工會,十字路口,區別...是的,區別,有一個案例,我不知道如果我做錯了什麼或算法無法處理的權利。 enter image description here

我想獲得差異A-B,它應該看起來像圖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但什麼也沒有改變。在這裏,我是,要求你的建議:)

編輯: 我想得到的(如圖中的「預期結果」)是一個有洞的網格。 我實際上得到的是2元素列表List,它與我給出的輸入完全相同,所以當我從這些頂點創建網格時,沒有一個網格帶有一個孔,而是一個網格覆蓋另一個網格並與Z-Fighting相交。應該有一些功能,我可以用一個洞創建Mesh,但我無法找到它。正如我在GUIDEMO中看到的這個庫的C#版本的工作原理,我看到了地圖(可能是澳大利亞)的中間有一個切孔。輸入:頂點A(作爲主題):(0,0),(0,10),(10,10),(10,0)。 (2,8),(6,8),(6,2),(2,2)。 輸出完全相同: List<List<IntPoint>>即2元素,幷包含這兩個列表您可以在上面看到。

+0

如果您顯示結果**座標**,您將從裁剪操作中獲得,然後獲得您期望的座標,這將有所幫助。 –

+0

我編輯了我的文章,以便更清楚地看到這一點。感謝您的時間:) – Power

+0

我有這個相同的問題(團結3d c#),你有沒有找到解決方案? clipperlib是實現「C」頂點的正確工具嗎? – Dodgson86

回答

1

裁剪解決方案,我得到的是:

(((10, 10),(0, 10),(0, 0),(10, 0)), ((2, 2),(2, 8),(6, 8),(6, 2))) 

注2條路徑的不同取向。這表明內部路徑是具有非零或偶數填充規則的外部路徑(多邊形)的孔。

+0

這是正確的,現在的問題是如何獲得該洞?我是這個圖書館的新手(可能需要兩個小時的時間來研究這個課程),你能否將我引向我急切尋找的解決方案? – Power

+0

你在嗎? :)真的需要這個 – Power

+0

這裏同樣的問題! 您是否找到解決方案?我也被困在「我如何得到洞」的一部分,我明白解決方案給出了2個多邊形的多邊形,一個代表輪廓,另一個是洞,庫可以只給出一個帶孔的網格? – Dodgson86