- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想弄清楚 getRotationMatrix()
和 getOrientation()
是如何工作的。
到目前为止,我已经知道在 getRotationMatrix()
函数中,它将重力矢量与磁矢量进行叉积以获得指向东方的新矢量。然后,它再次将东矢量与重力矢量进行叉积,以获得指向磁北的矢量。根据这个article说,现在我们有了三个正交向量,我们可以组成一个旋转矩阵。
这是我的第一个问题:为什么我们应该再次将东矢量与重力矢量进行叉积以获得指向磁北的矢量?原来的磁矢量不是指向磁北吗?新矢量和原来的磁矢量有什么区别?
关于getOrientation()
,这是我的第二个问题:方位角、横滚和俯仰角是如何得出的?有什么方程式或公式可以解释吗?
你可以去这个website查看代码
非常感谢您的关注。非常感谢!
最佳答案
第一个答案:磁矢量指向(磁)北,也可能稍微向上或向下。第二个叉积的目的是在水平面上得到一个矢量,指向(磁)北。
第二个答案:根据该代码,滚动俯仰和方位角是根据旋转矩阵的元素计算的,而旋转矩阵又是从三个空间向量的分量中导出的。一目了然,
tan(方位角) = My/Hy
sin(音高) = -Ay
tan(roll) = -Az/Ax
(这个答案是否足够取决于您对三角函数和 3 维空间中的可视化旋转的熟悉程度。)
关于Android SensorManager.java getOrientation 和 getRotationMatrix 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468136/
我正在尝试使用磁场和加速度计来计算方向。然而,计算出的Az、Pitch和Roll为0。代码如下: public void onSensorChanged(SensorEvent event) {
我想获取手机的方向,我使用了这个代码,我发现很多人都在使用它。这是代码 public void onSensorChanged(SensorEvent event) { //if th
我一直在努力使用 getOrientation 获取设备的实际方向。通过 TYPE_ACCELEROMETER 和 TYPE_MAGNETIC_FIELD 获取加速度计和磁场读数与通过 TYPE_OR
我开始使用这个功能已经过去几天了,还没有成功获得有效结果。 我想要的是基本上将加速度矢量从设备坐标系转换为真实世界坐标。我知道这是可能的,因为我在相对坐标中有加速度,而且我知道设备在现实世界系统中的方
我想弄清楚 getRotationMatrix() 和 getOrientation() 是如何工作的。 到目前为止,我已经知道在 getRotationMatrix() 函数中,它将重力矢量与磁矢量
要在 Android 中从欧拉角(例如俯仰、滚转、方位角)中获取方向,需要执行以下操作: SensorManager.getRotationMatrix(float[] R, float[] I, f
我尝试通过 SensorManager.getOrientation 在我的 Android 模拟器上获取方向。在此之前,我使用 SensorManager.getRotationMatrix 获取旋
这个问题困扰我太久了。此代码应输出加速度计的 dx、dy、dz,以及 dx 的运行总和。它还应输出方位角、俯仰角和横滚角。 I've used the information given here ,
我是一名优秀的程序员,十分优秀!