基于最大倾角的iOS设备屏幕磁方向?
<p><p>好的,我不认为这个问题已经被问过了,现在是我更快地得到答案的时候了,或者我会在我得到答案后添加答案,因为我必须接近。</p>
<p>让我解释一下:</p>
<p>考虑到 iOS 设备的俯仰和滚动(忘记偏航),我们有这样的角度</p>
<pre><code> * r+
* ------------
* | |
* p- ° |p+
* | |
* ------------
* r-
</code></pre>
<p>所以基于 body 引用系。</p>
<p>我们知道,当俯仰或滚动为 0 时,另一个是设备的最大倾角。但是当设备在滚动和俯仰方面都有倾斜时,我们需要使用四元数,下面的答案将使我们的屏幕正常。
<a href="https://stackoverflow.com/a/10836923/2332101" rel="noreferrer noopener nofollow">https://stackoverflow.com/a/10836923/2332101</a> </p>
<p>带有垂直引用向量的法线向量将为我们提供最大倾角。</p>
<p>因此,为了获得投影在水平面上的法线向量,CLHeading 中提供了航向方向,CLHeading 的 x 之间的角度(称为 x 轴,因为它是 iOS 主体框架坐标)应该给我们正确的磁航向(忘记真正的航向)。</p>
<p>在这个例子中:</p>
<pre><code> *
* ------------
* | |
* ° |-> (magnetic heading)
* | |
* -----|------
* v (max inclination example where p = 0)
</code></pre>
<p>所以在上面的例子中,我们知道它是 CLHeading.magneticHeading + 90°,但我不想像以前那样沿着这条路线走。我想使用提供的所有聪明的 API 以数学方式完成它。</p>
<p>IT 就是这么简单,但我尝试了很多选择都没有成功。</p>
<p>请帮助我找出我的想法错误的地方!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>答案如下:</p>
<p>从问题中提到的正常情况:</p>
<ol>
<li>将垂直向量与法线相乘,我们得到一个基于右手定则的水平向量。</li>
<li>再次将结果与法线相乘,将为我们提供最大倾角的方向。</li>
<li>使用 atan 函数并赋予它 atan2(finalVector.y,finalVector.x) 因为我们知道 x 轴指向北方。</li>
</ol>
<p>完成! </p>
<p>问题是:为什么这两种方法给出不同的读数?这是从 Core Location Framework 的 CLHeading 和 Core Motion 的 CMAttitude 工作的结果略有不同,还是我做的有些马虎?</p>
<p>谢谢</p></p>
<p style="font-size: 20px;">关于基于最大倾角的iOS设备屏幕磁方向?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/21331128/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/21331128/
</a>
</p>
页:
[1]