その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

CMDeviceMotionについて調べてみる

昨日のジャイロデータに引き続き、
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 になって他がゼロになります。