I understand how bivectors can be used to represent rotations in 2 and 3 dimensions, where we start with a normalized bivector which defines the plane of rotation and an angle through which to rotate points. (I'm assuming rotations about the origin because it's simpler to understand).
I also understand that in 4+ dimensions, bivectors are not necessarily "simple" (they cannot be represented by a single wedge product of vectors). Unfortunately, this shift in complexity happens after I'm able to visualize the rotations, so I'm having trouble extending the notion to higher dimensions. I know there are single and double rotations in 4 dimensions (Wikipedia). I think, but am not sure, that these cover the cases where the bivector of the rotation is simple or not?
So here's my thought for randomly sampling rotations in higher dimensions (without having to generate massive matrices and factor them):
- Generate a bivector $B$ by sampling the standard basis coefficients (which I think in $n$ dimensions there should be $n \choose 2$ of) from the surface of a hypersphere (so that the coefficients are normalized)
- Generate an angle $\theta$ in $[0, 2\pi)$
- Build the rotor $R = e^{B/2}$ associated with the two (interior part $\cos(\theta/2)$ and exterior parts $\sin(\theta/2) B$)
- Rotating a vector $v$ is accomplished by doing the geometric product $R v R^{-1}$, where $R^{-1}$ simply has the coefficients of the the exterior part negated
Is this a good approach? Am I misunderstanding something fundamental? My main sources for learning were this great interactive post and the Wikipedia page on bivectors. My main goal is for doing random rotations in Euclidean spaces, but it would be very cool if this approach could be extended to more general manifolds.
The exponential of an arbitrary bivector $B$ in a $n$-D geometric algebra is a multivector called a versor. A versor is an operator that transforms a vector to a vector, or the (sub-)space as a whole. In a nutshell, versors represents orthogonal transformations.
As a multivector, a versor is represented as a sum of k-vectors. We call it an odd versor if k is odd and even versor if k is even. If we consider the algebra of sub-spaces (i.e., lines and planes passing through the origin) then odd versors represents reflections and even versors represents rotations.
You want to construct even versors. That means, to construct a rotor the exponential must be a 2-blade (2-blade is not the same as 2-vector). Since 2-blades coincide with bivectors in 2-D and 3-D, you don't need to care about those distinctions in those dimensions. But in 4 and more dimensions that is not the case. However, Riesz shows that in the Euclidean space $R^{n,0,0}$ (the space of your interest) a rotor can be expressed as the exponential of an arbitrary bivector. The reason is that in that n-dimensional Euclidean space, an arbitrary bivector can be written as the sum of $commuting$ 2-blades.
Also, in a Euclidean $R^{n,0,0}$ space, a rotor is the geometric product of an even number of unit vectors. So you can also do this to generate random rotors.