2009-09-03 129 views

回答

9

您可以在使用前對傳入數據應用過濾器來平滑加速度計數據。你要做的第一件事就是爲你的過濾器設置一個常量。

#define kFilteringFactor 0.1 

在你didAccelerate方法,你需要添加以下過濾代碼數據

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration 
{ 
    sx = acceleration.x * kFilteringFactor + sx * (1.0 - kFilteringFactor); 
    sy = acceleration.y * kFilteringFactor + sy * (1.0 - kFilteringFactor); 
    sz = acceleration.z * kFilteringFactor + sz * (1.0 - kFilteringFactor); 
} 

上面的代碼應該順利爲您服務。 sx,sy和sz值的類型是UIAccelerationValue。

Apple的文檔中有很多相關信息,您可能會發現在這方面同樣有用。

+0

很好的答案! 唯一要補充的是變量sx,sy和sz應該在頭文件中聲明,以便在下一次計算中使用該值。 工作對我很好。 – Structurer 2011-02-28 11:30:40