私は3つの別々の公式を見てきましたが、それらはほとんど同じですが、なぜその符号が異なるのだろうと思います。ここでは、説明するために、式は以下のとおりです。オイラーからクォータニオン符号への変換
共通コード
float xSin = Math::Sinr (x/2);
float xCos = Math::cosr (x/2);
float ySin = Math::Sinr (y/2);
float yCos = Math::Cosr (y/2);
float zSin = Math::Sinr (z/2);
float zCos = Math::Cosr (z/2);
X = xSin * yCos * zCos + xCos * ySin * zSin;
Y = xCos * ySin * zCos + xSin * yCos * zSin;
Z = xCos * yCos * zSin - xSin * ySin * zCos;
W = xCos * yCos * zCos - xSin * ySin * zSin;
X = xSin * yCos * zCos - xCos * ySin * zSin;
Y = xCos * ySin * zCos + xSin * yCos * zSin;
Z = xCos * yCos * zSin - xSin * ySin * zCos;
W = xCos * yCos * zCos + xSin * ySin * zSin;
X = xSin * yCos * zCos + xCos * ySin * zSin;
Y = xCos * ySin * zCos - xSin * yCos * zSin;
Z = xCos * yCos * zSin - xSin * ySin * zCos;
W = xCos * yCos * zCos + xSin * ySin * zSin;
最初は+ + - -
、二- + - +
及び第三+ - - +
を持っていることがわかります。このため私はヨーピッチを正規化し、適切なXYZカウンターパートにロールしていますが、サインの違いは分かりません。
オイラー天使の12個の表現があります。https://en.wikipedia.org/wiki/Euler_angles おそらくあなたのソースは異なるものを使用しています – minorlogic