Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
旋转背后的数学是什么?Unity3d_Unity3d_Math_Quaternions - Fatal编程技术网

旋转背后的数学是什么?Unity3d

旋转背后的数学是什么?Unity3d,unity3d,math,quaternions,Unity3d,Math,Quaternions,我试图更好地理解四元数,但我不知道旋转背后的数学是如何工作的。我尝试查找此项,但找不到任何结果。您可能知道旋转可以用以下形式的四元数表示: cos (phi / 2) sin (phi / 2) * axis.x sin (phi / 2) * axis.y sin (phi / 2) * axis.z 轴是旋转轴,φ是旋转角度。这是定义四元数所需的两个度量 有多个旋转将一个向量从映射到另一个向量到。最短的旋转是轴垂直于两个矢量的旋转。因此,轴是: axis = normalize(from

我试图更好地理解四元数,但我不知道旋转背后的数学是如何工作的。我尝试查找此项,但找不到任何结果。

您可能知道旋转可以用以下形式的四元数表示:

cos (phi / 2)
sin (phi / 2) * axis.x
sin (phi / 2) * axis.y
sin (phi / 2) * axis.z
是旋转轴,
φ
是旋转角度。这是定义四元数所需的两个度量

有多个旋转将一个向量
映射到另一个向量
。最短的旋转是轴垂直于两个矢量的旋转。因此,轴是:

axis = normalize(from x to)
x
表示叉积

角度是两个向量之间的角度:

phi = acos(dot(from, to) / (norm(from) * norm(to))
norm
是向量范数或向量长度


有了这些值,你就可以计算四元数。

据我所知,这个解决方案对相反的向量不起作用。