Maths - 2D Rotations and Translations using multivectors

Prerequisites

You may want to review vectors:

Representing 2D transforms

To represent isometry transforms in 2D we only need one scalar value to represent rotation and we need 2 scalar values (a 2D vector) to represent translation. A multivector based on 2D vectors therefore has enough values to represent a 2D isometries , for instance e12 might hold the rotation value and (e1,e2) hold the translation value, but does the algebra work out? Can we do useful operations on the multivector using such a notation? I have tried below but, as you can see, I cant find a way to do it. Also, on this page, I have tried to find a transformation based on 2D that is reversable - again, it does not work out.

We want to find which multivectors are 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:

result:

e = scalar = e * e + e1 * e1 + e2 * e2 + e12 * e12
e1 = 0 = e1 * e + e * e1 - e12 * e2 - e2 * e12
e2 = 0 = e2 * e + e12 * e1 + e * e2 + e1 * e12
e12 = 0 = e12 * e + e2 * e1 - e1 * e2 - e * e12

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

rearrange equation 2 to give

e12 = e*e1/e2

substitute in equation 3:

e*e2 =-e1*e12

e*e2 =-e1*e*e1/e2

e2*e2 =-e1*e1

e1 = √(-e22)

e1 = i e2

so perhaps these equations don't have a scalar solution? or have I made an error?

Applying a multivector to a point

To calculate the rotated point from the original position of the point.

Pout=a * Pin * a -1

 

In some sources I have seen this transform shown as:
A(b) =Ab(A#)-1

where:

a# = Main involution sumi(-1)ia<i>

Such transformations satisfy A(b) |A(c) = b |c and are known as Lorentz transforms, or as isometries of inner product- |
If A is even then A(b) = AbA-1 and we have A(bc)) = A(b)A(c) .
If A is a k-versor then A# = (-1)kA so that A(bc) = (-1)kA(b)A(c).

 

 

since we cant always invert a we will use a† instead of a -1 which gives:

Pout=a * Pin * a†

expanding out the terms gives:

out.e=a.e*(in.e*a.e+in.e1*a.e1+in.e2*a.e2+in.e12*a.e12)+a.e1*(in.e*a.e1+in.e1*a.e+in.e2*a.e12+in.e12*a.e2)+a.e2*(in.e*a.e2-in.e1*a.e12+in.e2*a.e-in.e12*a.e1)-a.e12*(-in.e*a.e12+in.e1*a.e2-in.e2*a.e1+in.e12*a.e)
out.e1=a.e*(in.e*a.e1+in.e1*a.e+in.e2*a.e12+in.e12*a.e2)+a.e1*(in.e*a.e+in.e1*a.e1+in.e2*a.e2+in.e12*a.e12)-a.e2*(-in.e*a.e12+in.e1*a.e2-in.e2*a.e1+in.e12*a.e)+a.e12*(in.e*a.e2-in.e1*a.e12+in.e2*a.e-in.e12*a.e1)
out.e2=a.e*(in.e*a.e2-in.e1*a.e12+in.e2*a.e-in.e12*a.e1)+a.e1*(-in.e*a.e12+in.e1*a.e2-in.e2*a.e1+in.e12*a.e)+a.e2*(in.e*a.e+in.e1*a.e1+in.e2*a.e2+in.e12*a.e12)-a.e12*(in.e*a.e1+in.e1*a.e+in.e2*a.e12+in.e12*a.e2)
out.e12=a.e*(-in.e*a.e12+in.e1*a.e2-in.e2*a.e1+in.e12*a.e)+a.e1*(in.e*a.e2-in.e1*a.e12+in.e2*a.e-in.e12*a.e1)-a.e2*(in.e*a.e1+in.e1*a.e+in.e2*a.e12+in.e12*a.e2)+a.e12*(in.e*a.e+in.e1*a.e1+in.e2*a.e2+in.e12*a.e12)

simplifying the terms and combineing the 'in' terms gives:

out.e= ( a.e*a.e +a.e1*a.e1 +a.e2*a.e2 +a.e12*a.e12)*in.e +( 2*a.e*a.e1 -2*a.e2*a.e12)*in.e1 +( 2*a.e*a.e2 +2*a.e1*a.e12)*in.e2
out.e1= ( 2*a.e*a.e1 +2*a.e2*a.e12)*in.e +( a.e*a.e +a.e1*a.e1 -a.e2*a.e2 -a.e12*a.e12)*in.e1 +( 2*a.e*a.e12 +2*a.e1*a.e2)*in.e2
out.e2= ( 2*a.e*a.e2 -2*a.e1*a.e12)*in.e +( -2*a.e*a.e12 +2*a.e1*a.e2)*in.e1 +( a.e*a.e -a.e1*a.e1 +a.e2*a.e2 -a.e12*a.e12)*in.e2
out.e12= ( a.e*a.e -a.e1*a.e1 -a.e2*a.e2 +a.e12*a.e12)*in.e12

We want to represent a transform of a vector, in other words we want to transform (in.e1,in.e2) into (out.e1,out.e2)

So if we let in.e=0 and in.e12=0 we get:

out.e= ( 2*a.e*a.e1 -2*a.e2*a.e12)*in.e1 +( 2*a.e*a.e2 +2*a.e1*a.e12)*in.e2
out.e1= ( a.e*a.e +a.e1*a.e1 -a.e2*a.e2 -a.e12*a.e12)*in.e1 +( 2*a.e*a.e12 +2*a.e1*a.e2)*in.e2
out.e2= ( -2*a.e*a.e12 +2*a.e1*a.e2)*in.e1+( a.e*a.e -a.e1*a.e1 +a.e2*a.e2 -a.e12*a.e12)*in.e2

In order to represent a rotation in 2D we would need to get the equations into this form:

R=
cos theta -sin theta
sin theta cos theta

so top left = bottom right,

a.e*a.e +a.e1*a.e1 -a.e2*a.e2 -a.e12*a.e12 = a.e*a.e -a.e1*a.e1 +a.e2*a.e2 -a.e12*a.e12

a.e1*a.e1 -a.e2*a.e2 = -a.e1*a.e1 +a.e2*a.e2

a.e1*a.e1 = a.e2*a.e2

a.e1 = a.e2 or -a.e2

also top right = -bottom left,

2*a.e*a.e12 +2*a.e1*a.e2 = -( -2*a.e*a.e12 +2*a.e1*a.e2)

a.e*a.e12 +a.e1*a.e2 = a.e*a.e12 - a.e1*a.e2

a.e1*a.e2 = - a.e1*a.e2

a.e1*a.e2 = 0

So this does not seem to work, as this is only true when a.e1 = a.e2 = 0


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 Geometric Algebra for Physicists - This is intended for physicists so it soon gets onto relativity, spacetime, electrodynamcs, quantum theory, etc. However the introduction to Geometric Algebra and classical mechanics is useful.

 

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.