多邊形障礙物尋路算法

根據兩點之間直線最短。可以知道最短路徑的拐點(拐彎的地方)一定是凸多邊形障礙物的頂點。

1.那麼我把所有障礙物的頂點,起點,終點 互相連接 得到的線段。就是可走路徑。這裏排除穿過障礙物的線段。
在這裏插入圖片描述
如上圖,紅色點爲起點,藍色點爲終點,黑色凸多邊形爲障礙物。那麼所有可以走的路徑爲 12,13,14,7,8,9,10,1,0,4,15,16… 等等 這些有限線段是所有的可走路徑。

  1. 找到可走路徑之後, 剩下的事跟A*算法一致. 開放列表中存放將要遍歷的頂點,關閉列表中存放計算過的頂點,F值 = 起點到當前點的線段總長 + 該點到終點的直線距離。

如果不懂A* 算法可以看我的上一篇文章步驟都很清楚。
https://blog.csdn.net/qq_27461747/article/details/106690890

附上很久之前寫的尋路。
https://tt1253.oss-cn-shenzhen.aliyuncs.com/Code/FindWay.rar

由於以前未完全理解透徹A* 導致這份源碼A* 有些差異。
比如我並未計算H值(點到終點的直線距離) 我直接用G值進行排序。
這樣與A* 不同的是,A*只要下一個計算的是終點,那麼就意味着已經找到最短路徑。
而直接用G值進行排序,就還要往下繼續尋找。直到找到終點總長度G值最短的那個路徑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章