To understand geometry of vectors, we need a good way to compare directions, and a way to rotate vectors. It was hard to find a good way to algebraically represent differences between directions, and rotations. Lots of cumbersome and complicated formulas and methods were developed – which you may have suffered through in a high-school trigonometry class – before we finally found a clean and powerful way of thinking about it, that is also much more intuitive!

This article is a introduction to the important concepts and ideas for handling vector directions, with lots of visual representations of them. This will help us understand the pieces that go into the [geometric_product geometric product], which is a powerful way to manipulate these concepts algebraically. In turn, having the geometric product at hand will allow us to gain a more substantial understanding of the ideas introduced here. %note: Note that we are not using angles in this page, which is the typical way of thinking about the directions of vectors. Instead, we are using a closely related, but different, concept called a bivector. Bivectors allow us to see deeper facts about rotations more easily than angles will, and when the time is right, we will see exactly how angles fit in with the concepts presented here.%

# Comparing direction

What would it take to change the direction of $~$\mathbf a$~$ to match the direction of $~$\mathbf b$~$? We want our answer to be specific enough that we could use it to tell our friend exactly how to make the same change in direction.

It should not depend on the size of the vectors:

It should also be the same for vectors which have been rotated in the same direction:

And it should be able to work for vectors in three (or more) dimensions. So you should be able to tell your friend whether you want to change the direction of $~$\mathbf x$~$ to match $~$\mathbf y$~$, or to match $~$\mathbf z$~$:

Try thinking of a way to communicate this yourself before moving on.

%%hidden(Angle?):
An angle is a good way to describe the *size* of the difference between the directions of the two vectors, but by itself it is missing information about *which way* you would need to turn it to get the vectors to match. In two dimensions you can get away with using negative angles to represent this, but in three (or more) dimensions, it becomes clear that an angle by itself will not work.

%%

%%hidden(Show solution): We need to keep track of three things: the size of the turn we would need, the plane in which the turn takes place, and which way to turn it within the plane. Sound familiar? Considering the plane together with the direction of the turn in the plane as a 2-dimensional direction, we can make a vector! Here's a picture of one to describe the difference in direction from $~$\mathbf a$~$ to $~$\mathbf b$~$:

This is a different kind of vector from our vectors $~$\mathbf a$~$ and $~$\mathbf b$~$, so to keep things from getting confusing, we will call the new kind of vector a **bivector**. Since bivectors are a kind of vector, we can describe a bivector exactly by describing it in terms of a basis for bivector space! We'll see how all of this works below.
%%

## Bivectors

So how do bivectors work? A bivector is a new type of vector. Its size is its area, and its direction is a two-dimensional sort of direction that determines its orientation in space, along with which way it turns things.

The bivector $~$\mathbf B$~$ lies in the plane of your screen, and has a counter-clockwise orientation (i.e. it moves things in the opposite way that the hands of a clock move). We usually use a bold, upper-case letter for bivectors.

Bivectors are particularly important in three-dimensions, where there are many more directions that they could have:

The size of a bivector is its area, so the unit bivector has the area of a square with unit length sides:

We'll usually use $~$\mathbf I$~$ to write a unit bivector.

The negative of a bivector is a bivector with the same size and which lies in the same plane, but which turns things the opposite way. You can think of it like flipping a piece of paper over:

As with all types of vectors, the size and direction of a bivector are all there is to it! This means that bivectors do not have positions or shapes, since we do not keep track of that information anywhere. So since these bivectors have the same direction, and both have area 1, these are both the same bivector:

Similarly, rotating a bivector without changing the plane it lies in doesn't change it since its size and direction remain the same. So this bivector stays the same even though we're shaking it around:

We can add two bivectors to get another bivector. This is one place where doing things algebraically helps us a lot – it is kinda hard to visualize what the new bivector will look like. Here is one way to do it:

When two bivectors have the same (or opposite) direction though, it's a lot easier: addition can be done just by adding (or subtracting) the sizes of the two bivectors:

This is just the distributive law for scalars over vectors (in this case, bivectors) – can you see why?

### Bivector basis

If we have a basis of ordinary vectors, we can use these to create a basis for the bivectors that would be needed for vectors in that space. For any pair of basis vectors, we can use the bivector that describes the difference in direction of those two vectors.

In three dimensions, there are three possible pairs: $~$(\mathbf {x},\mathbf{y})$~$, $~$(\mathbf{y},\mathbf{z})$~$, and $~$(\mathbf{x},\mathbf{z})$~$. Here's the normalized basis we can construct from these pairs:

In two dimensions, there is only one pair $~$(\mathbf {x},\mathbf{y})$~$, and the space of bivectors is one-dimensional:

How many dimensions does bivector space have for for vectors in 4-dimensions?

%%hidden(Answer): It has 6-dimensions. If the basis for ordinary vectors in 4-dimensions is $~$\mathbf w$~$, $~$\mathbf x$~$, $~$\mathbf y$~$, $~$\mathbf z$~$, then the basis for the bivectors will be the bivectors for each of the pairs: $~$(\mathbf{w},\mathbf{x})$~$, $~$(\mathbf{w},\mathbf{y})$~$, $~$(\mathbf {w},\mathbf{z})$~$, $~$(\mathbf{x},\mathbf{y})$~$, $~$(\mathbf{x},\mathbf{z})$~$, and $~$(\mathbf{y},\mathbf{z})$~$.

The fact that it didn't have 4-dimensions, the way that the space of bivectors is 3-dimensional for vectors in 3-dimensions, confused mathematicians for a long time. In fact, while I was working on my math degree, I was taught that there was something special about three dimensions that made rotations work nicely in a way that just wasn't possible in other dimensions. %note: What made it hard was that these mathematicians didn't have a concept of a bivector, and so they were trying to fit the same information that goes into a bivector into an ordinary vector. This works fine for three-dimensions, using the cross product, but not so well for other dimensions.%

We now know that that's not true, and in geometric algebra, rotations work about as nicely for any dimension! The only thing that makes things tricky still is that we can't rely on our intuition for 4 or more dimensions the way we can for 2 and 3 dimensions – we have to trust the algebra to get things right. %%

Now that we know about bivectors, lets go back to seeing how we can use them to describe differences in direction. We can visualize the difference in direction between two vectors $~$\mathbf a$~$ and $~$\mathbf b$~$ by normalizing them, adding them both to the same point, and then using the area swept out by rotating one to match the other one. This area is what we'll use for the size of the bivector that represents the difference between these two directions.

The direction of the bivector will be the direction it would take to turn vector $~$\mathbf a$~$ to match the direction of $~$\mathbf b$~$. If we reverse the order, to describe the difference in direction from $~$\mathbf b$~$ to $~$\mathbf a$~$, then we'll use a bivector with the reverse direction:

We use the sizes of bivectors to describe how much of a rotation is needed. The most natural value to use is just the area of the piece of the unit circle. The unit circle has area $~$\pi$~$ (about $~$3.14$~$):

So we can use fractions of $~$\pi$~$ to say what fraction of a full turn is needed. %note: But isn't this half of what it should actually be?!? Well, it's true that the equivalent angle has a value (in radians) equal to twice the area of the bivector. While radians measure the *length* of the arc swept out, bivectors measure the *area* swept out – so rest assured that this is actually the right way to do it.% Here's a bivector with an area one-sixth of that of the unit circle:

A special amount of direction change is given by a bivector of size $~$\frac{\pi}{2}$~$. This bivector represents the difference in direction between a vector and its reverse:

One interesting property is that *any* bivector with size $~$\frac{\pi}{2}$~$ will represent this difference in direction. A similar thing happens for bivectors of size $~$0$~$ or size $~$\pi$~$ – any bivector of these sizes represents vectors with *no* difference in their direction, i.e. **parallel** vectors.

Even though vectors with opposite directions have the biggest possible difference in direction, it's still not going in a completely *new* direction, it is just going backwards from the original direction. There's another special size bivectors can have, which represents a change to a completely *new* direction, equally far from both the original vector and its reverse. This size is $~$\frac{\pi}{4}$~$:

There are lots of words for vectors that differ by a bivector of this size: we can say that the vectors are at **right angles** to each other, **perpendicular**, or **orthogonal**.

# Rotating vectors

When applied to vectors, scalars represent different actions we can do to a vector: the act of stretching a vector, or shrinking one, or reversing one, or erasing one, or leaving it alone.

We can depict scalar actions algebraically simply by multiplying the scalar to the vector.

Rotation is another action we can apply to vectors. Things that rotate other things are called **rotors**:

We usually will use a capital $~$R$~$ to write a rotor. Since bivectors can describe differences in direction, we can also use them to describe rotors. To make a rotor from the bivector $~$\mathbf B$~$, we use the letter $~$e$~$, like this: $~$R = e^{\mathbf B}$~$. %note: If you are familiar with [exponent exponents], you might notice that this is the same as exponential notation. We'll later see that there is a deep connection between rotors and exponents, which is the reason we use this notation!% Here are some examples of different bivectors, the rotors we make from them, and the action of the rotors on the same initial vector:

The same rotor can also act on different vectors, even vectors that don't lie in the same plane as the bivector. Sometimes, the action of the rotor on a certain vector is to do nothing at all!

The reason we don't use bivectors directly to represent rotors is that the rules for combining rotors are different from the rules for combining bivectors (which are just the Vector arithmetic rules). It doesn't make sense to use some sort of bivector multiplication, because if we have two rotors in the same direction, the size of the bivector for the combined rotor is the *sum* of the sizes of the bivectors for the two rotors, and not the product.

And it can't be bivector addition, since rotors are non-commutative:

In order to depict how rotor actions work algebraically, we'll first need to develop the [geometric_product geometric product]. In fact, getting rotors to work algebraically is an important part of what led to the development of the geometric product in the first place!

We're really close to having a basic grasp of all the ideas that go into the geometric product! We've learned in this page about the geometry of vector directions; the last thing we'll need is a geometric understanding of how the *sizes* of different vectors relate to each other.

Once we have the geometric product, we'll be able to take a deeper look at how rotors work.