Math 将Euler转换为四元数符号
我看了三个不同的公式,虽然它们基本相同,但我想知道为什么它们的符号不同。为了说明这一点,以下是公式: 通用代码Math 将Euler转换为四元数符号,math,quaternions,euler-angles,Math,Quaternions,Euler Angles,我看了三个不同的公式,虽然它们基本相同,但我想知道为什么它们的符号不同。为了说明这一点,以下是公式: 通用代码 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
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);
您可以看到第一个有+-
,第二个有-+-+
,第三个有+-+
。为此,我已将偏航俯仰和横摇规范化为其正确的XYZ对应项,但我不理解符号之间的差异。很可能它们都是“正确的”,但在仅说明“欧拉角”和/或“偏航俯仰横摇”时存在多个歧义源。这可能会引起你所看到的符号的差异。特别是,需要指定三个旋转中每个旋转所围绕的轴
对于从欧拉角度到旋转矩阵(如果你喜欢的话),我发现这篇文章很有用,而且不太长。您仍然需要,但这是定义良好的四元数符号
除非你想深入研究数学,否则最好还是坚持一个软件包使用的定义,该软件包可以在首选的欧拉角和四元数之间来回转换 它们很可能都是“正确的”,但在仅说明“欧拉角”和/或“偏航-俯仰-滚转”时,存在多个歧义源。这可能会引起你所看到的符号的差异。特别是,需要指定三个旋转中每个旋转所围绕的轴
对于从欧拉角度到旋转矩阵(如果你喜欢的话),我发现这篇文章很有用,而且不太长。您仍然需要,但这是定义良好的四元数符号
除非你想深入研究数学,否则最好还是坚持一个软件包使用的定义,该软件包可以在首选的欧拉角和四元数之间来回转换 欧拉天使有12种表示形式,可能你的资料来源使用了不同的表示形式。欧拉天使有12种表示形式,可能你的资料来源使用了不同的表示形式
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;