I think the simpler way to explain the half angle is the analogy with rotations in a plane represented by complex numbers.
If we identify a vector $\vec v=(a,b)^T$ with a complex number $z=a+bi$, then a rotation about the origin of $\vec v$ by an angle $\theta$ is given by $R_{\theta}(z)= e^{\theta i } z$ . The idea of Hamilton was to find some generalization of this formula for three-dimensional rotations.
The quaternions can do such a generalization identifying a $3D$-vector with a pure imaginary quaternion $\mathbf{v}$ and using a pure imaginary versor $\mathbf{u}$ to identify the axis of rotation. But when we calculate the product $e^{\theta \mathbf{u}}\mathbf{v}$ we see that the result is not a pure imaginary quaternion , so it's not a vector.
We can find a pure imaginary quaternion only if we perform the multiplication $e^{\theta \mathbf{u}}\mathbf{v}e^{-\theta \mathbf{u}}$ , and this really represents a rotation about the axis $ u$, but the angle of rotation is now $2 \theta$.
- When representing 2D rotations using complex numbers, we can apply a rotation to an arbitrary vector using the dot product operation. Why
does the dot product not work for quaternions as well (and instead we
need the Hamilton product $qvq^{-1}$ to apply the 3D rotation
represented by $q$ to a vector $v$)?
In 2D space, a vector $v$ can be rotated by "multiplying" it with a complex number "rotor" like $R = \cos(\theta) + i \sin(\theta)$, so that $v' = R v$, where $v'$ is the rotated vector. But the product involved is not the dot product, which would produces a real number, it is the complex number's product. That means, you really need to treat $v$ as a complex number.
Also notice that if you define your complex number rotor as $R = \cos(\theta/2) + i \sin(\theta/2)$ then you can rotate your vector using the sandwich product $v' = R v R^{-1}$. So it also works in 2D.
The fact that $R v$ doesn't work with quaternions is because the quaternion product is non-commutative. But there are some special cases in which quaternions allows the one-side product $R v$, such as when the rotation axis of $R$ is perpendicular to the vector $v$. So for instance if you define a quaternion like $R = \cos(\theta) - (0,0,k) \sin(\theta)$ which is a rotation around the $k$ axis and a pure quaternion $v = 0 + (i, 0, 0)$ which is in the $ij$ plane, then you can actually do $v' = R v$
$$R v = (\cos(\theta) - k \sin(\theta)) i$$
$$R v = i \cos(\theta) - k i \sin(\theta)$$
$$R v = i \cos(\theta) + j \sin(\theta)$$
Which is the usual formulae for rotation in a plane.
- When representing two different 3D rotations $r_1$ and $r_2$ using quaternions $q_1$ and $q_2$, one can use the geodesic distance between
the two quaternions as a measure of how far apart from each other
(different) are those rotations:
$$\alpha=arccos(2*<q_1,q_2>^2 -1).$$
... So what does 𝛼 represent in term of points in the 3D space? I am having a hard time understanding how does closeness between quaternions translate to closeness in the 3D space.
An intuition about $\alpha$ can be built using the case when $q_1$ and $q_2$ do commute under the quaternion product i.e., $q_1 q_2 = q_2 q_1$. That is the case when the axis of rotation of $q_1$ and $q_2$ are the same.
So for instance $q_1 = \cos(\theta_1/2) - b \sin(\theta_1/2)$ and $q_2 = \cos(\theta_2/2) - b \sin(\theta_2/2)$.
The product $q_1 q_2 = \cos((\theta_1 + \theta_2)/2) - b \sin((\theta_1 + \theta_2)/2)$
The action of our new combined quaternion $q_1 q_2$ on a 3D vector $v$ of unit length laying in the plane that is orthogonal to axis $b$ (i.e. $v \cdot b = 0$) can be measured as a change in the angle:
$$\theta_1 + \theta_2 = \cos^{-1}(v \cdot ((q_1 q_2) v (q_1 q_2)^{-1}))$$
Note that in certain cases this might not be true. For instance if the sum of $\theta_1 + \theta_2 = 2\pi$ then $v$ doesn't change its orientation, so the net rotation angle would be zero.
Now, the product $q_1 q_2^{-1}$ is of our special interest because it measures the angle difference of the quaternions i.e., it allow us to compare them and tell whether they are close of far apart.
$$q_1 q_2^{-1} = \cos((\theta_1 - \theta_2)/2) - b \sin((\theta_1 - \theta_2)/2)$$
The action of that quaternion $q_1 q_2^{-1}$ on a 3D vector $v$ of unit length laying in the plane that is orthogonal to axis $b$ can be measured as a change in the angle:
$$\theta_1 - \theta_2 = \cos^{-1}(v \cdot ((q_1 q_2^{-1}) v (q_1 q_2^{-1})^{-1}))$$
That is very similar to the previous case, but now we are interested on measuring the angle difference i.e., the $\alpha$ that you compute, which would be equal to $\theta_1 - \theta_2$ in this example.
Now, things get complicated when $q_1$ and $q_2$ don't commute. If $q_1$ and $q_2$ don't commute then that means they have different axis of rotation. That is the most common case in 3D. In that case the product $q_1 q_2^{-1}$ produces a quaternion with a new axis of rotation that accounts for the total rotation, that axis is different from both $q_1$ and $q_2$ axis. The angle of rotation of $q_1 q_2^{-1}$ (i.e., the $\alpha$) is not the subtraction of angles of rotation of $q_1$ and $q_2$ but a new angle which combines both but about the new axis of rotation. Although, we still can compute that angle, which is the $\alpha$ that you have computed, but it doesn't corresponds to a measure that you usually take from 3D vectors (in general, you would need to project your 3D vectors to the rotation plane and measure the angle there).
The $\alpha$ that you are computing is a distance measure of how far apart are two quaternions, but it's not the angle of rotation between $q_1 v q_1^{-1}$ and $q_2 v q_2^{-1}$ as you wish. However, what is true in general is that "close" quaternions corresponds to "close" rotations. Although sometimes far apart quaternions e.g., with opposite sign, can lead to close rotations as well. So careful is needed w.r.t sign.
Best Answer
Quaternions with the restriction that you can only use a single rotation plane work just fine still. They would take the form
$$q = \cos \frac{\theta}{2} + v \sin \frac{\theta}{2}$$
for some unit quaternion $v$.
When we restrict ourselves to a single rotation plane, that means we consider rotating vectors (pure imaginary quaternions) that are perpendicular to the rotation axis (described by $v$).
It is not difficult to show that, for any vector $a \perp v$,
$$\exp(v \theta/2) a \exp(-v \theta/2) = \exp(v\theta) a = a \exp(-v \theta)$$
This is why complex rotations don't usually use the double-sided form that rotations in 3d use: it's simply unnecessary.
From a programming standpoint, the double-sided form requires more floating point operations; this is strictly unnecessary in 2d.
Of course, only the double-sided form of rotation generalizes beyond 3d.
With all this in mind, I think you can consider using quaternions with some terms zeroed out, but notice that when translating quaternions to 2d, the rotation axis is perpendicular to the vectors being rotated. This means you can't zero out particular components regardless of whether they're vectors being rotated or quaternions being used to rotate them.
Furthermore, I think the matter of ensuring some terms remain identically zero could be an issue. You might be better off converting to complex and then converting back when you're done.