結論まで一気にやるっすね。
どうもぺんぎんっす( ◎v◎ )
昨日の記事を読んでない場合は読んでからの方が良いっすよ。
http://northernpenguin-ex.blogspot.com/2010/12/rotation.html
a * b と b * a の各要素を比較して
x要素について a.y * b.z = a.z * b.y -①
y要素について a.z * b.x = a.x * b.z -②
z要素について a.x * b.y = a.y * b.x -③
ここからスタートっす。
場合分けするっす。
I aがZERO_ROTATIONのとき
b.x、b.y、b.zの値によらず成り立つ。
II a.x≠0 かつ a.y=0 かつ a.z=0 のとき
②より b.z=0
③より b.y=0
②または③より b.xの値によらず成り立つ。
同様にして、
a.x=0 かつ a.y≠0 かつ a.z=0 のとき
b.x = b.z = 0 のとき、b.yの値によらず成り立つ。
a.x=0 かつ a.y=0 かつ a.z≠0 のとき
b.x = b.y = 0 のとき、b.zの値によらず成り立つ。
III a.x≠0 かつ a.y≠0 かつ a.z=0 のとき
②より b.z=0
A b.y=0 のとき
③より b.x=0
∴ bはZERO_ROTATION
B b.y≠0 のとき
III a.x≠0 かつ a.y≠0 かつ a.z=0 のとき
②より b.z=0
A b.y=0 のとき
③より b.x=0
∴ bはZERO_ROTATION
B b.y≠0 のとき
③より b.x≠0
③の両辺を b.x * b.y で割ると
a.x / b.x = a.y / b.y
③の両辺を b.x * b.y で割ると
a.x / b.x = a.y / b.y
uを0以外の実数として a.x / b.x = a.y / b.y = u とすると
a.x = u * b.x
a.y = u * b.y と書けるから
A = (a.x, a.y, 0), B = (b.x, b.y, 0) とすると
A = uB となる。
∴O = (0, 0, 0)とすると、BはOA上にある
同様にして、a.x≠0 かつ a.y=0 かつ a.z≠0 のとき
a.x=0 かつ a.y≠0 かつ a.z≠0 のときも
bはZERO_ROTATION または
BはOA上にある。
IV a.x≠0 かつ a.y≠0 かつ a.z≠0 のとき
A b.z=0のとき
①より b.y=0
②より b.x=0
∴ bはZERO_ROTATION
B b.z≠0のとき
①より b.y≠0
②より b.x≠0
①の両辺を b.y * b.z で割ると
a.y / b.y = a.z / b.z -④
②の両辺を b.x * b.x で割ると
a.z / b.z = a.x / b.x -⑤
③の両辺を b.x * b.y で割ると
a.x / b.x = a.y / b.y -⑥
④⑤⑥より uを0以外の実数として
b.x = u * a.x
b.y = u * a.y
b.z = u * a.z と書けるから
A = (a.x, a.y, a.z), B = (b.x, b.y, b.z) とすると
A = uB となる。
∴O = (0, 0, 0)とすると、BはOA上にある
これで場合分けが完了っす。
キーは「BはOA上にある」、これっす。
IIもa.x = u * b.x のカタチに出来るので、これもまとめられるっす。
OAとかOBっていうのは回転軸を表すベクトルっす。
というわけで結論は
「回転軸が同じなら交換可能」
っていうのが分かったっす。
0 件のコメント:
コメントを投稿