我們有一個多邊形,從最底部開始以逆時針方向從頂點列表給出(points
)。給出了相同多邊形的一些對角線(它們中沒有一個相交),作爲一組點(diagonals
)。查找所有給定幾條對角線的多邊形
我們必須找到多邊形切入的所有面(作爲每個面的頂點列表)。
輸出將包括以下的面:
face1 = [(-68,-36), (-53,-40), (-39,44)]
face2 = [(-53,-40), (-21,37), (-12, 6), (-5,49)]
...
正如你可能已經注意到,對角線切割多邊形成monotone polygons相對於x軸。如果這可能有幫助。
我已經在這個問題上好幾個小時了。我似乎無法找到與之相關的任何問題。任何幫助將不勝感激,謝謝。
編輯:問題可以簡化爲查找圖中的所有簡單循環(即無弦循環)。我發現這些類似的問題:
Finding polygons within an undirected Graph
Find all chordless cycles in an undirected graph
然而,在第二個接受的解決方案似乎並沒有工作。
這有幫助嗎? http://stackoverflow.com/a/16558622/4014959 –
@ PM2Ring,計算所有周期在這裏沒有幫助,因爲一個面可以是許多週期的一部分。多邊形本身就是一個循環。 – Rahul
公平點。我想你可以找到所有的週期,然後減少到基本週期。然而,你並沒有一個無向圖,你有一個直接的圖,這使得任務變得更容易。 –