转换从CMMotionManager()获取的3D位置,以在2D CG坐标系

时间:2017-03-16 17:22:44

标签: ios swift math graphics cgpoint

我不知道这是否是我必须计算的基本数学,或者我对音高,滚动和偏航值的经验不足。目前,我有一个基于我的加速度计值移动的图像对象。

 //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)

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

1 个答案:

答案 0 :(得分:1)

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

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

我假设您的问题是,当屏幕垂直时,球中心在顶部(x, 0)和屏幕垂直时(x, H)之间变化。

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

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

根据陀螺仪读数

,你需要的是触发θ