1

苹果开发者文档解释了这张图片处理的运动:

开发者文档

我现在很困惑......因为做了一些测试,我发现加速度计不处理轴上的平移,而是处理一些旋转......例如,如果我在轴上移动我的设备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 上平移斧头我只在短而快的运动中获得加速度。

4

1 回答 1

2

加速度计受重力加速度的影响最大。它实际上返回了自由落体和它实际所做的任何事情之间的差异。

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

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

因此,在 z 上旋转会产生持久的变化,因为您已经改变了相对于设备的重力方向。在 x 上平移会产生瞬态变化,因为您正在短暂加速设备,然后停止加速。

于 2012-01-05T13:40:04.773 回答