我想从左到右(也是向上和向下)跟踪设备沿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度但是当我向上/向下移动设备时它会发生变化,因此我无法使用这些值。
供参考:
感谢。
答案 0 :(得分:0)
这样做的问题在于,从设备返回的关于移动的唯一信息是加速。 (即不是位置或速度)。
您可能能够确定设备当前正在加速的方向。但不是在该方向上走了多远(或多快)。
然后使用它可以放下线条。
即。右,上,右,下,右,对角线向上,对角线向下,向右等......
您可以从userAcceleration
的{{1}}属性中获取此信息。然后它有x,y和z值。
有许多资源说明为什么很难(不可能)计算出位置...... This is one of the best I have found。这与Oculus Rift 2有一个外部摄像头来跟踪移动的原因相同。
祝你好运:)