使用Roll,pitch和Yaw或Quaternion或Rotation Matrix计算CMAttitude的海拔高度和方位角

Raj*_*dal 6 iphone cocoa-touch quaternions euler-angles rotational-matrices

我很震惊.我想将iPhone的CMAttitude信息转换为海拔高度(0到90度)和方位角(0到360度).我已经google了一下并且讨论了一些讨论它的线程,但没有一个线程得到肯定的答案,大多数讨论Quaternion和Euler角度的文章都是太多的数学物质进入我的大脑!

是否有一些开源材料可以轻松完成这项任务?或者有人编写代码来执行此转换?

编辑:首先,抱歉这么抽象!

方位角是指设备所指向的地球表面上的方向.像北= 0度,东北= 45度,东= 90度,南= 180度,依此类推.范围在0度到360度之间:

在此输入图像描述

海拔高度是从地球平面到天空中物体的角度: 在此输入图像描述

谢谢,

拉吉

dab*_*aid 4

使用 CMDeviceMotion,您可以获得具有“滚动、俯仰和偏航”的 CMAttitude 对象 - 例如,假设手机处于纵向模式,“偏航”是“方位角”,“俯仰”是手机相对于地面的倾斜度,或天顶,“滚动”是关于指向屏幕的矢量,而不是您感兴趣的内容。

事情变得有点棘手,因为“方位角”是 3D 磁矢量(指向磁北极)在平坦“地”平面上的投影,该投影根据设备方向而变化,但考虑到对这些术语的理解,线程像这样的应该更容易理解。如果您只需要应用程序在一个方向上工作,事情就会变得简单得多。

PS“高度”几乎专门用于指给定参考(海平面、大地高度等)的海拔或高度。“Zenith”或“pitch”是更好的选择,并且由于您使用的是 iOS,因此您应该坚持它们的坐标方案:(lat、lon、alt)、(pitch、yaw、roll)。