0
$\begingroup$

I'm here to ask for a simple question about unit quaternions. I have a quaternion, say $q_1$. Now, I would like to choose between $q_2$ and $-q_2$ (that represent the same rotation), by choosing the one that has the "smallest distance" to $q_1$. I can give an example of my question, then it is clearer to everyone. Actually, $q_1$ and $q_2$ is the same quaternion in two time instants. Since in my computations I have functions of the single elements of $q_2$, it is important the sign of those elements. Then, I would like the quaternion that is "more similar to" $q_2$. Roughly speaking, if my quaternion is [1 0 0 0] and then I have [0.99 0 0 0.1411] and [-0.99 0 0 -0.1411], I would like to choose the first one.

I have search in the web without a clear answer to this question, even because there can be cases in which the difference is not so evident as in the example that I provided above. Many thanks in advance for your reply.

Regards, Neostek

$\endgroup$
  • $\begingroup$ Why don't you just minimize the angles between the axis of your reference quaternion and the axes of the two candidates? $\endgroup$ – rschwieb Nov 14 '17 at 16:13
  • $\begingroup$ Leave me a comment if you have more questions. $\endgroup$ – Zhuoran He Nov 16 '17 at 16:37
0
$\begingroup$

The product between two quaternions $q_1=(a_1,\vec{v}_1)$ and $q_2=(a_2,\vec{v}_2)$ is given by

$$q_1q_2=(a_1a_2-\vec{v}_1\cdot\vec{v}_2,a_1\vec{v}_2+a_2\vec{v}_1+\vec{v}_1\times\vec{v}_2).$$

Therefore, the inner product between $q_1$ and $q_2$ as $\mbox{4D}$ vectors in $\mathbb{R}^4$ is given by

$$\mathrm{Re}(q_1q_2^*)=a_1a_2+\vec{v}_1\cdot\vec{v}_2=|q_1||q_2|\cos\theta,$$

where $\,|q_1|=|q_2|=1\,$ for unit quaternions. Therefore, the inner product $\,\mathrm{Re}(q_1q_2^*)=\cos\theta\,$ gives the cosine of the angle $\,\theta\,$ between $\,q_1\,$ and $\,q_2\,$ as vectors in $\,\mathbb{R}^4$. You can then make the choice based on which angle $\,\theta\,$ is smaller. One can prove that the law of cosine

$$|q_1-q_2|^2=|q_1|^2+|q_2|^2-2\,\mathrm{Re}(q_1q_2^*)$$

applies to quaternions as well. Therefore the angle reflects the distance for unit quaternions. Note that $\,(q_1q_2^*)^*=q_2q_1^*\,$ (not $\,q_1^*q_2\,$ in general because quaternion product does not commute).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.