Geometric Algebra is a line of Mathematics which treats vectors as first-class citizens, rather than arrows defined by coordinates on a coordinate system.

For a flat Euclidean space, Geometric Algebra can be derived from a single rule that the square of the magnitude of any vector \(\v{a}\) is equal to the square of the vector itself.

With this one rule we can introduce addition and multiplication of two-dimensional vectors, as well as a simple rotation.

The square of the magnitude of an arbitrary vector \(\v{a}\) is equal to the square of the vector itself:

\[ |\v{a}|^2 = \v{a}^2 \]

This is similar to the more familiar dot-product of a vector with itself defining the Euclidean magnitude-squared of a vector, but as we will see, much more powerful.

Starting with a single dimension, we define a normal basis vector \(\v{x}\) (bold will indicate a vector) as having a magnitude of one:

\[ \v{x}^2 = 1\]

Any other vector \(\v{a}\) within this single dimension can be represented as some multiple of \(\v{x}\), such as \(5\v{x}\) or \(-3.141579\v{x}\) or, more generally,

\[\v{a} = \vcOne{a}\]

Evaluating the magnitude-squared of \(\v{a}\) results in:

\[ \v{a}^2 = (\vcOne{a})^2 = \vcOne{a}\vcOne{a} = a_x^2\v{x}^2 = a_x^2 \]

as we would expect.

To describe vectors in two dimensions we need to add a second basis vector \(y\) with the similar property of unit-magnitude, so when multiplied by itself,

\[ \v{y}^2 = 1 \]

We also need to ensure that this second vector \(\v{y}\) is orthogonal to \(\v{x}\), though we don't yet know how to represent this orthogonality. Nonetheless, by defining a general two-dimensional vector \(\v{a}\) as

\[ \v{a} = \vcTwo{a} \]

we can derive orthogonality by using the rule that the magnitude-squared of any vector is equal to the vector squared, to evaluate that:

\[ \begin{aligned} \v{a}^2 &= (\vcTwo{a})(\vcTwo{a}) \\ &= a_x\v{x}a_x\v{x} + a_x\v{x}a_y\v{y} + a_y\v{y}a_x\v{x} + a_y\v{y}a_y\v{y} \\ &= a_x^2 + a_y^2 + a_x a_y(\v{xy} + \v{yx}) \end{aligned} \]

So we see that the square of the magnitude of the vector \(\v{a}\) - a scalar number - will only equal the square of the vector if

\[ \v{xy} = -\v{yx} \]

This then is the definition of orthogonal vectors - they are anti-commutative.

With this definition of orthogonality, we have

\[ \v{a}^2 = x^2 + y^2 \]

which is exactly what we are used to - Pythagoras' theorem.

The algebraic addition of two arbitrary two-dimensional vectors is straight forward,

\[ \begin{aligned} \v{a} + \v{b} &= (\vcTwo{a}) + (\vcTwo{b}) \\ &= (a_x + b_x)\v{x} + (a_y + b_y)\v{y} \\ &= \v{b} + \v{a} \end{aligned} \]

The order in which the vectors are added is not relevant which means that vectors are associative under addition (and subtraction), as \(\v{a} + \v{b} = \v{b} + \v{a}\).

See if you can calculate the magnitude-squared of

\[\v{a} + \v{b}\]

\[ \begin{aligned} (\v{a} + \v{b})^2 &= (\v{a} + \v{b})(\v{a} + \v{b}) \\ &= \v{a}^2 + \v{ab} + \v{ba} + \v{b}^2 \end{aligned} \]

We can't yet go any further as we haven't yet defined what a multiple of two general vectors means. But soon we'll see that our solution here is actually the law of cosines.

The geometric product of two vectors may be a little less familiar:

\[ \begin{aligned} \v{a} \v{b} &= (\vcTwo{a})(\vcTwo{b}) \\ &= a_x\v{x}b_x\v{x} + a_x\v{x}b_y\v{y} + a_y\v{y}b_x\v{x} + a_y\v{y}b_y\v{y} \\ &= a_x b_x + a_y b_y + a_x b_y \v{xy} + a_y b_x \v{yx} \\ &= a_x b_x + a_y b_y + \v{xy}(a_x b_y - a_y b_x) \\ \end{aligned} \]

While the reverse is,

\[ \v{ba} = a_x b_x + a_y b_y - \v{xy}(a_x b_y - a_y b_x) \]

The general vector product is not commutative, as \(\v{ab} \neq \v{ba}\) nor is it anti-commutative, as \(\v{ab} \neq -\v{ba}\). If you are familiar with the traditional vector dot and cross products, you may recognise \(\v{ab}\) as some combination of both, but what is relevant is that it is a combination of a scalar (a pure number) and a pseudo-scalar (the \(\v{xy}\) term, which is not scalar, nor is it a vector).

Based on the above, we can add or subtract the two products to end up with either a scalar or pseudo-scalar respectively:

\[ \begin{aligned} \v{ab} + \v{ba} &= 2(a_x b_x + a_y b_y) \\ \v{ab} - \v{ba} &= 2\v{xy}(a_x b_y - a_y b_x) \end{aligned} \]

Of particular interest is that the pseudo-scalar \(\v{xy}\) has the property that:

\[ (\v{xy})^2 = \v{xyxy} = -\v{xyyx} = -1 \]

It is worth noting briefly that the product of two vectors, \(\v{ab}\) appears to define a scale and rotation. We will look at this in more detail later, but we can already see that if \(\v{a}\) and \(\v{b}\) are perpendicular and have a magnitude of 1:

\[ \begin{aligned} \v{a} &= \v{x} \\ \v{b} &= \v{y} \end{aligned} \]

so that

\[ \v{ab} = \v{xy}\]

then this vector product will rotate any other vector \(\v{c}\). To simplify things, let's multiply the unit vector \(\v{x}\):

\[ \begin{aligned} \v{abx} &= \v{xyx} \\ &= -\v{xxy} \\ &= -\v{y} \\ \v{xy}(-\v{y}) &= -\v{x} \\ \v{xy}(-\v{x}) &= -\v{xyx} \\ &= \v{xxy} \\ &= \v{y} \\ \v{xy(y)} &= \v{x} \\ \end{aligned} \]

But we will first need to understand Euler's formula to appreciate this rotation in its general form.