pathFinding.js 库 - 只有第一个路径是正确的

pathFinding.js library - only first path is correct

我正在使用 PathFinding.js package。我的代码是:

var grid = new PF.Grid(6, 6);
grid.setWalkableAt(0, 1, false);
grid.setWalkableAt(1, 1, false);
grid.setWalkableAt(2, 1, false);
grid.setWalkableAt(3, 1, false);
grid.setWalkableAt(4, 1, false);
grid.setWalkableAt(1, 2, false);
grid.setWalkableAt(0, 3, false);
grid.setWalkableAt(1, 3, false);
var finder = new PF.AStarFinder();
var path1 = finder.findPath(0, 0, 2, 2, grid);
var path2 = finder.findPath(0, 0, 0, 2, grid);
var path3 = finder.findPath(0, 0, 5, 0, grid);
console.log(path1.length)
console.log(path2.length)
console.log(path3.length)

codepen demo

这是上面的可视化:

(但是x和y是相反的,我在图片中的错误)

我正在检查所有 3 个绿点的路径长度,以便稍后检查哪个最短。不幸的是,只有第一条路径的长度正确。为什么?我没有使用正确的包裹吗?我从这个问题的第一行开始关注 link 的文档。


我不认为这是一个包问题,因为它被广泛使用并且在 GH 有超过 6k 颗星。

我没有注意到文档中的这句话:

Be aware that grid will be modified in each path-finding, and will not be usable afterwards. If you want to use a single grid multiple times, create a clone for it before calling findPath.

所以我必须创建网格克隆。稍后我将在循环中使用 finder 所以在其中我需要在循环中每次重新分配网格克隆:

gridBackup = grid.clone();