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

时间:2011-04-24 13:31:40

标签: iphone cocoa-touch quaternions euler-angles rotational-matrices

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

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

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

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

enter image description here

海拔高度是从地球平面到天空中物体的角度: enter image description here

谢谢,

拉​​吉

1 个答案:

答案 0 :(得分:4)

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

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

P.S。 “高度”几乎专门用于指代给定参考(海平面,大地高度等)的高度或高度。 “Zenith”或“pitch”是首选,因为你在iOS上,你应该坚持他们的坐标方案:( lat,lon,alt),(pitch,yaw,roll)。