一定値だけ旋回
ワンコ関連でちょっと必要だったので。
以下に出てくるベクトルの長さはすべて1とする。ベクトルaからベクトルbの向きにθまわしたベクトルcを求めたい。a・b=±1等とくに特殊な場合を考えなくて良い。ただし途中でベクトルを角度に落とさないで求めたい。
2次元で考える。bを固定しない場合のcの候補は2通りしかない。D=ax*by-ay*bxとして、D>0の場合xy座標系で反時計回り。よってaにθの回転行列を掛ければよい。
こんな感じ。D<0の場合はθが-θになる。実質sinのところの符号が入れ替わるだけ。
3次元で考える。クォータニオンの得意分野。aを表すクォータニオンをA, 回転クォータニオンをQとすると、
(α,β,γ)は回転軸なので、a×bに等しい。以上よりQ^-1AQを計算すればOK.