クォータニオンによって加速度計の読み取り値を地球の参照フレームに (必要に応じて部屋の座標系に) 回転させてから、重力を差し引く必要があります。残りの加速度は、線形加速度またはユーザー加速度と呼ばれることが多い基準の地球フレームでのセンサーの加速度です。
擬似コードでは、このようなもの
acceleration = [ax, ay, ay] // accelerometer reading
q // quaternion corresponding to the orientation
gravity = [0, 0, -9.81] // gravity on Earth in m/s^2
a_rotated = rotate(acceleration, q) // rotate the measured acceleration into
// the Earth frame of reference
user_acceleration = a_rotated - gravity
q
APIを介して取得できると言います。唯一の重要なステップは、rotate()
関数を実装することです。
v
で回転したときのベクトルのイメージを計算するにはq
、次の式を適用する必要があります: v回転= q v q -1 . 浮動小数点数で計算するには、自分で式を計算する必要があります。それらはクォータニオン回転の使用 で利用できます。
私が知る限り、あなたが提供したリンクはまさにこれを行います.そこに展開された数式が表示され、それらがどこから来たのかがわかります. また、リンクされたコンテンツは重力を g 単位で測定しているようです。つまり、重力は [0,0,-1] です。
符号規則 (重力 [0,0,-1] または [0,0,1] を考慮するかどうか) と座標系の利き手に注意してください。