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

问题描述 投票:0回答:1

我正在使用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

这是上面板的可视化:

alt

(但是x和y是另一种方式,我在图像中的错误)

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


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

javascript path-finding
1个回答
0
投票

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

请注意,网格将在每个路径查找中进行修改,之后将无法使用。如果要多次使用单个网格,请在调用findPath之前为其创建克隆。

所以我必须创建网格克隆。后来我会在循环中使用finder,因此我需要在循环中重新分配网格克隆:

gridBackup = grid.clone();
© www.soinside.com 2019 - 2024. All rights reserved.