在圖像地圖上(500 x 500)我只有零和一個。大多數情況下,所有東西都是一個,但是我有幾個有零點的集羣(代表障礙物,所以玩家不能跨越山丘)。障礙物可以具有任意形狀,因此需要簡化,我決定找到一種方法,用一個不超過8個頂點的多邊形圍繞每個障礙物(周圍多邊形可以有一些內部的1s,但障礙物的所有0必須在裏面該多邊形)。對於我需要生成一個多邊形的每個障礙物。我可以連接障礙物外部邊界上的每個0,但它會產生n(n >> 8)個頂點的多邊形。我正在尋找任何建議如何做到這一點或一些類似算法的名稱。地圖上多邊形環繞零點不超過8個頂點
回答
您應該最初爲您的羣集構建凸包。 在此之後,你可以使用以下策略減少頂點量至8:
您找到任何對連接點的交叉點。 在提供的圖像點8和9被一個10代替,但增加多邊形尺寸。
注意:此方法不保證此多邊形不會與另一個「零」羣集重疊。 有時也許有8個頂點的多邊形無法覆蓋沒有其他簇相交的簇。
一個好的開始,但是這個假設障礙本身大多是凸起的。例如,一個凸出的邊界多邊形將防止進入U形山脈的山谷。 –
@Tolja感謝您的回答,但如何找到多邊形,我的障礙並不總是凸起(我編輯的問題來澄清) –
那麼,什麼?即使障礙物不是凸起的,多邊形也可以是凸起的。你的任務說不要反對它。 – Gangnus
您可以選擇障礙物S,SW,W,NW,N,NE,E和SE的最遠點,並創建一個按垂直方向穿過這些點的線段設置的八邊形。即適當的:W-E,NW-SE等等。我認爲,這將是最快和最簡單的算法,與@Толя的解決方案相反,它永遠不會給你額外的長星形射線頂點。
- 1. 刪除多邊形的一個頂點谷歌地圖API v3
- 2. 多邊形頂點從一組點
- 3. Translate CGAL多邊形沒有通過頂點循環
- 4. 多邊形邊上的點
- 5. 圍繞點繪製多邊形x米
- 6. 多邊形圍繞中心點繪製
- 7. 由頂點數組多邊形獲取多邊形的邊
- 8. 谷歌地圖v3 - 刪除多邊形的頂點
- 9. 谷歌地圖 - 多邊形編輯 - 標記頂點
- 10. 如何在Java中圍繞一個點旋轉多邊形/點
- 11. WebGL:超過頂點邊界的glDrawElements
- 12. 點擊谷歌地圖多邊形內
- 13. 谷歌地圖安卓點多邊形
- 14. Geofencing功能 - 放置地圖點,多邊形,多邊形內的標識點
- 15. 如何刪除多邊形的頂點(節點)與孔(谷歌地圖V3)
- 16. 在動態多邊形改變多邊形頂點在cocos2d
- 17. 從頂點獲取凸多邊形
- 18. Google Maps V3:多邊形頂點
- 19. 最小化多邊形頂點
- 20. Triangularizing任意4頂點多邊形
- 21. 如何創建一個給定點頂點的多邊形?
- 22. 確定一個點是否在多邊形的頂點
- 23. 不能超過500個頂點
- 24. 地圖上的多個多邊形
- 25. Div環繞圖像的邊框超過了過去的圖像
- 26. 獲取多個多邊形谷歌地圖API點
- 27. 多個多邊形地圖
- 28. 谷歌地圖api多邊形圓形城市地點
- 29. 如何用Java圍繞某個點旋轉多邊形?
- 30. 想要在bing地圖上添加多邊形點擊事件
你打算如何使用多邊形? –
@GarethRees我需要頂點來創造圖形和路徑發現 –
1.我編輯了我能解密的東西。但句子「我可以連接每個外部0,但它會產生具有n(n >> 8)個頂點的多邊形」是絕對不可讀的。爲什麼你認爲這是可能**爲每個形狀和障礙物的位置創建這樣的多邊形?我只會同意,如果poligons可以相交。 – Gangnus