logo back up home forward   further reading more topics »

Maths - Dual Quaternion Multiplication

Prerequisites

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

Description

The Dual of a Quaternion

This can be used to represent the group of spatial displacements SE(3).

To do this we form a 'motor' as explained on this page. A motor is an abbreviation of "moment and vector" (to represent sums of spins) It can represent a combination of translation and rotation, known as screw motion or rigid motion.

We could either start with a quaternion and make each element of the quaternion a dual. This means that there are now 8 elements, the 4 quaternion elements (real, i, j and k) and their duals (ε, iε, jε and kε). This gives an 8x8 multiplication as shown here:

a*b
b.1 b.1ε b.i b.iε b.j b.jε b.k b.kε
a.1 1 i j k
a.1ε 0 0 0 0
a.i i -1 -1ε k -j -jε
a.iε 0 -1ε 0 0 -jε 0
a.j j -k -kε -1 -1ε i
a.jε 0 -kε 0 -1ε 0 0
a.k k j -i -iε -1 -1ε
a.kε 0 0 -iε 0 -1ε 0

Or we could start with a dual and make each element of the dual a quaternion, this gives the same table (only the rows and columns are in a different order) as shown here:

a*b
b.1 b.i b.j b.k b.1ε b.iε b.jε b.kε
a.1 1 i j k
a.i i -1 k -j -1ε -jε
a.j j -k -1 i -kε -1ε
a.k k j -i -1 -iε -1ε
a.1ε 0 0 0 0
a.iε -1ε -jε 0 0 0 0
a.jε -kε -1ε 0 0 0 0
a.kε -iε -1ε 0 0 0 0

If we let:

here:

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 0 0 e2 -e3 e123 0
a.e2 e2 0 0 0 -e1 e123 e3 0
a.e3 e3 0 0 0 e123 e1 -e2 0
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 0 0 0 -e3 -e2 -e1 0

For comparison the 3D multivector outer multiplication table is as follows:

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

So this is quite different?

Inverse of dual quaternion

Dividing quaternions is done by multiplying top and bottom by the conjugate, can we do the same with dual quaternions?

How do we define the conjugate of dual quaternions?

start with this dual quaternion:

(a + ε b) + i (c + ε d) + j (e + ε f) + k (g + ε h)

multiplying by the quaternion conjugate:

(a + ε b) - i (c + ε d) - j (e + ε f) - k (g + ε h)

gives the dual number:

(a + ε b)2 + (c + ε d)2 + j(e + ε f)2 + (g + ε h)2

multiplying out the terms gives:

(aa + ε 2ab) + (cc + ε 2cd) + (ee + ε 2ef) + (gg + ε 2gh)

(aa + cc +ee +gg) + ε 2* (ab + cd +ef +gh)

now get rid of ε term by multiplying by:

(aa + cc +ee +gg) - ε 2* (ab + cd +ef +gh)

which gives:

(aa + cc +ee +gg)2

so we first multiplied by: (a + ε b) - i (c + ε d) - j (e + ε f) - k (g + ε h)

and then: (aa + cc +ee +gg) - ε 2* (ab + cd +ef +gh)

so the total multiplier is:

((a + ε b) - i (c + ε d) - j (e + ε f) - k (g + ε h))*((aa + cc +ee +gg) - ε 2* (ab + cd +ef +gh))

giving:

((a - i c - j e - k g) + ε (b - i d - j f - k h))*((aa + cc +ee +gg) - ε 2* (ab + cd +ef +gh))

multiply out:

((a - i c - j e - k g)*(aa + cc +ee +gg) + ε (b - i d - j f - k h)*(aa + cc +ee +gg) - 2* (ab + cd +ef +gh)*(b - i d - j f - k h)

so the terms are:

real = a*(aa + cc +ee +gg)
i = -c*(aa + cc +ee +gg)
j = -e*(aa + cc +ee +gg)
k = -g*(aa + cc +ee +gg)
ε = b*(aa + cc +ee +gg) - 2*b*(ab + cd +ef +gh)
iε = -d*(aa + cc +ee +gg) + 2*d*(ab + cd +ef +gh)
jε = -f*(aa + cc +ee +gg) + 2*f*(ab + cd +ef +gh)
kε = -h*(aa + cc +ee +gg) + 2*h*(ab + cd +ef +gh)

So is this how to define a conjugate for a dual quaternion??

Representing Spatial displacements

X = Q x Q*

We can write them as 4D dual vectors:

Q=
qx
qy
qz
qw
+e
q0x
q0y
q0z
q0w

=
sin(t/2) Sx
sin(t/2) Sy
sin(t/2) Sz
cos(t/2)
+e
sin(t/2) S0x + (d/2) cos(t/2) Sx
sin(t/2) S0y + (d/2) cos(t/2) Sy
sin(t/2) S0z+ (d/2) cos(t/2) Sz
-(d/2)sin(t/2)

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.

cover us uk de jp fr ca Quaternions and Rotation Sequences.

 

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.

cover us uk de SuSE Linux 10.3. Operating system with a wide range of applications including Open Office. A good distribution for developers as it contains KDevelop. Java, Mono, etc. Can install itself as a dual-boot system with an existing Windows OS if required. For information about installing it see this page.

Can you help?

Please send me any improvements to here. I would appreciate ideas to make the pages more useful including error correction, ideas for new pages, improvements to wording. It helps if you quote the full URL of the page.

 

Terminology and Notation

Specific to this page here:

 

program

I am working on a project which uses these principles, if you would like to help me with this you are welcome to join in, here:

http://sourceforge.net/projects/mjbworld/

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

Copyright (c) 1998-2008 Martin John Baker - All rights reserved.