In (very much) earlier articles, I described:

- using complex numbers for rotating, translating, and scaling the plane
- using Clifford algebras for rotating, translating, and scaling the plane, and
- using quaternions for rotating, translating, and scaling three-dimensional space.

Today, it is time to tackle rotating, translating, and scaling three-dimensional space using Clifford algebras.

### Three dimensions now instead of two

Back when we used Clifford algebras to rotate, translate, and scale the plane, we were using the two-dimesional Clifford algebra. With the two-dimensional Clifford algebra, we represented two-dimensional coordinates as . It shouldn’t surprise you then to find we’re going to represent three-dimensional coordinates as .

As before, we will have and . Similarly, we will have . In the two-dimesional case, we showed that . By the same logic as the two-dimensional case, we also find that and . We could potentially also end up multiplying , , and all together. This isn’t going to be equal to any combination of the other things we’ve seen so we’ll just leave it written .

Using the identities like for , we can shuffle any combination of , , and so that all of the indexes are in order. We may have to change the sign, but we won’t have to change anything else. For example:

Recall that was a bivector

. Here, we have added one more vector: , two more bivectors: and , and a trivector . The general element of the three-dimensional Clifford algebra looks like:

For the two-dimensional Clifford algebra, we had terms in the general element—the Clifford algebra is an algebra on a four-dimensional vector space. For the three-dimensional Clifford algebra, we have terms in the general element. If we backtrack here to the one-dimensional Clifford algebra, we see that the general element looks like meaning there are terms in the general element of the one-dimensional Clifford algebra. If we backtrack even further, we see that for a zero-dimensional Clifford algebra, the general element looks like meaning there is term in the general element of the zero-dimensional Clifford algebra.

This relation is going to hold for Clifford algebras in general. If is a non-negative integer, then there are terms in the general element of the -dimensional Clifford algebra. The -dimensional Clifford algebra is an algebra over a -dimensional vector space. There are degrees of freedom, if you like. We won’t be using all of those degrees of freedom because we are restricting ourselves to scaling, rotating, and translating vectors.

### Translating and Scaling

We are going to represent our points in three-dimensional space using the vector portion of our three-dimensional Clifford algebra . So, a point with coordinates will be .

Just as we did in the two-dimensional case, we can scale three-space away from the origin by a factor of just by multiplying each point by the real number . So, .

Similarly, we can translate the point by units in the x-direction, units in the y-direction and units in the z-direction by creating a translation vector and adding it to each point so that .

### Rotating three-space

When we used Clifford algebras to rotate the xy-plane, we let and let . Then, to rotate a point we multiplied out .

Three-dimensional space contains the xy-plane. We want to be able to rotate things in the xy-plane in just the same way we did in the two-dimensional case. We even spent some time in another article verifying that these rotations in the xy-plane would leave coordinates on other axises alone.

Rotating space with the quaternions, we found that could rotate around an arbitrary axis. If we pick an axis that points from the origin to where , then we used the quaternion (where and just like we used the two-dimensional Clifford algebra rotation. We let and . Then, we could rotate a point by evaluating .

With Clifford algebras, we don’t mush together translations and rotations both into the vector portion. We keep translations in the vector portion, but we move rotations to the bivector portion. We’re going to rotate around the axis from the origin to (where by an angle by letting

and where and . Then, we can rotate a point just by multiplying on the left by and on the right by so that .

I wrote a little differently here than I did above for the general element. If I were to keep totally consistent with what I wrote above, I should write . Certainly, we can add in any order, so it is totally cosmetic to write it one way or the other. I chose to keep , , and in order rather than , , and . I also chose to keep them all positive at the expense of using instead of .

Before we get into why we used instead of for the , let’s look at the case of rotating around the z-axis. In that case, would be . This should degenerate to exactly what we had for rotating the xy-plane with Clifford algebras. Sure enough, if we plop those values in for , , and we find that exactly as we had in the two-dimensional case. Bonus!

Why should the end up with instead of ? The way that our axis system worked with the quaternions is that we had the x-axis going east, the y-axis going north, and the z-axis going up. If we are going to rotate around the y-axis, then we need to rotate the z-axis toward the x-axis as opposed to rotating the x-axis toward the z-axis. The rotation around the z-axis takes the x-axis toward the y-axis. This is represented with the . is the x-axis and it is moving toward the y-axis . If we reverse the order, , then we are moving the y-axis toward the x-axis. Using our transposing tricks, . Thus, rotating the y-axis toward the x-axis is just negatively rotating the x-axis toward the y-axis. In better English, that is: rotating the y-axis toward the x-axis is just rotating the x-axis away from the y-axis.

If we had chosen instead of , then we would have messed up how our axises fit together. To keep the axis of rotation obvious, we used . We can still rewrite the result in any form we like. If we were given , that would be a rotation around the axis from the origin to the point . I think it’s more intuitive to write as because then you can read the axis of rotation right off of the coefficients.

### Next time

Next time, we’ll tackle rotating, scaling, and translating hyperspace (four-dimensional space).