3次元のシミュレーションの勉強をしています。
3次元の座標変換で
x,y,z:変換前の座標;
x',y',z':変換後の座標;
θ:回転する角度;
lx,ly,lz:平行移動量;
としたとき、
X軸に関する回転
|10 0 0|
|0cosθ sinθ 0|
[x' y' z' 1] = [x y z 1]|0-sinθ cosθ0|
|00 0 1|
Y軸に関する回転
|cosθ0-sinθ0|
|0 10 0|
[x' y' z' 1] = [x y z 1]|sinθ0cosθ0|
|0 00 1|
Z軸に関する回転
|cosθ sinθ 00|
|-sinθcosθ00|
[x' y' z' 1] = [x y z 1]|0 0 10|
|0 0 01|
平行移動
|10 0 0|
|01 0 0|
[x' y' z' 1] = [x y z 1]|00 1 0|
|lxly lz 1|
物体の姿勢を表現するときは
[物体の姿勢の変換行列] = [Z軸の回転行列][X軸の回転行列][Y軸の回転行列][平行移動]
|XX XY XZ 0|XX,XY,XZ・・・X軸の単位ベクトルを変換した場合のベクトル
|YX YY YZ 0|YX,YY,YZ・・・Y軸の単位ベクトルを変換した場合のベクトル
= |ZX ZY ZZ 0|ZX,ZY,ZZ・・・Z軸の単位ベクトルを変換した場合のベクトル
|LX LY LZ 1|LX,LY,LZ・・・平行移動量ベクトル
というのは分かるのですが、
X軸、Y軸、Z軸の単位ベクトルを変換した後のベクトルから
X軸、Y軸、Z軸にそれぞれ何度ずつ回転させたかを求めるにはどのようにすればよいのでしょうか?
つまり、X軸に対して30度、Y軸に対して45度、Z軸に対して60度回転させた後の
|XX XY XZ 0|
|YX YY YZ 0|
|ZX ZY ZZ 0|
|LX LY LZ 1|
の値からX軸に対して30度、Y軸に対して45度、Z軸に対して60度回転している事を導きたいのです。
分かる方教えてください。
お願いします。
(質問に関して、
http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/ba …
を参考にさせていただきました。)
No.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回ずつの回転として
移動拡大縮小は一切しないという制約が必要なんですね。
詳しい説明まで書いてくださってありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 角速度ベクトルにつきまして 3 2022/08/09 15:44
- 物理学 物理 2 2023/01/17 13:31
- 数学 y軸周りの回転行列は ふたつとも間違いですか? 色々探しても cos 0 sin 0 1 0 -si 6 2023/04/24 00:01
- 物理学 なめらかな水平面の床の上に、質量 200 g の物体がある。床の面を xy 面とし、鉛直方向に z 1 2022/07/23 11:28
- 数学 ベクトル方程式(ヘッセの標準形)についての質問 2 2022/04/23 18:00
- 物理学 高1力学の運動量の問題です。問題を一通り解いたのですが、行き詰まってしまったのでご回答頂ければ嬉しい 3 2022/06/29 11:20
- 物理学 xy平面上を運動する物体Aがある。この物体の時刻tにおける位置ベクトルra(t)がra(t)=p + 2 2022/05/22 14:00
- 数学 座標変換について 1 2022/08/04 16:42
- 物理学 xy平面上を運動する物体Aがある。この物体の時刻tにおける位置ベクトルra(t)がra(t)=p + 1 2022/05/23 21:39
- 数学 線形代数の問題について教えて欲しいです。 3 2023/05/06 23:13
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3次元座標を原点中心に回転したい
-
エクセルで横軸の数字を縦書き...
-
一次関数の回転移動について
-
回転した座標軸と一致させるた...
-
イラストレーターについて教え...
-
突然カーソルが手の形に…
-
jw_cadで消えない線があります...
-
エクセルで図形やワードアート...
-
クリッピングマスクの枠の外を...
-
バツ印をつけるには??(ワード)
-
指定範囲内で図形等を削除する...
-
イラストレーターで複数の線で...
-
google spread sheet で拡大表...
-
イラストレーターで辺の中心に...
-
エクセルマクロでシート内にあ...
-
in Designで一部のページにのみ...
-
エクセルの図形で弧を書く方法
-
Photoshop アンカーポイントの...
-
jwcadで図形を簡単に水平にする...
-
Excel に貼り付けた図形が、勝...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一次関数の回転移動について
-
エクセルで横軸の数字を縦書き...
-
3次元座標を原点中心に回転したい
-
回転中の独楽の理想的中心(点...
-
回転した座標軸と一致させるた...
-
回転行列から角度を求める
-
オイラー角 回転行列
-
3次元のガウス関数
-
平面近似式から2次元座標を求め...
-
クリッピングマスクの枠の外を...
-
突然カーソルが手の形に…
-
バツ印をつけるには??(ワード)
-
jw_cadで消えない線があります...
-
指定範囲内で図形等を削除する...
-
エクセルで図形やワードアート...
-
google spread sheet で拡大表...
-
in Designで一部のページにのみ...
-
Excel組織図を横に展開する方法...
-
グーグルマップに謎の線が出ます
-
エクセルの図形で弧を書く方法
おすすめ情報