gpt4 book ai didi

基于最大倾斜度的 iOS 设备屏幕磁性方向?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:09 24 4
gpt4 key购买 nike

好吧,我认为这个问题还没有被问到,是时候让我更快地得到答案,或者我会在得到答案后添加答案,因为我必须接近了。

让我解释一下:

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

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

所以基于 body 引用系。

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

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

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

就是在这个例子中:

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

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

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

请帮我找出我哪里想错了!

最佳答案

所以这里是答案:

从问题中提到的正常:

  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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com