如何用方向标准化加速度?

时间:2013-11-27 17:53:40

标签: javascript math orientation physics acceleration

  • 相对于手机,以m / s ^ 2跟踪加速度(X,Y,Z)。
  • 以欧拉角相对于“地球”跟踪方向。

我可以使用方向来计算相对于“地球”的加速度吗?

如果是的话,你能解释一下怎么做吗?

我创建了一个plunkr:http://plnkr.co/edit/JOeqcFqagiI5z4YKNU65?p=preview (您可以在手机上运行它:http://run.plnkr.co/MOVkJip5LSMklY4O/

首选答案是Javascript,但我可以移植。

1 个答案:

答案 0 :(得分:0)

让你入门,

欧拉角定义朝向地球中心的向下(方向),例如:

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

(可能你必须修复这个±alpha±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);