iOS 上的加速度计管理哪些运动? | 珊瑚贝

Which movements are managed by accelerometer on iOS?


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

Developer

我现在很困惑……因为做一些测试我发现加速度计不处理轴上的平移,而是处理一些旋转……例如,如果我在 X 上移动我的设备斧头什么都没有发生.. 如果我在 Z 上旋转它,我会在 X 上获得加速。

这是我用于测试的代码:

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 上平移会产生瞬态变化,因为您正在短暂加速设备,然后停止加速。


来源:https://www.codenong.com/8742292/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?