- ベストアンサー
3次元の座標変換と角度について
- 3次元の座標変換や回転角度について学習中です。
- 座標変換の方法や回転行列についての情報をまとめました。
- X軸、Y軸、Z軸の単位ベクトルを変換した後のベクトルから回転角度を求める方法を知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
3次元回転は非可換のため 各軸に対する回転の順序を1通りに決めて 各軸1回ずつの回転として 移動拡大縮小は一切しないと しない限り結果行列から各軸に対する回転角度は 求められません。 x軸に対しての回転角t y軸に対しての回転角u z軸に対しての回転角v (z軸周回転行列)*(y軸周回転行列)*(x軸周回転行列)の順序で左から 縦ベクトル (x) (y) (z)に対して x軸周回転,y軸周回転,z軸周回転の順序で回転行列を乗じるもの とすると回転行列は (cosv,-sinv,0)(cosu,0,-sinu)(1, 0, 0) (sinv, cosv,0)( 0,1, 0)(0,cost,-sint) ( 0, 0,1)(sinu,0, cosu)(0,sint, cost) = (cosvcosu,-cosvsinusint-sinvcost,-cosvsinucost+sinvsint) (sinvcosu,-sinvsinusint+cosvcost,-sinvsinucost-cosvsint) ( sinu, cosusint, cosucost) = (a_xx,a_xy,a_xz) (a_yx,a_yy,a_yz) (a_zx,a_zy,a_zz) となり [ (a_xx)^2+(a_yx)^2+(a_zx)^2=1 (a_zx)^2+(a_zy)^2+(a_zz)^2=1 (a_xy){1-(a_zx)^2}+(a_xx)(a_zx)(a_zy)+(a_yx)(a_zz)=0 (a_xz){1-(a_zx)^2}+(a_xx)(a_zx)(a_zz)=(a_yx)(a_zy) (a_yy){1-(a_zx)^2}+(a_yx)(a_zx)(a_zy)=(a_xx)(a_zz) (a_yz){1-(a_zx)^2}+(a_yx)(a_zx)(a_zz)+(a_xx)(a_zy)=0 ]の条件のとき y軸に対しての回転角 u=arcsin(a_zx) z軸に対しての回転角 v=arccos[a_xx/√{1-(a_zx)^2}] x軸に対しての回転角t t=arccos[a_zz/√{1-(a_zx)^2}]
お礼
なるほど。回答ありがとうございます。 3次元回転は非可換なので、 各軸に対する回転の順序を1通りに決めて各軸1回ずつの回転として 移動拡大縮小は一切しないという制約が必要なんですね。 詳しい説明まで書いてくださってありがとうございました。