2012-01-05 51 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上進行翻譯會導致短暫的變化,因爲您正在短暫加速該設備,然後停止加速。