2013-03-21 2 views
1

Рассчитать результирующее ускорение от x и y. Рассчитать угол результирующего ускорения.Объединить ускорения X и Y для расчета результирующего угла и ускорения

+0

Откуда вы получили ускорение x и y? GPS не имеет x y, он имеет lat и lon whoich не связан с декартовой x, y; Как правило, масштабирование обеих осей различается в cos cos (lat), что в Европе равно 0,6. – AlexWien

+0

ОК, и что вы делаете с осью оси акселерометра, которая отсутствует в вашем вопросе. – AlexWien

+0

Вы хотите только компонент касательной (скорость изменения по маршруту) или центростремительный компонент ускорения? – heltonbiker

ответ

1

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

length = sqrt(x * x + y * y) 
angle = atan2(y, x) //this might be changed depending on your angle definitions 
+0

Если 'x' и' y' являются ортогональными частями ускорения, тогда 'length' является общим ускорением. –

+0

@ user2052706: Ускорение - это вектор. Вектор - это длина (величина) и направление. Операторы в этом ответе вычисляют длину вектора и направление вектора. Угол находится в радианах против часовой стрелки от положительного направления x (против часовой стрелки от положительного направления x в направлении положительного y). –

+0

Но обратите внимание, что угол не является географическим заголовком, который использует 0 ° как Северный и по часовой стрелке; эта формула дает математическое направление, которое использует 0 ° как восточное и против часовой стрелки. – AlexWien

0

Вам не нужно хну ускорение, просто вычислить ускорение как изменение скорости в единицу времени.
Для Gps я рекомендую использовать атрибут скорости местоположения, который намного точнее, чем позиции.
Если у вас нет скорости, то вычисляйте скорость как расстояние за раз.

Расстояние: используйте любую формулу расстояния, которую вы найдете для расчета расстояния между двумя координатами lat/lon.

Если вы хотите использовать значение, которые вы получили от датчика ускорения, то вы должны использовать вектор ускорения 3 оси:
Смотрите также how-do-i-get-the-total-acceleration-from-3-axes

Еще одна Типп, чтобы проверить, если реализация правдоподобна:
Sum все ваши (один размер) ускорения, они Шоуд быть рядом с 0.

+0

Какие-либо причины для downvote? Я выполнил это и его работу идеально, поэтому, если кто-то утверждает, что мой ответ неверен, прокомментируйте почему! – AlexWien

+0

@ mr0matt его прекрасная идея использовать датчик ускорения, но только если вы можете удалить вектор гравитации.Но поскольку так просто использовать GPS для определения ускорения, и вам не нужно удалять гравитацию или откалибровать, это прекрасно, чтобы сравнить результаты! Далее он депонирует за то, что вам нужно! Какую акценту вы хотите измерить? Это телефон или автомобиль? Если вы столкнетесь с грубой дорогой, вы можете получить высокий пульсирующий ускорение. Вы должны определить фильтр, чтобы получить желаемую частоту ускорения. Чтобы измерить, остановлен ли автомобиль/телефон или нет, – AlexWien

+0

датчик всасывания. Для ускорения vehilce подход GPS дает правильные результаты в течение 3 часов работы. Для датчика acc, расскажите мне, сколько времени вам нужно. – AlexWien

0

Если вы хотите направления ускорения по отношению к мировой системе координат, то вы должны зарегистрироваться как TYPE_ACCELEROMETER и TYPE_MAGNETIC_FIELD. Используя результаты вы называете getRotationMatrix, а затем умножить значения акселерометра этой матрицы даст вам координаты ускорения в перспективе в мировой системе координат. Первыми двумя координатами будут x и y координаты.
На самом деле вы лучше также зарегистрировать TYPE_GRAVITY и передать результаты вместе с магнитным полем результаты в getRotationMatrix, так что вам не придется фильтровать акселерометр значения самостоятельно.

Смежные вопросы