gpt4 book ai didi

android - 在 android 中计算给定方位角、俯仰角和横滚角的相对方向?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:28 25 4
gpt4 key购买 nike

当我在 Android 应用程序中收听方向事件时,我得到一个 SensorEvent,其中包含 3 个 float - 相对于真实世界轴的方位角、俯仰角和横滚角。

现在假设我正在构建一个类似 labyrinth 的应用程序,但我不想强制用户通过电话并握住电话,使 xy 平面与地面平行。相反,我希望能够让用户随心所欲地握住手机,躺下或者坐下并以一定角度握住手机。换句话说,我需要根据用户的喜好来校准手机。

我该怎么做?

另请注意,我认为我的答案与 getRotationMatrixgetOrientation 有关,但我不确定如何处理!

求助!我已经坚持了几个小时。

最佳答案

对于迷宫式应用程序,您可能更关心加速度(重力)矢量而不是轴方向。在 Phone 坐标系中,该矢量由三个加速度计测量值的组合给出,而不是旋转角度。具体来说,只有 xy 读数会影响球的运动。

如果您确实需要方向,则 3 个角度读数代表 3 个欧拉角。但是,我怀疑您可能并不真正需要角度本身,而是需要旋转矩阵 R,它由 getRotationMatrix() API 返回。一旦你有了这个矩阵,它就基本上就是你正在寻找的校准。当您想将世界坐标中的向量转换为您的设备坐标时,您应该将它乘以该矩阵的(在这种特殊情况下,inv(R) = 转置(R)。

因此,按照我在文档中找到的示例,如果您想将世界重力矢量 g ([0 0 g]) 转换为设备坐标,请将其乘以 inv(R):

g = inv(R) * g

(请注意,这应该会为您提供与读取加速度计相同的结果)

此处可能使用的 API:矩阵类的 invertM()multiplyMV() 方法。

关于android - 在 android 中计算给定方位角、俯仰角和横滚角的相对方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com