逆に一致することもあるわけっす。
どんな条件があるのか考えてみたっす。
どうもぺんぎんっす( ◎v◎ )
まず、明らかなのは
・a = b のとき
・b = ZERO_ROTATION / a のとき
これらは見た瞬間に分かるっすね。
他の場合が無いか、考えてみるっす。
作戦はa * b と b * a を計算して、x、y、z、sの各要素を比較するっす。
式が4本出るので、そこから考えて行くっす。
とりあえず積を出すっす。
どっちか片方書けば、もう片方はaとbを入れ替えれば良いっすね。
というわけでa * bを計算するっす。
c = a * b とすると、
c.x = a.s * b.x + a.x * b.s + a.y * b.z - a.z * b.y
c.y = a.s * b.y + a.y * b.s + a.z * b.x - a.x * b.z
c.z = a.s * b.z + a.z * b.s + a.x * b.y - a.y * b.x
c.s = a.s * b.s - a.x * b.x - a.y * b.y - a.z * b.z
s要素はaとbを入れ替えても同じになるっすね。
ということは実質3本の式になるっす。
x、y、z要素についてもaとbを入れ替えたら同じになる部分は
緑で表示しておいたっす。
比較するときに両方で出てくるので、消える部分になるっす。
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 -③
①②③を満たすようなbを選べばa * bとb * a は一致するっす。
もうちょっと変形しないと見えないっすね。
0 件のコメント:
コメントを投稿