iphone - 使用横滚、俯仰和偏航或四元数或旋转矩阵从 CMAttitude 计算高度和方位角

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

我遇到一个问题。我想将 iPhone 的 CMAttitude 信息转换为海拔高度(0 到 90 度)和方位角(0 到 360 度)。我用谷歌搜索并找到了一些讨论它的线程,但没有一个线程给出了肯定的答案,而且大多数讨论四元数和欧拉角的文章都是太多的数学,无法塞进我的大脑!

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

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

方位角是设备指向的地球表面方向。如北= 0 度,东北= 45 度,东= 90 度,南= 180 度等。范围在 0 度到 360 度之间:

enter image description here

高度是地球平面与天空中物体形成的角度: enter image description here

谢谢

拉吉

最佳答案

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

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

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

关于iphone - 使用横滚、俯仰和偏航或四元数或旋转矩阵从 CMAttitude 计算高度和方位角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770771/

相关文章:

iphone - 被要求开发一个使用 GPS 导航的 iPhone 应用程序——现实的期望?

iphone - iOS & XCode 4 build设置 : Install Directory

iOS 状态恢复

iphone - 创建的组文件夹在xcode的finder中的显示中不可见

c++ - 要 float 的四元数分量(特征值)

iPhone hitTest 旋转后损坏

iphone - 如何检查用户是否清除了iPhone后台应用程序的运行状态?

objective-c - Spritekit 和 Touch 事件(坐标似乎翻转)

orientation - 如何基于3D陀螺仪数据更新四元数?

opencv - 在 OpenCV 中将角速度转换为四元数