菜鸟教程小白 发表于 2022-12-13 05:36:17

iOS核心运动检测向前/向后倾斜


                                            <p><p>我正在使用 iOS 核心运动框架来检测设备是向前还是向后倾斜。详情见图片:<a href="http://i.stack.imgur.com/2Ojw5.jpg" rel="noreferrer noopener nofollow">http://i.stack.imgur.com/2Ojw5.jpg</a> </p>

<p>使用音高值 a 可以检测到这种运动,但我无法区分前进和后退。</p>

<p>更多细节:</p>

<p>我尝试检测向前区域或向后区域是否有运动(向前和向后倾斜)(参见更新的草图)。</p>

<p>音高的问题在于,如果设备处于直立位置,它的起始值约为 1.6。当我将其向前或向后倾斜到水平药水时,该值会减小相同的值。同样的行为也适用于加速度计 y 值。</p>

<p>看起来我错过了整个核心运动的东西。任何想法</p>

<p>感谢基督徒</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用姿态俯仰,前倾和后倾是无法区分的。但是使用 <strong>四元数</strong>,您可以计算音高,如果您将弧度转换为度数,</p>

<ul>
<li>0 表示设备在其背面</li>
<li>90 表示它正在站立</li>
<li>180 表示它在脸上</li>
</ul>

<p>旋转的对面半球为 0 到 -180。代码如下:</p>

<pre><code>func radiansToDegrees(_ radians: Double) -&gt; Double {
    return radians * (180.0 / Double.pi)
}

let quat = motionData.attitude.quaternion
let qPitch = CGFloat(radiansToDegrees(atan2(2 * (quat.x * quat.w + quat.y * quat.z), 1 - 2 * quat.x * quat.x - 2 * quat.z * quat.z)))
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iOS核心运动检测向前/向后倾斜,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20379830/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20379830/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS核心运动检测向前/向后倾斜