Скорость это просто ускорение * время.Т.е. вы можете использовать формулу
v = u + ускорение * время.
Как стартер, на который вы могли бы смотреть, предполагая, что начальная скорость равна 0, «u» можно игнорировать, чтобы получить ускорение *время.
, если вы хотите расстояние, просто используйте расстояние = начальная скорость * время + 0,5 * ускорение * время * время.
или, что еще лучше, используйте расчет без учета и продолжайте добавлять свои векторы скорости так часто, какВы получаете обновления от акселерометров.
Чтобы получить ускорение как скаляр, вы можете сделать a = sqrt (x * x + y * y + z * z).Вы хотите удалить гравитацию из этого раньше, хотя!Также это даст вам только расстояние по прямой линии, вы можете предпочесть измерять скорость в x, y, z независимо и использовать векторный анализ для измерения траектории для более точного считывания.Тем не менее, имейте в виду, что вам может потребоваться учитывать любые повороты, чтобы быть сверхточным, и эта функция доступна только на iPhone4s.Это может быть сложно, и вы, вероятно, захотите использовать некоторые математические математические схемы, чтобы ориентировать «пространство», в котором находится телефон.
Вам также потребуется выполнить фильтр низких частот на акселерометре, чтобы избавиться от'встряхивает', и именно здесь закрадывается значительный запас ошибок, и поэтому я ожидаю, что все правители в appstore потратили много времени на его улучшение.
для создания фильтра, очень простой фильтр FilterValue =((lastValue * n) + accelerationValue) / (n + 1) где большее значение n дает более плавный результат, но менее отзывчивый.