библиотека pathFinding.js - правильный только первый путь - PullRequest
0 голосов
/ 23 марта 2019

Я использую PathFinding.js пакет .Мой код:

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

, и это визуализация вышеупомянутой платы:

alt

(но x и y - наоборот, моя ошибка на картинке)

Я проверяю длину пути всех 3 зеленых точек, чтобы проверить, какая из них самая короткая позже.К сожалению, только первый путь имеет правильную длину.Зачем?я не использую правильный пакет?Я следовал за документами по ссылке из 1-й строки этого вопроса.


Не думаю, что это проблема пакета, потому что он широко используется и имеет более 6 тысяч звезд в GH.

1 Ответ

0 голосов
/ 24 марта 2019

Я не заметил это предложение в документах:

Помните, что сетка будет изменяться при каждом поиске пути и впоследствии не будет использоваться. Если вы хотите использовать одну сетку несколько раз, создайте для нее клон, прежде чем вызывать findPath.

Так что я должен создать клон сетки. Позже я буду использовать finder в цикле, поэтому в нем мне нужно каждый раз переназначать клон сетки:

gridBackup = grid.clone();
...