- ベストアンサー
2つの直交3次元ベクトル同士の角度の計算方法
例えば[x成分=0.5 y成分=-0.7 z成分=0.3] の互いが直交した3つの成分を持つAと、 [x成分=0.2 y成分=0.4 z成分=-0.7] の互いが直交した3つの成分を持つBがあるとします。 Aを回転させると(x軸周りに32度、y軸周りに86度・・・など) Bと同じになるということが分かっているとします。 ここで何度変えれば(回転させれば)Bになるのか? という問題で行き詰っているので質問させていただきました。 上の例は自分で考えた値ですので(本当はx成分=0.6889436・・・という感じです)こんな数値はありえない、ということもあるかもしれませんが計算方法だけでよろしいのでご教授願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
アフィン変換? 一次変換で十分です。 参考: http://www.infra.kochi-tech.ac.jp/takagi/Survey2/3PolarRect.pdf#search="%BB%B0%BC%A1%B8%B5%B2%F3%C5%BE%B9%D4%CE%F3"
その他の回答 (2)
- info22
- ベストアンサー率55% (2225/4034)
参考URLの三次元座標変換(3Dアフィン変換)行列を使います。 A,B位置ベクトル(行ベクトル)に対して参考URLにある X軸周りにα回転する行列M(α),Y軸周りにβ回転する行列N(β) を使えば(-π≦α<π,-π≦α<π) B=A・M(α)・N(β) となります。 この式を満たす行列 G=M(α)・N(β) を求めて、そこからαとβを決定する問題になります。 2変数の三角連立方程式を解く問題になります。 解けるかどうか、一度、挑戦してみてください。 解けたら解答を補足に書いてください。
お礼
回答ありがとうございます。 アフィン変換についてもいくつかのサイトで調べてみましたが、私の理解力がないので2つの座標("x座標とy座標"や"y座標とz座標"など)ごとに求めてみようかと思います。
- arrysthmia
- ベストアンサー率38% (442/1154)
回転の合成がしたい ということでしょうか? 任意の二つのベクトルは、長さが等しければ、 軸ごとの回転の合成でも、単一の回転でも 表すことができます。 長さの異なるベクトルは、回転では重なりませんから、 (0.5, -0.7, 0.3), (0.2, 0.4, -0.7) では無理です。 単一回転での角度を求めるには、内積を使って、 ↑x と ↑y の成す角が θ のとき ↑x・↑y = |↑x|・|↑y|・cosθ から求めればよい。 直交座標での成分がわかっていれば、内積の値は わかりますね?
お礼
回答ありがとうございます。 確かに、適当に考えた値では重なりませんね^^;
お礼
回答ありがとうございます。 参考URLの内容は私がやろうとしていることに近そうなので参考にさせていただきます。