- 相对于手机以 m/s^2 为单位跟踪加速度 (X,Y,Z)。
- 方向以相对于“地球”的欧拉角跟踪。
我可以使用方向来计算相对于“地球”的加速度吗?
如果是,你能解释一下怎么做吗?
我创建了一个 plunkr:http ://plnkr.co/edit/JOeqcFqagiI5z4YKNU65?p=preview (您可以在手机上运行它:http ://run.plnkr.co/MOVkJip5LSMklY4O/ )
首选答案是 Javascript,但我可以移植。
让你开始,
欧拉角定义了一个向下,朝向地球中心的versor(方向),例如:
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);