Woj*_*cel 1 c# quaternions unity-game-engine
Rigidbody我正在编写一个使用 a旋转 a 的脚本Configurable Joint。我已经弄清楚targetRotation了,但现在我正在努力解决targetAngularVelocity,如果设置正确,这应该可以帮助我避免不稳定。
targetAngularVelocity在文档中定义如下:“这是一个Vector3。它定义了关节应旋转到的所需角速度”。问题是我不知道如何Vector3根据两个Quaternions对象的当前旋转和目标旋转来获得它。
难道是我理解不正确?是否有一个函数返回基于两个的旋转向量Quaternions?
因此,在数学上,四元数代表刚体的方向。首先考虑前向问题,看看在施加旋转速度\xcf\x89 t时间后,方向q_1如何变换到另一个方向q_2。
\n\n从数学上讲,旋转向量具有大小\xcf\x89和方向k,使得\xcf\x89 = \xcf\x89* k
\n\n这是通过四元数乘法完成的
\n\nq_2 = q_\xcf\x89 * q_1
\n\n其中q_\xcf\x89表示绕k轴旋转 of an angle \xce\xb8=\xcf\x89*t.
\n\n反过来,你需要找到q_\xcf\x89 with
\n\nvar q_\xcf\x89 = q_2 * Quaternion.Inverse(q_1);\nRun Code Online (Sandbox Code Playgroud)\n\n并提取旋转轴和角度
\n\nq_\xcf\x89.ToAngleAxis(out float angle, out Vector3 axis);\nRun Code Online (Sandbox Code Playgroud)\n\n并组成旋转速度矢量,对应于该变换time seconds.
var \xcf\x89 = (angle/time)*axis;\nRun Code Online (Sandbox Code Playgroud)\n