2013-11-27 2 views
2
  • Ускорение отслеживается (X, Y, Z) в м/с^2 относительно телефона.
  • Ориентация отслеживается в углах Эйлера относительно «земли».

Могу ли я использовать ориентацию для расчета ускорения относительно «земли»?Как нормализовать ускорение с ориентацией?

Если да, не могли бы вы объяснить, как это сделать?

Я создал plunkr: http://plnkr.co/edit/JOeqcFqagiI5z4YKNU65?p=preview (вы можете запустить его на телефоне: http://run.plnkr.co/MOVkJip5LSMklY4O/)

Предпочтительный ответ в Javascript, но я могу порт.

ответ

0

, чтобы вы начали,

угла Эйлера определяет versor (ориентация), которая идет вниз, к центру Земли, такие как:

x = cos(alpha)cos(beta); 
    y = cos(alpha)sin(beta); 
    z = sin(alpha); 
    Vector3 versor = new Vector3(x, y, z); 

(вероятно, вы должны исправить это ± альфа ± Math.PI/2, в зависимости от того, как выражается Euler, где 0 ° и так далее) Используя этот вектор, сила тяжести будет генерировать силу:

Vector3 force = 9.81 * versor; 

таким образом, если ч пр в accellerometer чтения (то есть сила) можно вычислить:

double grav = Math.sqrt(Math.pow(acc.x/versor.x, 2) + Math.pow(acc.y/versor.y) + Math.pow(acc.z/versor.z)); 

или усилие на устройство, которое не вызвано действием силы тяжести:

Vector3 not_gravitational_force = acc - (9.81 * versor); 
Смежные вопросы