質問: ベクトルの回転について はじめまして。 以下のような問題について大学1年生の弟から質問されたのですが、 答えに自信がありません。どうか皆様のお力をお貸しください。 三次元空間上にベクトルa(ax,ay,az)、b(bx,by,bz)がある。 このaがbと平行になるような計算をしたい。 自分なりの考えは以下の通りです。 1.z座標を無視して、xy平面上のベクトルとして考え、成す角θzを求める θz=arccos{/|a||b|} |a|=√ax^2+ay^2 |b|=√bx^2+by^2 =ax×bx+ay×by 2.x座標を無視して、xy平面上のベクトルとして考え、成す角θxを求める θx=arccos{/|a||b|} |a|=√ay^2+az^2 |b|=√by^2+bz^2 =ay×by+az×bz 3.y座標を無視して、xy平面上のベクトルとして考え、成す角θyを求める θy=arccos{/|a||b|} |a|=√ax^2+az^2 |b|=√bx^2+bz^2 =ax×bx+az×bz 4.z軸回転させる。このとき、z軸回転させた座標をzax、zayとする。 zax=ax cosθz-ay sinθz zay=ax sinθz + ay cosθz 5.次にx軸回転させる。このとき、x軸回転させた座標をxay、xazとする。 xay=zay cosθx-az sinθx xaz=zay sinθx + az sinθx 6.次にy軸回転させる。このとき、y軸回転させた座標をyax、yazとする。 yaz=xaz cosθy-zax sinθy yax=xaz sinθy + zax cosθy 7.求まったyax、zay、yazを成分とする、ベクトルはbと平行である。(終了) うろ覚えですが、軸回転は順番によって全く違った回転をしてしまうというのを昔勉強したような気がするのですが、今回の場合は特にそういった問題は関係ないのでしょうか? また、それぞれの平面ごとになす角を求め、3つのなす角を使った回転を行ないましたが、 θ=arccos{/|a||b|} |a|=√ax^2+ay^2+az^2 |b|=√bx^2+by^2+bz^2 =ax×bx+ay×by+az×bz といった風に、一気に求めたθを用いて回転させる方法はありませんでしょうか? (aとbの外積で出てくる値が回転軸になるような・・・・?) 宜しくお願いします。
回答: a×b を軸とした回転を成分計算で行うには、 a×b, a, (a×b)×a を座標軸の方向とする正規直交系へ 座標変換して考えればよいです。 a×b/|a×b|, a/|a|, (a×b)×a/|(a×b)×a| を列として並べた 行列 p の逆行列が表す一次変換で座標を変換すれば、 そのような回転は、 1 0 0 0 cosθ -sinθ 0 sinθ cosθ という行列 r で表されます。 この回転の一次変換を、もとの座標系で表す行列は、 p r (p^-1) だということになります。 p r (p^-1) a が b と平行になるように、θ を決めてやればよい。