我有和這裏相同的問題:how to order vertices in a simple, non-convex polygon 但我沒有可用的解決方案。如何在非凸多邊形中排序頂點(如何找到許多解決方案之一)
我有點的座標,需要找到一些多邊形。對於一個點列表有更多的解決方案無關緊要。我需要一些算法來找到其中的一個。哪一個並不重要。我真的不知道如何解決這個問題。
(我已經存儲在陣列座標,我想使用某種算法在Javascript)
非常感謝。
我有和這裏相同的問題:how to order vertices in a simple, non-convex polygon 但我沒有可用的解決方案。如何在非凸多邊形中排序頂點(如何找到許多解決方案之一)
我有點的座標,需要找到一些多邊形。對於一個點列表有更多的解決方案無關緊要。我需要一些算法來找到其中的一個。哪一個並不重要。我真的不知道如何解決這個問題。
(我已經存儲在陣列座標,我想使用某種算法在Javascript)
非常感謝。
首先,找到包含所有頂點的邊界框的中心。我們將這個點稱爲C.
根據每個點相對於C的角度對頂點列表進行排序。您可以使用atan2
(point.y - C.y, point.x - C.x)
來查找角度。如果兩個或兩個以上的頂點具有相同的角度,則靠近C的一個頂點應該首先出現。
然後,按照出現在列表中的順序繪製點。你將會得到一個不相交併且可能是非凸的星爆圖案。例如:
或許,如果你告訴我們什麼是錯的解決方案,這個問題你是指這使得它們不適合您的使用,我們可以提供精確的和有益的幫助。如果你不能,或者不能告訴我們,我們可能會得出結論,即你對問題的理解甚至不甚瞭解,並因此而將你的問題排除在主題之外。 –
你僅限於簡單的多邊形嗎?否則,您可以根據需要連接頂點。他們將永遠形成一個多邊形。 –
有一個O(n^2)算法:對於每個點的排列,構造一個多邊形並查看它是否是一個簡單的非凸多邊形。當然,如果你有很多積分,這需要一些時間。你有幾點? –