将2个角度球面旋转转换为单个角度四元数

问题描述

我有2个角度,phi(左右旋转)和psi(上下旋转)。我想将它们转换为单个角度,该角度相当于四元数(=围绕单位矢量的最小旋转)。

来自此帖子:https://stackoverflow.com/a/47277997/113718 我们得到球面->四元数转换将得出: 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))

现在,来自另一篇文章https://stackoverflow.com/a/3825595/113718 四元数的角度是

angle = 2 * cos -1 (w)= 2 * cos -1 (sin(phi / 2)cos(psi / 2))

但是,这似乎不正确。我希望在

phi = 0 => angle = psi,反之亦然psi = 0 => angle = phi

,但以上公式似乎并非如此。我理解错了什么?

解决方法

第一个链接看起来像是“标量优先”约定(即w是第一个元素)。因此,您应该查看角度的cos(phi / 2)* cos(psi / 2)项。然后,当phi = 0和psi = 0时,一切都会按预期进行。

angle = 2 * cos ^ -1(w)= 2 * cos ^ -1(cos(phi / 2)cos(psi / 2))