Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 平移从CMMotionManager()获取的三维位置,以在二维CG坐标系上设置角度_Ios_Swift_Math_Graphics_Cgpoint - Fatal编程技术网

Ios 平移从CMMotionManager()获取的三维位置,以在二维CG坐标系上设置角度

Ios 平移从CMMotionManager()获取的三维位置,以在二维CG坐标系上设置角度,ios,swift,math,graphics,cgpoint,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 + d

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

 //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值以千为单位。也就是说,如果θ是以度为单位的角度。谢谢,我用它来处理,但是如果你不把y乘以2,那么它就不会进入视图的底部。我的假设是,你以弧度为单位,因此用θ除以π,这是一个更新。如果θ以弧度为单位,那么仍然需要将H乘以2,否则球将只到达视图的中间,而不是底部。