Это пример того, что я хочу сделать с помощью кода. Я знаю, что вы можете использовать поиск точек перехода, чтобы без проблем добраться от зеленого узла к красному узлу или даже к A *. Но как вы рассчитываете это с перекосами.
На изображении вы можете видеть, что требуется всего 8 ходов, чтобы пройти от зеленого узла к красному узлу при выборе синего пути. Синий путь мгновенно перемещает вашу позицию от одного фиолетового узла к следующему. Пространство посередине, которое стоит 2 хода, является точкой между двумя зонами деформации, в которую вы должны перейти, чтобы добраться.
Очевидно, что быстрее идти по синему пути, поскольку вам нужно всего лишь приблизиться на половину (примерно) до желтого пути, но как мне сделать это программно?
Чтобы решить эту проблему, давайте предположим, что вокруг графика имеется множество фиолетовых «перекосов», которые вы можете использовать, И мы точно знаем, где будут искривляться каждая фиолетовая точка и где они находятся на графике.
Некоторые фиолетовые перекосы являются двунаправленными, а некоторые нет, то есть иногда вы можете входить в варп только с одной стороны, но не возвращаться после деформации.
Я подумал о решении и только пришел к выводу, что смогу вычислить проблему, проверив расстояние до каждой точки деформации (минус однонаправленные точки), а также разницу между этими точками и точками, близкими к ним. ,
Программа должна была бы каким-то образом выяснить, что выгоднее сделать второй перекос, а не идти с первого прыжка. Таким образом, вместо перемещения 6 точек, затем деформации, а затем перемещения оставшихся 8 шагов пешком (что также быстрее, чем вообще не использовать деформации), потребуется 6 ходов, а затем два шага ко второй деформации.
РЕДАКТИРОВАТЬ: я понял, что синий путь на самом деле займет 12 ходов, а не 8, но вопрос остается тем же.