簡體   English   中英

Python Py2D - 多邊形凸分解 (Polygon.convex_decompose()) 添加額外區域而不是將凹面分解為凸面

[英]Python Py2D - Polygon convex decomposition (Polygon.convex_decompose()) adds extra area instead of decomposing a concave face into convex faves

我正在嘗試將一些凹面分解為覆蓋與原始凹面相同區域的凸面。 我在網上找到了一個 package 應該能夠做到這一點( http://sseemayer.github.io/Py2D/documentation/features/convex_decompose.html )但是我沒有讓它工作。

我已經嘗試使用以下代碼行: from py2d.Math import Polygon, Vector

P = 多邊形 [(2.00, 3.00), (3.00, 3.00), (3.00, 2.00), (4.00, 2.00), (4.00, 4.00), (2.00, 4.00), (2.00, 3.00)] P = 多邊形。凸分解(P)

P 變為: [Polygon [(3.00, 2.00), (3.00, 3.00), (2.00, 3.00)], Polygon [(2.00, 3.00), (2.00, 4.00), (4.00, 4.00), (4.00, 2.00 ), (3.00, 2.00), (2.00, 3.00)]]

這是原始面的面積加上一個額外的三角形。 我本來希望有兩個(或更多)凸多邊形覆蓋與原始多邊形相同的區域(見圖片)。

原始多邊形

原始多邊形結果多邊形的面積
“分解”多邊形的組合面積預期的多邊形

謝謝參觀。 我很想聽聽您的解決方案。

我開始工作了:問題是我定義了一個封閉的多邊形:

P = Polygon [(2.00, 3.00), (3.00, 3.00), (3.00, 2.00), (4.00, 2.00), (4.00, 4.00), (2.00, 4.00), (2.00, 3.00)]

但是Py2D假定最后給定的點與第一個點相連。 因此,通過將代碼更改為:

P = Polygon [(2.00, 3.00), (3.00, 3.00), (3.00, 2.00), (4.00, 2.00), (4.00, 4.00), (2.00, 4.00)] 

P = Polygon.convex_decompose(P)

我得到了預期的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM