# Maths - choosing bases - 3D

When we are working on Geometric algebras based on a 3 dimensional vector algebra, what choices do we have? For instance, we can try changing the following aspects of the algebra:

• Do the basis vectors square to +ve, -ve or zero?
• Choosing the order of the bivector and trivector basis vectors (e1^e2 or e2^e1 etc.)?
• Do the components, not on the leading diagonal, anti-commute?

## Choosing the order of the bivector and trivector basis vectors

When we looked at the 2D case the order of the dimensions was reasonably obvious, we just used e,e1,e2,e12 which corresponds with counting in binary code order: 00,01,10,11. This gives a scalar, then 2 vectors then a bivector.

We can also do that with Clifford algebras based on 3D vectors, in which case we get the following order:

 000 001 010 011 100 101 110 111 e e1 e2 e12 e3 e13 e23 e123 scalar vector vector bivector vector bivector bivector trivector

This bit order has a lot of advantages, but it also has disadvantages, in that it mixes up the vectors with the bivectors. If we want to keep all the vectors together and all the bivectors together in scalar, vector, bivector, trivector order then we need to modify the order slightly:

 000 001 010 100 011 -101 110 111 e e1 e2 e3 e12 e31 e23 e123 scalar vector vector vector bivector bivector bivector trivector

There are advantages to both of these:

• bit order is better for computer generation, especially for generating the type (but not sign) of table from Kronecker product as explained here.
• blade order is better for relating to existing algebras like vector cross product.

So unfortunately we will need to use both of these orderings on this site, therefore please be sure to check which is being used. The Cayley tables for both types are:

 a*b b.e b.e1 b.e2 b.e12 b.e3 b.e13 b.e23 b.e123 a.e e e1 e2 e12 e3 e13 e23 e123 a.e1 e1 e e12 e2 e13 e3 e123 e23 a.e2 e2 -e12 e -e1 e23 -e123 e3 -e13 a.e12 e12 -e2 e1 -e e123 -e23 e13 -e3 a.e3 e3 -e13 -e23 e123 e -e1 -e2 e12 a.e13 e13 -e3 -e123 e23 e1 -e -e12 e2 a.e23 e23 e123 -e3 -e13 e2 e12 -e -e1 a.e123 e123 e23 -e13 -e3 e12 e2 -e1 -e
 a*b b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123 a.e e e1 e2 e3 e12 e31 e23 e123 a.e1 e1 e e12 -e31 e2 -e3 e123 e23 a.e2 e2 -e12 e e23 -e1 e123 e3 e31 a.e3 e3 e31 -e23 e e123 e1 -e2 e12 a.e12 e12 -e2 e1 e123 -e e23 -e31 -e3 a.e31 e31 e3 e123 -e1 -e23 -e e12 -e2 a.e23 e23 e123 -e3 e2 e31 -e12 -e -e1 a.e123 e123 e23 e31 e12 -e3 -e2 -e1 -e

## Further Issues for Blade Order

The bases are the vectors e1, e2 and e3, however the higher level products such as e2^e3, e1^e3 and e1^e2 is also as a basis for the bivectors.

The question is what order do we choose for this (which is equivalent to saying what sign do we use since e1^e2=-e2^e1).

The methodology used for choosing the order of these indexes is explained here.

We calculate the bivector by drawing the matrix formed by putting the basis vectors side-by-side, then taking its minor by removing the row associated with its own coordinate type and removing the column of the basis vector not associated with.

We have to be very careful with signs as the sign alternates with terms as follows:

 e1x e2x e3x e1y e2y e3y e1z e2z e3z
=e1x
 e2y e3y e2z e3z
-e2x
 e1y e3y e1z e3z
+e3x
 e1y e2y e1z e2z

To choose bivectors for 3D multivectors we start with the psudoscalar e1^e2^e3 which represents the whole determinant. We then split it up, taking into account the sign, as above:

e1^e2^e3 = e1 * e2^e3 - e2 * e1^e3 + e3 * e1^e2

Where the sign is negative then we invert the order, which gives the basis bivectors as follows:

• e2^e3 is the minor of e1
• e3^e1 is the minor of e2
• e1^e2 is the minor of e3

## Do the basis vectors square to +ve, -ve or zero?

Lets try out the following combinations:

 category isomorphic to G 3,0,0 Vectors square to +ve. G+ 3,0,0 Even subalgebra quaternions G 0,3,0 Vectors square to -ve. G 0,0,3 Vectors square to zero.

The multiplication table for each of these is derived below:

### Vectors square to +ve: G 3,0,0

This corresponds to normal 3 dimensional space. It can be fully defined by the multiplication table as follows:

 a*b b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123 a.e e e1 e2 e3 e12 e31 e23 e123 a.e1 e1 e e12 -e31 e2 -e3 e123 e23 a.e2 e2 -e12 e e23 -e1 e123 e3 e31 a.e3 e3 e31 -e23 e e123 e1 -e2 e12 a.e12 e12 -e2 e1 e123 -e e23 -e31 -e3 a.e31 e31 e3 e123 -e1 -e23 -e e12 -e2 a.e23 e23 e123 -e3 e2 e31 -e12 -e -e1 a.e123 e123 e23 e31 e12 -e3 -e2 -e1 -e

how these results were generated.

As the above link explains, the table was generated by a computer program from the laws of vector algebra, that is: non-equal vector bases anti-commute and equal vector bases square to scalars (+,- or 0 as required). We could have done this manually as follows:

 e1 e1 = 1 e2 e2 = 1 e2 e2 = 1 because we have chosen to let vectors square to a positive scalar value. e1 e2 = e12 e2 e1 = -e12 e2 e3 = e23 e3 e2 = -e23 e3 e1 = e31 e1 e3 = -e31 because we need vector multiplication to anticommute so that the vectors will cancel out when a general vector is squared: (a e1 + b e2+ c e3)2 = a2 + b2+ c2. e1 e12 = e2 e1 e31 = -e1 e13 = -e3 e1 e23 = e123 e1 e123 = e23 e2 e12 = -e1 e2 e31 = -e2 e13 = e123 e2 e23 = e3 e2 e123 = -e13= e31 e3 e12 = -e132= e123 e3 e31 = e1 e3 e23 = -e233= -e2 e3 e123 = -e1323= e12 these are derived from the results above using these rules. e12 e1 = -e2 e31 e1 = e3 e23 e1 = -e213= e123 e123 e1 = -e1213 = e23 e12 e2 = e1 e31 e2 = -e132 = e123 e23 e2 = -e3 e123 e2 = -e13= e31 e12 e3 = e123 e31 e3 = -e1 e23 e3 = e2 e123 e3 = e12 these are derived from the results above using these rules. e12 e12 = -e1221= -1 e12 e31 = e2113= e23 e12 e23 = e13= -e31 e12 e123 = -e21123 = -e3 e31 e12 = e32= -e23 e31 e31 = -e1331= -1 e31 e23 = e1332= e12 e31 e123 = e323 = -e2 e23 e12 = e3221= e31 e23 e31 = e21= -e12 e23 e23 = -e2332= -1 e23 e123 = e23312 = e212 = -e1 these are derived from the results above using these rules. e123 e12 = e13221= e131= -e3 e123 e31 = e121= -e2 e123 e23 = -e12332= -e1 e123 e123 = -e123 e132= e123 e312= -e123 e321= -1

### Even Subalgebra of G 3,0,0 (quaternion): G+ 3,0,0

To take the even sub-algebra we take the even grades: 0=scalars, 2=bivectors and remove the other grades to give:

 a*b b.e b.e12 b.e31 b.e23 a.e e e12 e31 e23 a.e12 e12 -e e23 -e31 a.e31 e31 -e23 -e e12 a.e23 e23 e31 -e12 -e

how these results were generated.

This is the algebra of quaternions where:

• e = 1 = scalar part
• e12=i
• e31=j
• e23=k

### Vectors square to -ve: G 0,3,0

This can be fully defined by the multiplication table as follows:

 a*b b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123 a.e e e1 e2 e3 e12 e31 e23 e123 a.e1 e1 -e e12 -e31 -e2 e3 e123 -e23 a.e2 e2 -e12 -e e23 e1 e123 -e3 -e31 a.e3 e3 e31 -e23 -e e123 -e1 e2 -e12 a.e12 e12 e2 -e1 e123 -e -e23 e31 -e3 a.e31 e31 -e3 e123 e1 e23 -e -e12 -e2 a.e23 e23 e123 e3 -e2 -e31 e12 -e -e1 a.e123 e123 -e23 -e31 -e12 -e3 -e2 -e1 e

how these results were generated.

As the above link explains, the table was generated by a computer program from the laws of vector algebra, that is: non-equal vector bases anti-commute and equal vector bases square to scalars (+,- or 0 as required). We could have done this manually as follows:

 e1 e1 = -1 e2 e2 = -1 e2 e2 = -1 because we have chosen to let vectors square to a negitive scalar value. e1 e2 = e12 e2 e1 = -e12 e2 e3 = e23 e3 e2 = -e23 e3 e1 = e31 e1 e3 = -e31 because we need vector multiplication to anticommute so that the vectors will cancel out when a general vector is squared: (a e1 + b e2+ c e3)2 = -a2 - b2- c2. e1 e12 = -e2 e1 e31 = -e1 e13 = e3 e1 e23 = e123 e1 e123 = -e23 e2 e12 = e1 e2 e31 = -e2 e13 = e123 e2 e23 = -e3 e2 e123 = e13= -e31 e3 e12 = -e132= e123 e3 e31 = -e1 e3 e23 = -e233= e2 e3 e123 = -e1323= -e12 these are derived from the results above using these rules. e12 e1 = e2 e31 e1 = -e3 e23 e1 = -e213= e123 e123 e1 = -e1213 = -e23 e12 e2 = -e1 e31 e2 = -e132 = e123 e23 e2 = e3 e123 e2 = e13= -e31 e12 e3 = e123 e31 e3 = e1 e23 e3 = -e2 e123 e3 = -e12 these are derived from the results above using these rules. e12 e12 = -e1221= -1 e12 e31 = e2113= -e23 e12 e23 = -e13= e31 e12 e123 = -e21123 = -e3 e31 e12 = -e32= e23 e31 e31 = -e1331= -1 e31 e23 = e1332= -e12 e31 e123 = -e323 = -e2 e23 e12 = e3221= -e31 e23 e31 = -e21= e12 e23 e23 = -e2332= -1 e23 e123 = e23312 = -e212 = -e1 these are derived from the results above using these rules. e123 e12 = e13221= -e131= -e3 e123 e31 = -e121= -e2 e123 e23 = -e12332= -e1 e123 e123 = -e123 e132= e123 e312= -e123 e321= +1

### Vectors square to 0: G 0,0,3

This can be fully defined by the multiplication table as follows:

 a*b b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123 a.e e e1 e2 e3 e12 e31 e23 e123 a.e1 e1 0 e12 -e31 0 0 e123 0 a.e2 e2 -e12 0 e23 0 e123 0 0 a.e3 e3 e31 -e23 0 e123 0 0 0 a.e12 e12 0 0 e123 0 0 0 0 a.e31 e31 0 e123 0 0 0 0 0 a.e23 e23 e123 0 0 0 0 0 0 a.e123 e123 0 0 0 0 0 0 0

how these results were generated.

As the above link explains, the table was generated by a computer program from the laws of vector algebra, that is: non-equal vector bases anti-commute and equal vector bases square to scalars (+,- or 0 as required). We could have done this manually as follows:

 e1 e1 = 0 e2 e2 = 0 e2 e2 = 0 because we have chosen to let vectors square to zero. e1 e2 = e12 e2 e1 = -e12 e2 e3 = e23 e3 e2 = -e23 e3 e1 = e31 e1 e3 = -e31 because we need vector multiplication to anticommute so that the vectors will cancel out when a general vector is squared: (a e1 + b e2+ c e3)2 =0. e1 e12 =0 e1 e31 = 0 e1 e23 = e123 e1 e123 = 0 e2 e12 = 0 e2 e31 = -e2 e13 = e123 e2 e23 = 0 e2 e123 = 0 e3 e12 = -e132= e123 e3 e31 = 0 e3 e23 = 0 e3 e123 = 0 these are derived from the results above using these rules. e12 e1 = 0 e31 e1 = 0 e23 e1 = -e213= e123 e123 e1 = 0 e12 e2 = 0 e31 e2 = -e132 = e123 e23 e2 = 0 e123 e2 =0 e12 e3 = e123 e31 e3 = 0 e23 e3 = 0 e123 e3 = 0 these are derived from the results above using these rules. e12 e12 = 0 e12 e31 = 0 e12 e23 =0 e12 e123 = 0 e31 e12 = 0 e31 e31 = 0 e31 e23 = 0 e31 e123 = 0 e23 e12 = 0 e23 e31 = 0 e23 e23 = 0 e23 e123 = 0 these are derived from the results above using these rules. e123 e12 = 0 e123 e31 = 0 e123 e23 = 0 e123 e123 = 0 e123 e312= -e123 e321= 0

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.      Clifford Algebra to Geometric Calculus: A Unified Language for Mathematics and Physics (Fundamental Theories of Physics). This book is intended for mathematicians and physicists rather than programmers, it is very theoretical. It covers the algebra and calculus of multivectors of any dimension and is not specific to 3D modelling.