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