Как определить, когда нужно ускоряться и замедляться, чтобы достичь заданного пункта назначения? - PullRequest
0 голосов
/ 23 февраля 2020

Я создаю компьютерную игру, в которой есть управляемый компьютером автомобиль, который должен ехать по прямой (таким образом, эффективно решая эту задачу одномерно) и достигать цели, которая останавливается с нулевой скоростью. Этот автомобиль «думает» каждую секунду и решает, следует ли (и на сколько) ускоряться или замедляться.

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

Вот переменные, которые автомобиль должен учитывать:
- RemainingDistance = Наше текущее оставшееся расстояние до пункта назначения в метрах.
- Velocity = Наша текущая скорость в направлении пункта назначения в метрах / секунду.
- MaxVelocity = Максимальная скорость, которую может развить автомобиль.
- Acceleration = Изменение скорости в секунду. Автомобиль может менять свое ускорение каждую секунду на любое число в диапазоне [0, Ускорение].
- Deceleration = Изменение скорости в секунду. Автомобиль может менять свое замедление каждую секунду на любое число в диапазоне [0, замедление].

Итак, чтобы быть как можно более понятным, вот математика, которая запускается каждую секунду для обновления симуляции автомобиля:

Acceleration = некоторое количество между [Deceleration, Acceleration] по выбору компьютера

Velocity = Velocity + Acceleration

RemainingDistance = RemainingDistance - Velocity

Итак, мой вопрос: Каждый раз, когда автомобиль «думает», какую формулу (ы) он должен использовать, чтобы определить идеальное значение Acceleration, чтобы достичь пункта назначения (с конечной скоростью 0) как можно быстрее?

(В случае, если начальная скорость автомобиля слишком высока и она не может замедляться достаточно быстро, чтобы достигнуть скорости 0 к тому моменту, когда она достигает пункта назначения, она должна остановиться как можно ближе к месту назначения.)

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

...