Geometric Algebra is a line of Mathematics which treats vectors as first-class citizens rather than arrows defined by coordinates on a specific coordinate system.
For a flat Euclidean space, the most interesting aspects of Geometric Algebra can be understood 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 a scalar multiple of \( \v{x} \), such as \( 5\v{x} \) or \( -3.141579\v{x} \) or, more generally,
\[\v{a} = \vcOne{a}\]
where \( a_x \) is a real number (\( a_x \in \reals \)).
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 = |a_x|^2 \]
as we would expect.
To describe vectors in two dimensions we need to add a second basis vector \( \v{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}) \\ &= a_x^2 + a_y^2 + 2a_x a_y(\frac{1}{2}(\v{xy} + \v{yx})) \end{aligned} $$So the square of the magnitude of the vector, \( |\v{a}|^2 \), will only equal the square of the vector if \( \v{xy}+ \v{yx} \) is also a scalar number. If you are familiar with the Law of cosines you may recognise the formula and in particular that \( \frac{1}{2}(\v{xy} + \v{yx}) \) is likely to be \( \cos(\theta) \) where \( \theta \) is the angle between the two vectors. For now we will simply note that if,
\[ \v{xy} = -\v{yx} \]
then,
\[ \v{a}^2 = a_x^2 + a_y^2 \]
which is exactly what we are used to - Pythagoras' theorem. So for now let us make the tentative definition of orthogonal vectors: orthogonal vectors anti-commute. For any two vectors \( \v{x} \) and \( \v{y} \), the vectors are orthogonal if they anti-commute so that \( \v{xy} = -\v{{yx}} \).
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}\).
Solution
\[ \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} \ne \v{ba}\) nor is it anti-commutative, as \(\v{ab} \ne -\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 bi-vector (the \(\v{xy}\) term, which is not scalar, nor is it a vector, more on this later).
Based on the above, we can add or subtract the two products to end up with either a scalar or bivector respectively:
\[ \begin{aligned} \frac{1}{2}(\v{ab} + \v{ba}) &= (a_x b_x + a_y b_y) \\ \frac{1}{2}(\v{ab} - \v{ba}) &= \v{xy}(a_x b_y - a_y b_x) \end{aligned} \]
Of particular interest is that the bivector \(\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 two-dimensional 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.