将2个角度(球面旋转)转换为单个角度(四元数)
Convert 2 angles (spherical rotation) to single angle (quaternion)
我有2个角度,phi
(左右旋转)和psi
(上下旋转)。我想将它们转换为单个角度,这相当于四元数(=围绕单位向量的最小旋转)。
来自这个post:
我们得到球形 -> 四元数转换将给出:
quat = (cos(phi/2)cos(psi/2), -sin(phi/2)sin(psi/2), cos(phi/2)sin(psi/2), sin(phi/2)cos(psi/2))
现在,来自另一个 post:
四元数的角度是
角度 = 2 * cos-1(w) = 2 * cos-1( sin(phi/2)余弦(psi/2))
但这似乎不对。我希望当
phi = 0 => angle = psi
,当psi = 0 => angle = phi
时反之
但上面的公式似乎并非如此。我理解错了什么?
第一个 link 看起来像是“标量优先”约定(即 w 是第一个元素)。因此,您应该查看角度的 cos(phi/2)*cos(psi/2) 项。然后,当 phi=0 和 psi=0 时,一切都会按预期进行。
角度 = 2 * cos^-1(w) = 2 * cos^-1( cos(phi/2)cos(psi/2) )
我有2个角度,phi
(左右旋转)和psi
(上下旋转)。我想将它们转换为单个角度,这相当于四元数(=围绕单位向量的最小旋转)。
来自这个post:
我们得到球形 -> 四元数转换将给出:
quat = (cos(phi/2)cos(psi/2), -sin(phi/2)sin(psi/2), cos(phi/2)sin(psi/2), sin(phi/2)cos(psi/2))
现在,来自另一个 post: 四元数的角度是
角度 = 2 * cos-1(w) = 2 * cos-1( sin(phi/2)余弦(psi/2))
但这似乎不对。我希望当
phi = 0 => angle = psi
,当psi = 0 => angle = phi
但上面的公式似乎并非如此。我理解错了什么?
第一个 link 看起来像是“标量优先”约定(即 w 是第一个元素)。因此,您应该查看角度的 cos(phi/2)*cos(psi/2) 项。然后,当 phi=0 和 psi=0 时,一切都会按预期进行。
角度 = 2 * cos^-1(w) = 2 * cos^-1( cos(phi/2)cos(psi/2) )