【问题标题】:How to normalize acceleration with orientation?如何通过方向标准化加速度?
【发布时间】:2013-12-13 12:26:12
【问题描述】:
  • 相对于手机以 m/s^2 为单位跟踪加速度 (X,Y,Z)。
  • 以相对于“地球”的欧拉角跟踪方向。

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

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

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

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

【问题讨论】:

    标签: javascript math orientation physics acceleration


    【解决方案1】:

    让您开始,

    欧拉角定义了一个向下,朝向地球中心的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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2021-11-06
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      相关资源
      最近更新 更多