【问题标题】:Compute Altitude and Azimuth from CMAttitude using either Roll, pitch and Yaw or Quaternion or Rotation Matrix使用滚动、俯仰和偏航或四元数或旋转矩阵从 CMAttitude 计算高度和方位角
【发布时间】:2023-03-18 19:27:01
【问题描述】:

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

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

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

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

高度是从地球平面到天空中物体的角度:

谢谢,

拉吉

【问题讨论】:

  • 高度和方位角是什么意思?它是本地空间中的设备方向还是地理坐标中的设备方向?
  • 嗨 Bartosz,我在我的问题中添加了更多详细信息。请看。

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


【解决方案1】:

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

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

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

【讨论】:

  • 这种情况下的海拔高度略有不同,请参考问题中的附图和问题描述。另外,我已将评论添加到其他答案。
  • 好的,可能乔已经删除了他之前的答案。好吧,我喜欢你的概念化,即可以使用 iPhone 4 的指南针推断方位角,从俯仰和横滚中推断出高度,参考是什么?就像真北是方位角的参考一样,我们如何确定高度的固定参考?因为这是最后一天,所以奖励你赏金,但是,是的,继续帮助我,直到我找出问题;)
  • 嗨 Raj,我以为我添加了更多信息,我不记得这是对 Joe 的回答的评论,还是我忘记保存的编辑。总结是,加速度计的值都是关于重力矢量的,所以这是俯仰和滚动的参考。在本页末尾:developer.apple.com/library/ios/#DOCUMENTATION/EventHandling/… 它显示了如何获取相对于参考框架的方向:例如,您可以在纵向使用手机框架
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多