2012-10-08 236 views
4

我需要計算多邊形的三角形。多邊形可以包含孔。並要求一個有效的方法。所以我想我需要約束Delaunay三角剖分。多邊形三角形c#

我必須在c#中做到這一點,只需要計算不繪製或其他東西。

poly2tri似乎不錯,但IDK它不是爲我工作:S

無論如何,我需要幫助。我如何計算三角形? (如果你的最好的報價爲poly2tri,我可以解釋一下我的問題)

+0

你用poly2tri收到了什麼問題? –

+0

當我適應它到我的代碼我收到一個空參數問題,但我期待相同的結果。看看js,因爲它更清晰(全部在一個文件中)掃描。在CreateAdvancingFront()中分配我們的起始點以指定前置變量。前面的變量有兩個節點。頭,尾巴。因爲你看到頭沒有prev價值。讓我們繼續sweep.SweepPoints調用sweep.PointEvent。在開始時你會看到「var node = tcx.LocateNode(point);」 SweepContext將調用front.LocateNode,正如你所看到的,search_node是頭部。頭部X值最大。所以「if(x user1708062

+0

頭沒有prev,所以null將返回。所以我們會得到錯誤。 – user1708062

回答

1

我想我的github:gist簡單的解決方案(但它是相當古老,可能不是最優的)。

+0

謝謝,我將檢查它,如果不能修復poly2tri。順便說一句我想我發現了一些算法(poly2tri)。我改變了一些代碼行似乎現在工作。我會繼續我的測試。 Poly2tri算法在js,c,C++,c#和java版本的InitTriangulation()上有錯誤,也可能有其他錯誤。我會繼續測試我的修理。 – user1708062

2

德勞內不是爲此設計的,而是使用Ear Clipping來代替。

+0

德勞內不是爲此而設計的。但約束Delaunay爲此而設計。順便說一句耳廓似乎有點慢,在一些多邊形它沒有得到任何結果。 – user1708062

+0

您還可以通過將2D頂點投影到3D拋物面上,使用QuickHull算法使用Delauney三角剖分。一旦你進行了三角測量,放下其中心點位於多邊形軌跡之外或者在你的洞多邊形軌跡內的面。這可能比耳廓修剪更快。 – kneo