android手机方向 矩阵,android – 磁场,旋转矩阵和全局坐标

我想我已经阅读了关于这个主题的所有帖子,但我仍然无法理解一些事情:

Q1:

为了获得全局坐标系中的磁场矢量,我需要将反转旋转矩阵和磁场矢量相乘,为什么我需要反转旋转矩阵?

Q2:

假设我有一个设备,我可以使用getOrientation(…)方法根据沿Z轴的旋转计算方位角.

我可以使用旋转矩阵或其他方法来计算磁北的方位角,而不管手机的姿态如何?

所以,如果我要旋转手机,我和磁北之间的角度将保持不变?

Q3:

当我将磁矢量(第4个col为零)乘以反转的旋转矩阵时,得到x非常接近于零.我知道这是o.k来自其他帖子,但我不明白为什么?

Q4:

理论上,假设我有两个相距1米的设备,是否可以根据磁场(在全局坐标系中)制作两个设备的空间位置

提前致谢.

解决方法:

A1.将旋转矩阵与设备坐标系中磁场矢量的坐标相乘,得到世界坐标系中磁场矢量的坐标.

让我强调一下:上面说的旋转矩阵并没有反转旋转矩阵.

通过调用getRotationMatrix获得的旋转矩阵是基础矩阵从设备基础到世界基础的变化.给定任何具有设备坐标系中坐标的矢量v,可以通过将旋转矩阵与设备系统坐标中的坐标相乘来获得相同矢量v的世界坐标系中的坐标.

反转矩阵是基础矩阵从世界基础到设备基础的变化.因此,当您使用坐标多次显示此矩阵时,它被解释为将矩阵与世界坐标系中的矢量坐标相乘,以获得设备坐标系中相同矢量的坐标.因此,如果将反转旋转矩阵乘以磁传感器返回的磁场矢量坐标.然后,坐标被解释为世界坐标系中的矢量的坐标,因此不表示磁场矢量,并且所得到的乘积不是世界坐标系中的磁场矢量的坐标.实际上它是设备坐标系中矢量的坐标.

A2. getOrientation仅在设备是平的时才有意义.对我来说,它只是一堆角度计算.我看看我尝试以几何方式做什么然后使用旋转矩阵来计算我想要的东西.例如,要计算后置摄像头指向的方向,我将其视为-z的方向(与屏幕正交的矢量相反).因此,为了找到这个方向,我将-z投影到世界东 – 北平面并计算该投影矢量和北轴之间的角度.现在,如果你这么想,那么设备的旋转不会改变-z的方向,因此投影矢量与旋转设备的方向相同.如果使用getOrientation,则必须预先重新映射remapCoordinateSystem(inR,AXIS_X,AXIS_Z,outR)以获取getOrientation以获得正确的结果.

A3. getRotationMatrix假定地磁参数是完全位于北天空平面中的矢量的坐标.那么位于这个平面的任何向量都必须有x坐标等于0.这只是基本的线性代数.

A4.答案是不.要获得空间位置,您必须相对于固定坐标系表达这些向量.在设备坐标系中只有这些矢量的坐标,你无法找到一个固定的基础,它允许你计算从设备基础到这个固定基础的基础矩阵的变化.我需要满足上述链接中所述的2个条件来计算基础的变化.

标签:android-sensors,android,math

来源: https://codeday.me/bug/20191006/1858837.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值