## 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$$

Let

$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

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

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$$