0

我一直在尝试为 Android 开发行人航位推算应用程序,在处理了步数检测和步长组件之后,我决定解决方向确定问题。

在偶然发现了几篇关于坐标 转换的帖子(甚至与经常回答的人聊天之后,我的结果逐渐好转,但仍然有一些困扰我的事情。

本实验:

我往北走,转身又往南走。向 West 重复该过程,然后向 East 重复该过程。

问题:

  1. 我预计,在沿多个方向直行时,X 和 Y 值的值会随着脚步声而振荡,并且始终具有相对稳定的 Z 值。相反,Y 值以这种方式运行,而Z 值具有其预期行为。怎么来的?这与我不使用remapCoordinates()有什么关系吗?(见图1)

  2. 我预计角度图会在 180º 和 -180º 左右跳跃,但为什么它们也会在 35º 左右跳跃?(见图2)

笔记:

  • 我正在使用重力和磁力计值来计算旋转矩阵,并使用 OpenGL 的multiplyMV()将其相乘;
  • 我没有使用remapCoordinates(),因为我认为我不需要:手机在我的口袋里是直立的(Y 指向上/下,Z 通常向前)并且应该向前和向后移动 45º,在最坏的情况下;
  • 方位角值似乎没问题,并且没有问题 2 中描述的振荡。(参见图 3)

图表:

世界参考重力加速度 (蓝色为 X,红色为 Y,绿色为 Z)世界参考系加速度

世界参考重力角 (蓝色为 atan2(Y/X),红色为 atan2(Z/Y),绿色为 atan2(Z/X))来自世界坐标的 Atan2 值

方向值 (蓝色是方位角,红色是俯仰,绿色是滚动)方向值

4

0 回答 0