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?
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 + (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= |
|
+e |
|
= |
|
+e |
|