我想在多邊形函數中使用VB6創建多邊形。從多個點創建多邊形的算法VB6
我有很多隨機順序的點,我想創建多邊形。
不幸的是,當開發一個多邊形時,順序很重要,因爲我得到一個鋸齒狀的多邊形,而不是一個很好的封閉多邊形。
我想知道是否有人有任何好的想法/技巧來開發一個算法,可以通過這些點,並把他們在一個適當的順序。
非常感謝!
我想在多邊形函數中使用VB6創建多邊形。從多個點創建多邊形的算法VB6
我有很多隨機順序的點,我想創建多邊形。
不幸的是,當開發一個多邊形時,順序很重要,因爲我得到一個鋸齒狀的多邊形,而不是一個很好的封閉多邊形。
我想知道是否有人有任何好的想法/技巧來開發一個算法,可以通過這些點,並把他們在一個適當的順序。
非常感謝!
我使用格雷姆掃描算法來實際進行並解決這個問題。
http://en.wikipedia.org/wiki/Graham_scan
如果按照僞代碼,要小心。
線
while ccw(points[M-1], points[M], points[i]) <= 0:
應該
while ccw(points[M-1], points[M], points[i]) >= 0:
爲了保持簡單和解決方案獨一無二的,你應該像這樣的(「禮品包裝」)的凸包算法開始:
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
應該不是太難的VB實現。如果您遇到問題,請提出一個新問題。
相關:http://stackoverflow.com/questions/828905/polygon-enclosing-a-set-of-points – Kevin