昨日のジャイロデータに引き続き、
CoreMotionでとれるもう一つの情報「デバイスモーション」を取得してみます。
・・・と思ったけど既に詳しい記事があったので細かいコードは割愛。
http://journal.mycom.co.jp/column/iphone/027/index.html
以下調べたこと、サンプル作って試してみてわかったことをまとめます。
(ソースコード一式)
https://github.com/shu223/CMDeviceMotionTest
CMDeviceMotionからとれる情報
- CMAttitude *attitude・・・デバイスの向き(姿勢角)
- CMRotationRate rotationRate・・・デバイスの回転速度
- CMAcceleration gravity・・・重力加速度
- CMAcceleration userAcceleration・・・ユーザーがデバイスに与えている加速度
rotationRateって、CMGyroDataからとれるrotationRateと同じ?
微妙に値が違う(小数点第3位ぐらいから)けど、だいたい同じ。
gravity(重力加速度)って、地球上では常に一定?
地面と垂直方向に対して一定なんですが、
gravity の型である CMAceleration 構造体は x, y, zの値を持つので、
デバイスがどう傾いてるかでx, y, zの値が変わります。
たとえばiPhoneを平たい床に置けば z = -0.98 で他はゼロ。
立てて持つと y = -0.98 になって他がゼロになります。