This is a generic concept but one that is fairly easy to construct. It works for any number of dimensions and you can have three types of dimensions: ones that square to 1, ones that square to -1 and ones that square to 0.
What specific directions square to is called their signature, so if you have a direction a, that squares to 1, a*a=1, that is a positive signature. If a direction b squares to -1, b*b=-1, that's a negative signature, and finally, a direction c squares to 0, c*c, that is a 0 or degenerate signature. A space with those three directions would have signature +,-,0. For most purposes, you'll choose signatures without a 0 but it depends on your applications.
So for instance, for two dimensions x,y, with "signature" -,- , you construct:
A base scalar, name it
1
The two base directions
x
y
and now you combine them by multiplication:
1*1 = 1
1*x = x
1*y = y
x*1 = x
x*x = -1
x*y = xy (this represents a directed unit piece of a plane)
y*1 = y
y*x = -xy (the same unit piece of a plane but "pointing" in the opposite direction)
y*y = -1
ok, so now you have one new object: xy
1*xy = xy
x*xy = (x*x)*y = -1*y = -y
y*xy = -y*yx = -(y*y)*x = x
xy*1 = xy
xy*x = -yx*x = -y*(x*x) = y
xy*y = x*(y*y) = -x
xy*xy = -yx*xy = -y*(x*x)*y = y*y = -1
If you have more directions, you will get more different objects, so for instance, for 3D:
1 (scalar / 0 - vector)
x (1-vector)
y
z
xy - represents a unit xy plane segment (2-vectors)
yz - represents a unit yz plane segment
zx - represents a unit zx plane segment
xyz - represents a unit volume space segment (3-vector)
Geometric interpretation of 1-,2- and 3-vectors: (∧-notation explained below)
The arrows in the surfaces represent the orientation.
x, y and z are what makes a typical vector which, in the Geometric Algebra formalism, is called a 1-vector
1, the scalar, is called a 0-vector
the plane segments are called 2- and the volume segment 3-vectors respectively. For higher dimensional space you'll get more and more types of vectors.
Unlike what you would do in a normal vector algebra, you can add any type of vector together, which also means, adding a scalar to a vector is absolutely allowed. Adding them just keeps them together, precisely like a complex number is the addition of a real and an imaginary number.
That way you get a multivector: a+b x+c y+d z+e xy+f yz+g zx+h xyz
Because you can write:
xy*xyz=x*y*x*y*z = -x*y*y*x*z = x*x*z = -z
and so on, it's very convenient to shorten the highest vector-type, in this case the 3-vector, to just "i", so your elements become:
1, x, y, z, ix, iy, iz, i
This already suggests, that i is something like a complex unit and if you do the math, you can easily show that for this 3D-case, ix, iy and iz are equivalent to what would be called i, j and k in a quaternion.
This way, the multivector above becomes: a+bx+cy+dz+fxi+gyi+ezi+hi (I changed the order to correspond to the new naming)
I used one rule here that I didn't mention previously, namely, that vector components generally anti-commute, so:
x*y = - y*x
Also, I mentioned that you can have directions that square to 1 rather than -1. This has applications, for instance, in Minowski Spacetime which has the following rules:
t*t=1 (time direction)
x*x=y*y=z*z=-1
all other multiplications between them anticommute
Back to the 2D example for simplicity:
We have:
1,x,y,xy
(where x²=-1 and y²=-1)
so a generic number here would be:
a+bx+cy+dxy
and squaring it would be done like so:
(a+bx+cy+dxy)² =
a² + abx + acy + adxy + bxa + (bx)² + bxcy + bxdxy + cya + cybx + (cy)² + cydxy + dxya + dxybx + dxycy + (dxy)² =
a² + abx + acy + adxy + abx - b² + bcxy - bdy + acy - bcxy - c² + cdx + adxy + bdy - cdx - d² =
a²-b²-c²-d² + x (ab+ab+cd-cd) + y (ac-bd+ac+bd)+ xy (ad+bc-bc+ad) =
a²-b²-c²-d² + 2ab x + 2ac y +2ad xy
So the vectorial parts and the bivectorial part are scaled by a and doubled, while the scalar part is reduced in size by the other three.
Now let's see the same thing if you take x and y as squaring to 1:
(a+bx+cy+dxy)² =
a² + abx + acy + adxy + bxa + (bx)² + bxcy + bxdxy + cya + cybx + (cy)² + cydxy + dxya + dxybx + dxycy + (dxy)² =
a² + abx + acy + adxy + bxa + b² + bxcy + bxdxy + cya + cybx + c² + cydxy + dxya + dxybx + dxycy - d² =
a² + b² + c² - d² + 2ab x + 2ac y + 2ad xy
This is the result I previously showed already.
Now this is all nice and such, but why is it actually useful?
It turns out, every part of this has a very clear interpretation and it avoids a ton of problems while significantly shortening your usual notation.
For example, if you look at a cross product, it has a whole lot of problems.
First of all, it is exclusively defined in 3D. To apply it in 2D you need to artificially introduce a third coordinate and in 4D it doesn't work at all anymore and you need to find other ways to do the same thing.
And if that wasn't bad enough, there are certain applications where you actually have to consider, that the cross product doesn't give you your average vector. It gives you a so called "axial vector" which behaves just fine under a normal rotation but if you reflect it, its sign changes.
A usual vector won't change sign under reflection.
Now, in Geometric Algebra, you can take the product x*y = xy which gives you a directed piece of a plane. This holds the same information as a cross product but has the additional benefits of working always (in any number of dimensions) and not being broken under reflections.
I previously mentioned that there are three types of product in this formalism.
The product I used thus far is the so called vector product and it simply is worked out like you'd work out the product of a complex number or quaternion, as entirely defined by how to multiply the directional components of a vector.
The other two products, called the wedge and inner product respectively, are defined by the vector product but to show them off, I'll need two different generic vectors. For simplicity, I'll stick to two dimensions (and the components square to one) :
v1 v2 = (ax+by)(cx+dy) = ax cx + ax dy + by cx + by dy =
ac + bd + (ad-bc) xy
v2 v1 = (cx+dy)(ax+by) = cx ax + cx by + dy ax + dy by =
ac + bd + (bc-ad) xy
Note that, if you multiply two pure 1-vectors (what you are used to as being vectors), you'll end up with only a scalar (0-vector) and a bi-vector (2-vector) part and no usual 1-vectors at all.
Now from this, the inner product is defined as:
v1.v2 = v2.v1 = (v1v2 + v2v1)/2 = (ac + bd + (ad-bc) xy + ac + bd + (bc-ad) xy)/2 =
(2ac+2bd + xy (ad-ad+bc-bc))/2 = ac+bd
so the inner product of a 1-vector is a scalar. You may recognize this as the dot-product. It gives the cosine of the angle between the two vectors times their lengths and in case the two vectors are normal on each other, it will be zero.
Geometric interpretation of the inner product:
And the wedge-product is defined as:
v1∧v2 = -v2∧v1 = (v1v2 - v2v1)/2 = (ac + bd + (ad-bc) xy - (ac + bd + (bc-ad) xy))/2 =
(ac-ac+bd-bd+xy (ad+ad-bc-bc))/2 = (ad-bc) xy
so the wedge product of a 1-vector is a bivector. There is no exact equivalent to this in normal vector-algebra, but if you compare it to the cross-product, it is very similar to that and as such it gives the signed area of the parallelogram spanned by the two input vectors. Thus it is like a normal vector, except that it doesn't behave oddly under reflections and you can do this very same thing in any number of dimensions without running into problems.
Comparison (only possible in 3D) between the Wedge product and the Cross product:
So the inner and the wedge product are just the symmetric and anti-symmetric parts of the full vector product. But unlike the scalar or cross product which are exclusively defined for (1-)vectors, you can take the same definitions and apply them to multi-vectors. And if you delve a bit into the matter, it turns out that these extended definitions also have very real geometric interpretations. - This is one of the main strengths of this formalism: It allows incredible amounts of abstractions and yet everything has a clear, tangible geometric interpretation that you could even intuitively draw in 2D or 3D if you want.
Now, the precise relationship between the wedge product in 3D and the cross product is:
a x b = i a ∧ b, where i, in this case, would be xyz and a and b are (1-)vectors.
By simple multiplication, you can try for yourself and conclude, that using i like this turns a bivector (2-vector; which results from a ∧ b) into a vector (which is what you expect to get from a x b).
TO BE CONTINUED (in another post)