• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

基于最大倾角的iOS设备屏幕磁方向?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:16:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

好的,我不认为这个问题已经被问过了,现在是我更快地得到答案的时候了,或者我会在我得到答案后添加答案,因为我必须接近。

让我解释一下:

考虑到 iOS 设备的俯仰和滚动(忘记偏航),我们有这样的角度

 *         r+
 *    ------------
 *    |           |
 * p- °           |p+
 *    |           |
 *    ------------
 *         r-

所以基于 body 引用系。

我们知道,当俯仰或滚动为 0 时,另一个是设备的最大倾角。但是当设备在滚动和俯仰方面都有倾斜时,我们需要使用四元数,下面的答案将使我们的屏幕正常。 https://stackoverflow.com/a/10836923/2332101

带有垂直引用向量的法线向量将为我们提供最大倾角。

因此,为了获得投影在水平面上的法线向量,CLHeading 中提供了航向方向,CLHeading 的 x 之间的角度(称为 x 轴,因为它是 iOS 主体框架坐标)应该给我们正确的磁航向(忘记真正的航向)。

在这个例子中:

 *         
 *    ------------
 *    |           |
 *    °           |-> (magnetic heading)
 *    |           |
 *    -----|------
 *         v (max inclination example where p = 0)

所以在上面的例子中,我们知道它是 CLHeading.magneticHeading + 90°,但我不想像以前那样沿着这条路线走。我想使用提供的所有聪明的 API 以数学方式完成它。

IT 就是这么简单,但我尝试了很多选择都没有成功。

请帮助我找出我的想法错误的地方!



Best Answer-推荐答案


答案如下:

从问题中提到的正常情况:

  1. 将垂直向量与法线相乘,我们得到一个基于右手定则的水平向量。
  2. 再次将结果与法线相乘,将为我们提供最大倾角的方向。
  3. 使用 atan 函数并赋予它 atan2(finalVector.y,finalVector.x) 因为我们知道 x 轴指向北方。

完成!

问题是:为什么这两种方法给出不同的读数?这是从 Core Location Framework 的 CLHeading 和 Core Motion 的 CMAttitude 工作的结果略有不同,还是我做的有些马虎?

谢谢

关于基于最大倾角的iOS设备屏幕磁方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21331128/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap