アプリ版:「スタンプのみでお礼する」機能のリリースについて

加速度センサを使った傾き(重力方向に対して何度傾いたか?)の求め方を教えてください。

3軸加速度センサがあります。
3軸(=直交座標x、y、z)の値は重力の分力で、3軸合成値の絶対値(√x^2+y^2+z^2)=1です。
つまり、完全に静止状態でしか測定しないものとします。

ある時点(初期値)の加速度センサの値をZa=(x1,y1,z1)とします。
N時間経過後の加速度センサの値をZb=(x2,y2,z2)とします。
この両者の値より、N時間後に重力方向に対して傾いた角度を求めるには、どうすれば良いのでしょうか?
便宜上x、y、zとしましたが、どの軸が重力方向で、どの軸が水平線方向かは不定です。
考え方だけでも良いのでお教え頂けると幸いです。

よろしくお願いします。

A 回答 (3件)

 Zaに対してZbが何度傾いてるかを計算したいんですよね。


 内積
  Za ・ Zb = x1x2 + y1y2 + z1z2
を使うと、Za と Zbがなす角度θは
  Za ・ Zb = |Za||Zb|cosθ
と表せます。一方、
  |Z| = √(x^2+y^2+z^2)=1
ということだから
  Za ・ Zb = cosθ
つまり
  θ = Arccos(x1x2 + y1y2 + z1z2)
    • good
    • 1
この回答へのお礼

錆び付いた頭をひねって、ようやく理解できました。

ご回答ありがとうございました。
助かりました。

お礼日時:2012/05/03 21:04

座標軸と牛力とのなす角度のcos、つまり方向余弦を用いれば考えるまでもないのではないですか。

    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

お陰様で、内積を使えば求められることが理解できました。

お礼日時:2012/05/03 21:02

重力方向に対して,何が何度傾いているのか?の何がをはっきりと決めないといけません。


x、y、zとしましたが、どの軸が重力方向で、どの軸が水平線方向かは不定(不明)です。であれば、
なおさらです。Za=(x1,y1,z1)が分かったとしても、角度として3つの可能性があります。
別の情報がない限り知るよしもありません。Zb=(x2,y2,z2)が分かったとしても、初期より何度
傾いたかはわかっても、重力方向に対しての角度は相変わらず3つの可能性があります。
    • good
    • 1
この回答へのお礼

説明が下手で混乱させてしまい申し訳ありません。
仰る通り、答えは各軸毎に3つになってしまいますね。
単純に「初期値Zaに対して、Zbは何度傾いているか?を求める計算」と質問すれば良かったです。

アドバイスありがとうございました。

お礼日時:2012/05/03 21:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!