# Maths - Dual Quaternion Multiplication

## 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 1ε i iε j jε k kε a.1ε 1ε 0 iε 0 jε 0 kε 0 a.i i iε -1 -1ε k kε -j -jε a.iε iε 0 -1ε 0 kε 0 -jε 0 a.j j jε -k -kε -1 -1ε i iε a.jε jε 0 -kε 0 -1ε 0 iε 0 a.k k kε j jε -i -iε -1 -1ε a.kε kε 0 jε 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 1ε iε jε kε a.i i -1 k -j iε -1ε kε -jε a.j j -k -1 i jε -kε -1ε iε a.k k j -i -1 kε jε -iε -1ε a.1ε 1ε iε jε kε 0 0 0 0 a.iε iε -1ε kε -jε 0 0 0 0 a.jε jε -kε -1ε iε 0 0 0 0 a.kε kε jε -iε -1ε 0 0 0 0

If we let:

• 1 = e
• i = e31
• j = e23
• k = e12
• 1ε = -e123
• iε = e2
• jε = e1
• kε = e3

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?

(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 + (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* (a - i c - j e - k g)*(ab + cd +ef +gh))

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*a*(ab + cd +ef +gh)
iε = -d*(aa + cc +ee +gg) + 2*c*(ab + cd +ef +gh)
jε = -f*(aa + cc +ee +gg) + 2*e*(ab + cd +ef +gh)
kε = -h*(aa + cc +ee +gg) + 2*g*(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)

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