将 CMMotionManager() 获取的 3D 位置转换为在 2D CG 坐标系上设置角度


我不知道

这是我必须计算的基本数学,还是我对俯仰、横滚和偏航值缺乏经验。目前,我有一个根据加速度计值移动的图像对象。

 //Move the ball based on accelerator values
        delta.x = CGFloat(acceleration.x * 10)
        delta.y = CGFloat(acceleration.y * 10)
        ball.center = CGPointMake(ball.center.x + delta.x, ball.center.y + delta.y)

我可以通过姿态计算音高并得到角度。我想做的是,只有当手机的角度是一定角度时,我才将我的"球"排在屏幕中央,比如说 45 度。如何移动我的球,使其根据给定的特定角度在中心对齐?

您的屏幕高度为 Η 像素。屏幕宽度为 W 像素。

屏幕的水平中心是x = W / 2

我假设从你的问题中,您希望球中心在屏幕平坦时的顶部(x, 0)和屏幕垂直时的底部(x, H)之间变化。

如果手机θ的角度在 0π 之间变化,则y = θ / π * H

ball.center = CGPoint(x: W / 2, y: θ / π * H)

您所需要的只是三角形,根据陀螺仪读数计算出θ

最新更新