Which movements are managed by accelerometer on iOS?
苹果开发者文档解释了这张图片处理的运动:
我现在很困惑......因为做一些测试我发现加速度计不处理轴上的平移,而是处理一些旋转......例如,如果我在
这是我用于测试的代码:
1 2 3 4 5 6 | -(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 轴上平移时我只得到加速度短而快的运动。
加速度计受重力加速度的影响最大。它实际上返回了自由落体与它实际所做的任何事情之间的差异。
因此,如果您将 iPhone 平放在桌子上,您应该沿 z 方向有一个加速度。如果你在它的长边之一上平衡它,你应该有一个沿 x 的加速度。如果你的 iPhone 掉到地上,那么你的加速度矢量应该是 (0, 0, 0)。
移动 iPhone,比如滑动它,会产生效果,但它可能与重力相比很小,所以很容易错过。
因此,在 z 轴上旋转会产生持久的变化,因为您已经改变了相对于设备的重力方向。在 x 上平移会产生瞬态变化,因为您正在短暂加速设备,然后停止加速。