Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 磁场、旋转矩阵和全局坐标_Android_Math_Android Sensors - Fatal编程技术网

Android 磁场、旋转矩阵和全局坐标

Android 磁场、旋转矩阵和全局坐标,android,math,android-sensors,Android,Math,Android Sensors,我想我已经阅读了所有关于这个主题的帖子,但我仍然不能理解一些事情: 问题1: 为了得到全局坐标下的磁场矢量,我需要将反转的旋转矩阵和磁场矢量相乘,为什么我需要反转旋转矩阵 问题2: 假设我有一个设备,我可以使用getOrientation(…)方法根据沿Z轴的旋转计算方位角。 我是否可以使用旋转矩阵或其他方法来计算相对于磁北的方位角,而不考虑手机的姿态? 所以如果我转动手机,我和磁北之间的角度将保持不变 问题3: 当我将磁矢量(第四列为零)乘以反向旋转矩阵时,我得到x非常接近于零。我从其他帖子知

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

问题1: 为了得到全局坐标下的磁场矢量,我需要将反转的旋转矩阵和磁场矢量相乘,为什么我需要反转旋转矩阵

问题2: 假设我有一个设备,我可以使用getOrientation(…)方法根据沿Z轴的旋转计算方位角。 我是否可以使用旋转矩阵或其他方法来计算相对于磁北的方位角,而不考虑手机的姿态? 所以如果我转动手机,我和磁北之间的角度将保持不变

问题3: 当我将磁矢量(第四列为零)乘以反向旋转矩阵时,我得到x非常接近于零。我从其他帖子知道这没问题,但我不明白为什么

第四题: 理论上,假设我有两个设备彼此相距1米,是否有可能仅根据它们的磁场(在全球坐标中)来确定两个设备的空间位置

提前谢谢

附言 我已经读过这些帖子: ,


A1。旋转矩阵显示手机在世界坐标中的位置。如果你想把磁矢量从你的手机坐标转换成世界坐标,你必须乘上倒数

A2。对不起,我不太明白这个问题

A3。x坐标是磁力的横向分量,对应于北极偏离磁极或类似的东西。它应该很小,和z坐标一样,是垂直分量


A4。从理论上讲,这可能是可行的,但考虑到Android设备中传感器的精度,这种方法似乎不太可行。

A1。旋转矩阵显示手机在世界坐标中的位置。如果你想把磁矢量从你的手机坐标转换成世界坐标,你必须乘上倒数

A2。对不起,我不太明白这个问题

A3。x坐标是磁力的横向分量,对应于北极偏离磁极或类似的东西。它应该很小,和z坐标一样,是垂直分量

A4。从理论上讲,这可能是可行的,但考虑到Android设备中传感器的精度,这种方法似乎不太可行。

如果你当时读了我的答案,你仍然不明白

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

让我强调一下:上述旋转矩阵,而不是反向旋转矩阵。

调用
getRotationMatrix
获得的旋转矩阵是基础矩阵从设备基础到世界基础的变化。即给定任何向量v和设备坐标系中的坐标,同一向量v的世界坐标系中的坐标可通过将旋转矩阵与设备坐标系中的坐标相乘得到

反向旋转矩阵是基础矩阵从世界基础到设备基础的变化。因此,当您将该矩阵与坐标进行多重叠加时,它被解释为将该矩阵与世界坐标系中向量的坐标相乘,以获得设备坐标系中相同向量的坐标。因此,如果将反向旋转矩阵磁传感器返回的磁场矢量的坐标相乘。然后,坐标被解释为世界坐标系中矢量的坐标,因此表示磁场矢量,结果产物不是世界坐标系中磁场矢量的坐标。实际上,它是设备坐标系中向量的坐标

A2.
getOrientation
仅当设备为平面时才有意义。对我来说,这只是一系列的角度计算。我从几何角度看我试图做什么,然后使用旋转矩阵计算我想要什么。例如,为了计算后摄像头指向的方向,我将其视为-z的方向(与屏幕正交的向量的相反方向)。因此,为了找到这个方向,我将-z投影到世界东北面,并计算该投影向量北轴之间的角度。现在,如果您这样想,那么设备的旋转不会改变-z的方向,因此投影向量与您旋转设备的方向相同。如果使用
getOrientation
,则必须为
getOrientation
预先调用
remapcoordinates系统(inR、X轴、Z轴、outR)
,以获得正确的结果

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

A4.答案是否定的。要获得空间位置,必须表达这些相对于的向量