翻译从CMMotionManager()获取的3D位置以设置2D CG坐标系上的角度

问题描述:

我不知道这是我必须计算的基本数学,还是我对pitch,roll和yaw值的经验不足。此刻,我有一个基于加速度计值移动的图像对象。翻译从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度。我怎么能移动我的球,使其在中心线上的基于给定的特定角度?

+0

似乎你设置的触发电基于加速度计值的球的速度。通过这种方法,当接近特定角度时不可能将其强制到特定位置。在这种情况下,您只能使速度为零。 –

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

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

我从你的问题假设你想要的球中心到顶部(x, 0)之间变化时,屏幕是平板和底部(x, H)当屏幕是垂直的。

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

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

所有你需要的是一个基于陀螺仪的读数摸出θ

+0

可能是正确的概念,但为什么要乘以角度乘以高度?通过这样做,y值是成千上万。也就是说,如果θ是以度为单位的角度。 – timedwalnut

+0

谢谢我得到它的工作,但如果你不乘以2,那么它不会去视图的底部 – timedwalnut

+0

我的假设是,你在弧度工作,因此除以pi –