在 android 中将线性加速度转换为世界坐标系

convert linear acceleration into world frames in android

我有方向传感器给我世界坐标中的方向角(或四元数)。现在我从 TYPE_LINEAR_ACCELERATION 获得线性加速度,它给出了 phone 坐标中的加速度。现在的问题是如何将加速度从phone的坐标转换为世界坐标? 谢谢

首先你需要旋转矩阵而不是方向值

如果您有坐标角,您可以将它们转换为旋转矩阵

Rotation Matrix from Euler Angles

得到旋转矩阵后乘以地球坐标系中的加速度就得到phone坐标系中的加速度

a_p = phone坐标系中的加速度

R = 旋转矩阵

a_e =地球坐标系中的加速度

a_p = R * a_e

并且旋转矩阵的逆等于其转置

R^-1 = R^T

a_e = R^T * a_p

这意味着如果将旋转矩阵的转置乘以 phones 读数,您将获得地球坐标系中的加速度