加速度センサーの解説がされている公式ページは以下となります。
iPhone Application Programming Guide: Accessing Accelerometer Events
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedFeatures/chapter_10_section_2.html
delegateで自分のクラスへ加速度情報が返ってくる様にします。
theAccelerometer.delegate = self;
この記述により以下のメソッドに指定した間隔(※)で加速度データが返されます。
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
※ここの事
theAccelerometer.updateInterval = 1 / kAccelerometerFrequency;
アプリによってはlow-passフィルタ、high-passフィルタを通した値を使うと良いみたいです。
※公式サイトに記述してある accelX、accelY、accelZ はメンバ変数に定義しておく必要があるのに気を付けて下さい。
low-passフィルタの特徴
- 前回の値と今回の値を合成して使う
- 前回の値の割合→少ない
- 今回の値の割合→大きい
- 定期的な加速→大きく反映される
- 瞬間的な加速→小さく反映される
- 定期的な加速を取得したいときに使用
high-passフィルタの特徴
- 現在の値からlow-passフィルタの値を引いた値
- 定期的な加速→小さく反映される
- 瞬間的な加速→大きく反映される
- 瞬間的な加速を取得したいときに使用
ソースはこちらから(加速度の値はそのまま使ってるのでlow-passフィルタ、high-passフィルタは公式サイトの記述を参考に自分で書いてみましょう)。