Maths - Isometry Properties of 3d Multivectors

Prerequisites

This page compares quaternion multiplication and orthogonal matrix multiplication as a means to represent rotation.

If you are not familiar with this subject you may like to look at the following pages first:

Description

The transformations that we want to model, such as rotation and translation, are reversible so we need a mathematical algebra that is also reversible, that is we need to always find the inverse, so:

if ,

multivector a translates b into c

then we need to be able to find the inverse a-1 which translates c into b

one condition which meets this requirement is:

a a†=scalar

as explained here.

So using the multiplication table here and multiplying out the terms of a a† gives:

e = +e*e+e1*e1+e2*e2+e3*e3+e12*e12+e31*e31+e23*e23+e123*e123

e1 = +e*e1+e1*e+e2*e12-e3*e31+e12*e2-e31*e3+e23*e123+e123*e23

e2 = +e*e2-e1*e12+e2*e+e3*e23-e12*e1+e31*e123+e23*e3+e123*e31

e3 = +e*e3+e1*e31-e2*e23+e3*e+e12*e123+e31*e1-e23*e2+e123*e12

e12 = -e*e12+e1*e2-e2*e1-e3*e123+e12*e-e31*e23+e23*e31+e123*e3

e31 = -e*e31-e1*e3-e2*e123+e3*e1+e12*e23+e31*e-e23*e12+e123*e2

e23 = -e*e23-e1*e123+e2*e3-e3*e2-e12*e31+e31*e12+e23*e+e123*e1

e123 = -e*e123-e1*e23-e2*e31-e3*e12+e12*e3+e31*e2+e23*e1+e123*e

canceling out positive and negative terms and adding equal terms (and drop the a. prefix sice all terms refer to the same multivector) gives:

scalar = e*e+e1*e1+e2*e2+e3*e3+e12*e12+e31*e31+e23*e23+e123*e123
0 = 2*e*e1+2*e2*e12-2*e3*e31+2*e23*e123
0 = 2*e*e2-2*e1*e12+2*e3*e23+2*e31*e123
0 = 2*e*e3+2*e1*e31-2*e2*e23+2*e12*e123
0 = 0
0 = 0
0 = 0
0 = 0

Luckily the last 4 equations cancel out completely and we can simplift the other equations as follows:

scalar = e2+e12+e22+e32+e122+e312+e232+e1232
0 = e*e1+e2*e12-e3*e31+e23*e123
0 = e*e2-e1*e12+e3*e23+e31*e123
0 = e*e3+e1*e31-e2*e23+e12*e123

One solution to these equations would be to let:

This gives:

scalar = 2*e2+2*e12+2*e22+2*e32
0 = e*e1+e2*e3-e3*e2-e1*e
0 = e*e2-e1*e3+e3*e1-e2*e
0 = e*e3+e1*e2-e2*e1-e3*e

so 3 more equations cancel out and we are left with:

scalar = 2*e2+2*e12+2*e22+2*e32

If we let scalar = 2 then e, e1, e2 and e3 have a unit length.

If turns out that this quantity (now consisting of 4 scalar values) has the same properties as a quaternion and so if we make it unit length as suggested it can represent a rotation transformation. However, if we want to represent an isometry (rotation and translation), we need to goto 4D multivectors as described here.

Pure Rotation

If all ex, ey, ez and exyz input terms set to zero gives:

e = a.e * b.e 0 0 0 - a.exy * b.exy - a.ezx * b.ezx - a.eyz * b.eyz 0
ex = 0 0 0 0 0 0 0 0
ey = 0 0 0 0 0 0 0 0
ez = 0 0 0 0 0 0 0 0
exy = a.exy * b.e 0 0 0 + a.e * b.exy + a.eyz * b.ezx - a.ezx * b.eyz 0
ezx = a.ezx * b.e 0 0 0 - a.eyz * b.exy + a.e * b.ezx + a.exy * b.eyz 0
eyz = a.eyz * b.e 0 0 0 + a.ezx * b.exy - a.exy * b.ezx + a.e * b.eyz 0
exyz = 0 0 0 0 0 0 0 0

If we include exyz back in we get:

e = a.e * b.e 0 0 0 - a.exy * b.exy - a.ezx * b.ezx - a.eyz * b.eyz - a.exyz * b.exyz
ex = 0 0 0 0 0 -0 - a.exyz * b.eyz - a.eyz * b.exyz
ey = 0 0 0 0 0 - a.exyz * b.ezx 0 - a.ezx * b.exyz
ez = 0 0 0 0 - a.exyz * b.exy 0 0 - a.exy * b.exyz
exy = a.exy * b.e 0 0 0 + a.e * b.exy + a.eyz * b.ezx - a.ezx * b.eyz 0
ezx = a.ezx * b.e 0 0 0 - a.eyz * b.exy + a.e * b.ezx + a.exy * b.eyz 0
eyz = a.eyz * b.e 0 0 0 + a.ezx * b.exy - a.exy * b.ezx + a.e * b.eyz 0
exyz = a.exyz * b.e 0 0 0 0 0 0 + a.e * b.exyz


Pure Translation

If all exy, ezx and eyz input terms set to zero gives:

e = a.e * b.e + a.ex * b.ex + a.ey * b.ey + a.ez * b.ez 0 0 0 - a.exyz * b.exyz
ex = a.ex * b.e + a.e * b.ex 0 0 0 0 0 0
ey = a.ey * b.e 0 + a.e * b.ey 0 0 0 0 0
ez = a.ez * b.e 0 0 + a.e * b.ez 0 0 0 0
exy = 0 + a.ey * b.ex - a.ex * b.ey + a.exyz * b.ez 0 0 0 + a.ez * b.exyz
ezx = 0 - a.ez * b.ex + a.exyz * b.ey + a.ex * b.ez 0 0 0 + a.ey * b.exyz
eyz = 0 + a.exyz * b.ex + a.ez * b.ey - a.ey * b.ez 0 0 0 + a.ex * b.exyz
exyz = a.exyz * b.e 0 0 0 0 0 0 + a.e * b.exyz

 

Further Reading


metadata block
see also:

 

Correspondence about this page

Book Shop - Further reading.

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.

flag flag flag flag flag flag 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.

 

Terminology and Notation

Specific to this page here:

 

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2017 Martin John Baker - All rights reserved - privacy policy.