Kaynağa Gözat

添加 Meadow 的路径优化

nicetry12138 1 yıl önce
ebeveyn
işleme
7d1eb25938
2 değiştirilmiş dosya ile 18 ekleme ve 0 silme
  1. BIN
      Navigation/Image/011.png
  2. 18 0
      Navigation/README.md

BIN
Navigation/Image/011.png


+ 18 - 0
Navigation/README.md

@@ -196,3 +196,21 @@ bool isCross(Vector2D a, Vector2D b, Vector2D c, Vector2D d) {
 
 `Recast Navigation` 是一种基于耳切法的划分算法,它的基本思想是从一个凸多边形的任意一个顶点开始,判断该顶点是否是一个耳朵,即该顶点的内角小于 180°,并且以该顶点为顶点的三角形不包含其他顶点。如果是耳朵,那么就将该顶点和相邻的两个顶点组成一个三角形,从多边形中切除该耳朵,否则就跳过该顶点,继续检查下一个顶点。重复上述过程,直到多边形被切割成若干个三角形为止。然后对每个三角形进行合并,使其满足最大顶点数的限制,得到最终的凸多边形集合。这种算法的优点是划分后的多边形的角度较大,有利于寻路效率,缺点是划分后的多边形数量较多,占用空间较大
 
+#### 寻路优化
+
+`Meadow Mapping` 采用 A* 算法进行寻路
+
+![](Image/011.png)
+
+很明显上面的路径并不是真实意义上的最短路径,以 DE 线段上的路径点为例,如果路径点在D上明显可以缩短路径
+
+所以 `Meadow Mapping` 提出了一个路径改善算法,采用局部贪心的策略:遍历每个在边检中点的路径节点,考虑三种方案
+
+1. 保持路径在边界中点不变
+2. 选择边界左边节点
+3. 选择边界右边节点
+
+针对以上三种方案,选择距离最短的路径
+
+> `Recast Navigation` 在路径优化时使用 `String pulling` 漏斗算法
+