翻译从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度。我怎么能移动我的球,使其在中心线上的基于给定的特定角度?
您的屏幕高度为Η
像素。 您的屏幕宽度为W
像素。
屏幕的水平中心是x = W/2
我从你的问题假设你想要的球中心到顶部(x, 0)
之间变化时,屏幕是平板和底部(x, H)
当屏幕是垂直的。
如果您的手机θ
的角度0
和π
之间变化,然后y = θ/π * H
ball.center = CGPoint(x: W/2, y: θ/π * H)
所有你需要的是一个基于陀螺仪的读数摸出θ
可能是正确的概念,但为什么要乘以角度乘以高度?通过这样做,y值是成千上万。也就是说,如果θ是以度为单位的角度。 – timedwalnut
谢谢我得到它的工作,但如果你不乘以2,那么它不会去视图的底部 – timedwalnut
我的假设是,你在弧度工作,因此除以pi –
似乎你设置的触发电基于加速度计值的球的速度。通过这种方法,当接近特定角度时不可能将其强制到特定位置。在这种情况下,您只能使速度为零。 –