Нахождение ближайших возможных координат - PullRequest
0 голосов
/ 22 марта 2019

У меня есть координаты x, y, такие как:

enter image description here

до 100х100.

Где myPosition - золото, пункт назначения - зеленый и столкновения - красный.myPosition - это объект destinations и collisions - массив объектов:

let myPosition={x:0,y:0};
let destinations = [{x: 0, y: 5}, {x: 2, y: 0}, {x: 2, y: 2}];
let collisions = [{x: 1, y: 0},{x: 1, y: 1},{x: 1, y: 2},{x: 1, y: 3},{x: 1, y: 4},{x: 2, y: 1},{x: 2, y: 0},{x: 2, y: 1}]

С этим кодом (демонстрационная версия) Я могу найти ближайший пункт назначения, но он невообще не знаю о столкновениях.Я не могу понять, как написать алгоритм, который дополнительно проверил бы на столкновение и дал бы вывод 0,5 в вышеупомянутом scenerio.

Есть также предположение, что мы не можем двигаться по диагонали.

Я нашел этот SO-ответ , который, кажется, дает ответ на мой вопрос, но я не могу заставить его работать с моими входными массивами.

1 Ответ

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

Я использовал pathFinding.js библиотека, и поиск очень прост:

currentPath = finder.findPath(heroCoords.x, 
                              heroCoords.y, 
                              monstersCoords[i].x, 
                              monstersCoords[i].y,
                              currentGrid);
...