Quaternions as rotations

Let $p$ be a 3d point represented as a quaternion using its homogeneous coordinates, $p = [w, \mathbf{v}]$ and let $q$ be any non-zero quaternion then

Theorem: The product $qpq^{-1}$ takes $p = [w, \mathbf{v}]$ to $p’ = [w, \mathbf{v’}]$

Before proving this theorem let’s make the following observation, we can express $q$ as a multiplication of a scalar quaternion $s$ and a unit quaternion $\mathbf{U}q$, $q = s\mathbf{U}q$, then $qpq^{-1}=s\mathbf{U}qp(s\mathbf{U}q)^{-1}=s\mathbf{U}qp\mathbf{U}q^{-1}s^{-1}$, because the scalar multiplication is commutative $\mathbf{U}qp\mathbf{U}q^{-1}ss^{-1}=\mathbf{U}qp\mathbf{U}q^{-1}$ so the product doesn’t change irrespective of whether $q$ is a unit quaternion or not, finally notice that $\mathbf{U}q^{-1} = \mathbf{U}q^*$ so we can write the action as $qpq^*$ note that from now on, $q$ is assumed to be a unit quaternion without loss of generality

Next, let’s prove that the scalar part $qpq^{*}$ is the same as the scalar of $p$ (we can use the formula to find the scalar component of a quaternion)

$$ \begin{align*} 2S(qpq^*) &= qpq^* + (qpq^*)^* \\ &= qpq^* + qp^*q^* \\ &= q(p + p^*)q^* \\ &= q2S(p)q^* \\ &= 2qS(p)q^* \\ &= 2[s_q, \mathbf{v_q}][s_p, \mathbf{0}][s_q, -\mathbf{v_q}] \\ &= 2[s_ps_q, s_p\mathbf{v_q}][s_q, -\mathbf{v_q}] \\ &= 2[s_ps_q^2 - s_p (\mathbf{v_q} \cdot -\mathbf{v_q}), -s_ps_q\mathbf{v_q} + s_ps_q\mathbf{v_q} + s_p\mathbf{v_q \times v_q}] \\ &= 2[s_ps_q^2 + s_p\norm{v}^2, \mathbf{0}] \\ &= 2[s_ps_q^2 + s_p(1 - s_q^2), \mathbf{0}] \quad \text{because of the definition of a unit quaternion} \\ &= 2[s_p, \mathbf{0}] \\ &= 2S(p) \end{align*} $$

Therefore the scalar part of $p$ remains constants in the operation i.e. if $p = [w, \mathbf{v}]$ then $p’ = qpq^{*} = [w, \mathbf{v’}]$, and because multiplication preserves norms then $\norm{p} = \norm{p’}$ and also $\norm{v} = \norm{v’}$ $\blacksquare$

Theorem: if $\norm{q} = 1$ then $q = [\cos{\theta}, \unit{v} \sin{\theta}]$ acts to rotate around unit axis $\unit{v}$ by $2 \theta$


$$ v_0 = [0, \mathbf{v_0}] \quad \norm{v_0} = \norm{\mathbf{v_0}} = 1 \\ v_1 = [0, \mathbf{v_1}] \quad \norm{v_1} = \norm{\mathbf{v_1}} = 1 $$

Be two pure quaternions (which can be represented in 3d space), and an arbitrary quaternion $q$ which has the form

$$ \begin{align} q &= v_1v_0^* \label{q} \\ &= [0, \mathbf{v_1}][0, -\mathbf{v_0}] \nonumber \\ &= [\mathbf{v_0 \cdot v_1}, \mathbf{v_0 \times v_1}] \label{q3d} \end{align} $$

Let $\theta$ be the angle between $\mathbf{v_0}$ and $\mathbf{v_1}$ then $\mathbf{v_0 \cdot v_1} = \cos{\theta}$, also let $\mathbf{v_0 \times v_1} = \sin{\theta} \unit{v}$, then \eqref{q} becomes

$$ \begin{equation} \label{q2} q = [\cos{\theta}, \sin{\theta} \unit{v}] \end{equation} $$

Let’s prove first that the product $v_2 = qv_0q^{*}$ lies in the same plane as $\mathbf{v_0}$ and $\mathbf{v_1}$, we do so by proving first that the product $v_2v_1^*$ has the same components (dot and cross products) as $v_1v_0^*$

$$ \begin{align*} v_2v_1^* &= (qv_0q^*) v_1^* \\ &= (q v_0 (v_1v_0^*)^*) v_1^* \\ &= (q v_0 v_0 v_1^*) v_1^* \\ &= q (v_0v_0)(v_1^*v_1^*) \\ &= q (-1)(-1) \quad \text{since they're unit quaternions they square to $-1$} \\ &= v_1v_0^* \end{align*} $$

Then if $v_2v_1^* = v_1v_0^$ that means that $v_2=qv_0q^$ lies in the same plane as $v_0$ and $v_1$, also $v_2$ forms an angle of $\theta$ with $v_1$, furthermore $\mathbf{v_1} \times \mathbf{v_2} = \unit{v} \sin{\theta}$, finally if the angle between $v_0$ and $v_1$ is $\theta$ then the angle between $v_0$ and $v_2$ is $2\theta$ which confirms what’s seen on the image above

Furthermore the same can be said of $q$ acting on $v_1$, let $v_3 = qv_1q^{*}$ then

$$ \begin{align*} v_3v_2^* &= (qv_1q^*)(qv_0q^*)^* \\ &= (q(qv_0)q^*)(qv_0q^*)^* \quad \text{by finding $v_1$ from \eqref{q}} \\ &= q (qv_0q^*)(qv_0q^*)^* \\ &= q \\ &= v_1v_0^* \end{align*} $$

Now any vector $p$ can be represented in terms of the base $v_0$, $v_1$ and $\unit{v}$ e.g. $p = s_1\mathbf{v_0} + s_1\mathbf{v_1} + s_2\unit{v}$, we’ve seen what $q$ does to $v_0$ and $v_1$ so let’s see what it does to $\unit{v}$

Before computing $q\unit{v}q^{*}$ see that

$$ \begin{align*} q\unit{v} &= [\cos{\theta}, \sin{\theta} \unit{v}][0, \unit{v}] \\ &= [\ldots, \ldots - \sin{\theta} (\unit{v} \times \unit{v})] \\ &= [\ldots, \ldots - \mathbf{0}] \end{align*} $$

So $q\unit{v}$ is a commutative operation because the cross product is the only term that makes the quaternion operation non-commutable and in $q\unit{v}$ that therm is zero therefore $q\unit{v}q^ * = \unit{v}qq^ * = \unit{v}$ which means that $q$ does not modify $\unit{v}$

Thus the action of $q$ on any vector $p$ is a rotation around $\unit{v}$ by $2\theta$ $\blacksquare$

Quaternion rotation facts

Let $q_1$ be a quaternion which rotates the pure quaternion $p_1$ to $p_2$ and also let $q_2$ be a quaternion which rotates the vector $p_2$ to $p_3$ then $p_3$ will have the form

$$ \begin{align*} p_3 &= q_2p_2q_2^* \\ &= q_2(q_1p_1q_1^*)q_2^* \\ &= (q_2q_1)p_1(q_1^*q_2^*) \\ &= (q_2q_1)p_1(q_2q_1)^* \end{align*} $$

Therefore the combination of rotation $q_1$ followed by $q_2$ is given by $q = q_2q_1$

When the rotations $q_1, q_2, \ldots, q_n$ are applied to the pure quaternion $p$ the result is equal to $qpq^*$ where $q = q_n q_{n-1} \ldots q_2 q_1$