SlimMathをテストしていて気がついたのだが2つのクオータニオンの間の角度がどうも考えていたのと違う。 心の師匠であるJasonGregoryのGameEngineArchtectureによると θ = acos(dot(p,q)) 。私も今までこれで何の疑問もなかったのだがユニットテストを書いていたらどうも値が違う。 下の2つのクオータニオンの角度を上式で計算すると45.0が返ってくる。 var p = new Quaternion (new Vector(0,1,0), 0); // 0度 var q = new Quaternion (new Vector(0,1,0), Math.PI/2.0f); // 90度 期待しているのは当然90度なのである。あちこち調べ回ったがどこを見てもJasonGregoryの式と同じ式が書いてある(そりゃそうだ)。 2時間ほど探し回ってようやく