Javascript 如何使用方向规范化加速度? 相对于手机,加速度以m/s^2为单位进行跟踪(X、Y、Z) 方向以相对于“地球”的欧拉角跟踪

Javascript 如何使用方向规范化加速度? 相对于手机,加速度以m/s^2为单位进行跟踪(X、Y、Z) 方向以相对于“地球”的欧拉角跟踪,javascript,math,orientation,physics,acceleration,Javascript,Math,Orientation,Physics,Acceleration,我可以用方向来计算相对于“地球”的加速度吗 如果是,你能解释一下怎么做吗 我已经创建了一个plunkr: (您可以在手机上运行:) 首选答案是Javascript,但我可以移植。为了让您开始 欧拉角定义向下朝向地球中心的方向,例如: x = cos(alpha)cos(beta); y = cos(alpha)sin(beta); z = sin(alpha); Vector3 versor = new Vector3(x, y, z); (可能您必须修正此±alpha

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

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

我已经创建了一个plunkr: (您可以在手机上运行:)

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

为了让您开始

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

   x = cos(alpha)cos(beta);
   y = cos(alpha)sin(beta);
   z = sin(alpha);
   Vector3 versor = new Vector3(x, y, z);
(可能您必须修正此±alpha±Math.PI/2,具体取决于欧拉的表示方式,其中为0°,以此类推) 使用此矢量,重力将产生以下力:

Vector3 force = 9.81 * versor;
因此,如果您有加速度计读数(即力),您可以计算:

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);