2012-01-05 54 views
1

苹果开发者文档通过这一形象说明了处理运动:哪些移动由iOS上的加速度计管理?

Developer documentation

我现在很困惑......因为做了一些测试,我得到的加速度不上轴处理,但翻译一小套旋转...在例如,如果我移动我的设备在X斧头什么都没有发生..如果我旋转它在Z我得到加速X

在这里,我用我的测试代码:

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ 

    [self.sliderX setProgress:fabsf(acceleration.x)]; 
    [self.sliderY setProgress:fabsf(acceleration.y)]; 
    [self.sliderZ setProgress:fabsf(acceleration.z)]; 
} 

编辑------ 我不能理解的是连接到旋转在一个单一的斧头,正如我以前说过的行为。 ..在Z轴上旋转30°,我可以获得连续的加速度......在X轴上进行平移时,我只能获得加速度,以便进行短暂且快速的移动。

回答

2

加速度计受重力加速度影响最大。它实际上回归了自由落体和它实际上做的任何区别。

所以,如果你把iPhone放在桌子上,你应该沿着z有一个加速度。如果你平衡它的一个长边,你应该有一个沿x的加速度。如果你的iPhone掉到地上,那么你应该有一个(0,0,0)的加速度矢量。

移动iPhone时,如此滑动,会产生效果,但与重力相比,它可能会很小,因此很容易错过。

因此,在z上旋转会产生持久变化,因为您已经改变了相对于设备的重力方向。在x上进行翻译会导致短暂的变化,因为您正在短暂加速该设备,然后停止加速。