How to get a part of a quaternion? e.g. get half of the rotation of a quaternion?

4.8k Views Asked by At

if I have a quaternion which describes an arbitrary rotation, how can I get for example only the half rotation or something like 30% of this rotation?

Thanks in advance!

3

There are 3 best solutions below

1
On BEST ANSWER

I believe what you're looking for are exponent and logarithm formulas for quaternions, which can be found on the Wikipedia page on quaternions. The Wikipedia page even gives a formula for raising a quaternion to an arbitrary power, which is exactly what you want. If your original rotation is given by $q$, and you want to take 30% of this rotation, you simply take $q^{0.3}$.

0
On

I can't be sure what formula for a general rotation you have, but it should depend upon an angle through which you are rotating. Doesn't your formula look something like $R(\Theta, u)$ where $\Theta$ is the angle of rotation, and $u$ is a unit vector which tells you the axis of rotation?

If so, you just replace $\Theta$ with $p\Theta$ where $p$ is just some decimal form of a percentage.

0
On

See here: Wikipedia on quaternions and rotations.

To the benefit of all: One can encode a rotation $T\in SO(3)$ as a quaternion $q+ q_1 i+ q_2 j + q_3 k$ of norm $1$. Here $q=\cos{\theta\over2}$ and $(q_1,q_2,q_3)=\sin{\theta\over2}{\bf a}$, where ${\bf a}$ denotes the unit vector on the axis of $T$ and $\theta$ the rotation angle of $T$. The essential point is that to the composition of two rotations $T_1$, $T_2\in SO(3)$ corresponds the product of the two associated norm-$1$ quaternions.

As to your question: From the given quaternion $(q,{\bf q})$ you can read off the rotation angle $\theta$ (there are some sign conventions to observe) and the axis ${\bf a}$. For $\sqrt{T}$ (or another fraction of $T$) the axis is the same, but you will need a pocket calculator to compute $\cos\theta'$ and $\sin\theta'$, where $\theta'$ denotes the desired fraction of $\theta$.