Я работаю над реализацией A* JPS (точка поиска перехода), и хотя я понял ее основы, кажется, что я все еще упускаю момент.
Вот попытка (см. прикрепленное изображение), пытающаяся найти путь между начальным узлом (обозначенным S) и целевым узлом (отмечен G). Ячейки с черной шахматной доской — это исследуемые узлы, а белые со стрелкой — точки перехода (с соответствующим направлением). Все ячейки имеют стоимость перемещения 1, кроме синих, которые являются препятствиями.
Однако, как вы можете видеть, некоторые области не исследованы, и поэтому он не может найти целевой узел, хотя путь существует. Кажется, это вызвано тем, что он не исследует по диагонали некоторые точки прыжка, но, насколько я понял, мы должны учитывать только текущее направление (т.е. следовать стрелкам на картинке).
Итак, мой вопрос: что не так в этой попытке? Я пропустил точки перехода или неправильно понял, как это работает?
Прикрепленное изображение: попытка A* JPS (пока не удается встроить изображение: П)
Спасибо за ваши ответы.
Линейные (как по вертикали, так и по горизонтали, но не по диагонали) принудительные соседи отсутствовали. ср. рисунок 2 поста BlueRaja