画一条线来显示设备的运动

时间:2014-08-21 10:24:47

标签: ios iphone gyroscope core-motion

我想从左到右(也是向上和向下)跟踪设备沿0-180度的运动,并在设备屏幕上显示为图形。我正在使用设备运动传感器绘制线但无法找到我需要使用的值。

[self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
 {
     CGFloat rotationRateY = motion.rotationRate.y;
     CGFloat rotationRateX = motion.rotationRate.x;

     if (fabs(rotationRateY) >= 0.1f || fabs(rotationRateX) >= 0.1f)
     {
         CMAttitude *currentAttitude = self.motionManager.deviceMotion.attitude;

         newXVal = (int)round(degrees(currentAttitude.roll));
         newYVal = (int)round(degrees(currentAttitude.pitch));
         newZVal = (int)round(degrees(currentAttitude.yaw));

         // Degrees should always be positive
         if(newZVal < 0)
         {
             newZVal = newZVal + 360;
         }
         else
         {
             newZVal = newZVal + 180;
         }

         //I want to track some cgpoints to draw the line here I think but how...:(
     }
 }];

在上面的代码中,我依赖于偏航值来跟踪0 - 180度但是当我向上/向下移动设备时它会发生变化,因此我无法使用这些值。

供参考:enter image description here

感谢。

1 个答案:

答案 0 :(得分:0)

这样做的问题在于,从设备返回的关于移动的唯一信息是加速。 (即不是位置或速度)。

您可能能够确定设备当前正在加速的方向。但不是在该方向上走了多远(或多快)。

然后使用它可以放下线条。

即。右,上,右,下,右,对角线向上,对角线向下,向右等......

您可以从userAcceleration的{​​{1}}属性中获取此信息。然后它有x,y和z值。

有许多资源说明为什么很难(不可能)计算出位置...... This is one of the best I have found。这与Oculus Rift 2有一个外部摄像头来跟踪移动的原因相同。

祝你好运:)