Unity3d 为什么四元数有四个变量?

Unity3d 为什么四元数有四个变量?,unity3d,Unity3d,Unity引擎的官方文档中没有包含这一点,而且我的数学/物理研究还不够深入,没有遇到四元数,但我知道它与旋转有关。我不明白的是为什么四元数有四个变量,w,x,y,z,而只有三个旋转轴是统一的。“四元数基本上是三维空间中的一个轴,围绕该轴旋转一个角度。四个值组成一个四元数,即x、y、z和w。其中三个值用于以矢量格式表示轴,第四个值是绕轴旋转的角度。” 所以你可以简单地把它看作是旋转的旋转 正如Hellium在下面的评论中指出的那样;Unity建议如果你不确切知道自己在做什么,就不要直接摆弄四元数

Unity引擎的官方文档中没有包含这一点,而且我的数学/物理研究还不够深入,没有遇到四元数,但我知道它与旋转有关。我不明白的是为什么四元数有四个变量,w,x,y,z,而只有三个旋转轴是统一的。

“四元数基本上是三维空间中的一个轴,围绕该轴旋转一个角度。四个值组成一个四元数,即x、y、z和w。其中三个值用于以矢量格式表示轴,第四个值是绕轴旋转的角度。”

所以你可以简单地把它看作是旋转的旋转


正如Hellium在下面的评论中指出的那样;Unity建议如果你不确切知道自己在做什么,就不要直接摆弄四元数。正如Hellium还指出的,无论你想完成什么,你都可能想使用的静态方法。它们非常有用且易于使用,可以完成你想完成的大部分事情o带旋转。

有了这样的定义,新手可能希望手动设置四元数的各个值,除非您真的知道自己在做什么,否则根本不建议这样做。相反,请使用四元数类提供的静态函数:Quaternion.LookRotation、Quaternion.Angle、Quaternion.Euler、Quaternion.Slerp、Quaternion.FromToRotation,….这是非常正确的,可能需要指出。无论你想做什么,你都可能希望使用静态方法。我会用它更新答案,好的观点!感谢你的澄清!诀窍是我们需要
w^2+x^2+y^2+z^2=1
,所以有四个变量减去一个等式which提供了预期的三个自由度。