クォータニオン難しい……

クォータニオンを経由して回転行列を求めるのに、3D‐CGプログラマーのための実践クォータニオン―「スケーリング」「平行移動」「回転」…のプログラミングが分かる! (I・O BOOKS)に載っている式とサンプルコードを参考にしてやっていたところ、なぜか回転の向きが逆になるようなので、調査していました。

まず、3D‐CGプログラマーのためのクォータニオン入門―「ベクトル」「行列」「テンソル」「スピノール」との関係が分かる! (I・O BOOKS)も参考にしながら、自力で式を導いてみようとしたのですが、あえなく挫折。

しかたなく、いつものようにgoogleで検索してみたところ、やはり回転行列が転置している(逆行列になっている)せいで回転が逆になっているようでした。

でも、本に載ってるサンプルコードはたぶん正しく動くんだろうなぁ……なぜ? と思ってOpenGLについて調べてみると、案の定、OpenGLと自分のプログラムでは行列の保持の仕方が違っているようでした(転置している)。

これで、回転の向きが逆になる原因がおよそ分かったので、ソースを修正しておきました。本当は、自力で式の検証をしたかったんだけどなぁ。