Редактировать : Кажется, я неправильно понял проблему. См. Всезнающий ответ, который является более подходящим.
Если вы возьмете длину вектора ускорения, это не даст вам полного пройденного расстояния. Это будет немного сложнее, чем это:
- Установите расстояние (скаляр) и скорость (вектор) на 0, чтобы начать с.
- В каждый временной интервал добавляйте текущий вектор ускорения к вектору скорости, чтобы вычислить обновленный вектор скорости.
- На каждом временном интервале добавляйте величину вектора скорости к расстоянию, чтобы накапливать пройденное расстояние.
- Если эти интервалы не являются интервалами единица в любой системе координат времени, которую вы используете, то масштабируйте векторы ускорения и скорости соответствующим образом. Например, если ускорение выражено в м / с ^ 2, а интервал выборки составляет 100 мс, то масштабируйте вектор ускорения на 0,1, прежде чем добавить его к вектору скорости. Аналогично при накоплении скорости на расстоянии.
Например, предположим, что вы немного ускоряетесь, а затем движетесь с постоянной скоростью, вектор ускорения будет равен 0. Однако, поскольку некоторая скорость возросла, пройденное расстояние должно постоянно увеличиваться.
Если вы хотите отслеживать фактическое положение, то сохраните его как вектор и продолжайте добавлять к нему текущий вектор скорости на каждом интервале времени.
Это инерциальная навигация по счету, и ошибки со временем начнут накапливаться (в векторе скорости и, следовательно, на расстоянии). Вам нужно провести некоторые эксперименты, чтобы увидеть, какую точность вы можете надеяться получить.