Conjugate
When we were discusing the quaternion conjugate we found that it had at least 3 useful properties:
- (q1 q2)† = q2† q1† In this way we can change the order of the multipicands.
- q * q† = a2 + b2+ c2 + d2 = real number. Multiplying a quaternion by its conjugate gives a real number. This makes the conjugate useful for finding the multiplicative inverse. For instance, if we are using a quaternion q to represent a rotation then conj(q) represents the same rotation in the reverse direction.
- Pout = q * Pin * q† We use this to calculate a rotation transform.
Can we define a conjugate for dual quaternions that has these properties?
There are multiple definitions for the conjugate of a dual quaternion:
- Q† = r† + ε d†
- Q† = r - ε d
- Q† = r† - ε d†
where:
- Q = the dual quaternion
- Q† = the conjugate of the dual quaternion
- r = a quaternion
- d = another quaternion which forms the dual part of the dual quaternion.
The type of conjugate that we use depends on what we want it to do:
type of conjugate | use of this type |
Q† = r† + ε d† | reversing multiplicands (Q1 Q2)† = Q2† Q1† |
Q† = r - ε d | |
Q† = r† - ε d† | translation Pout = Q * Pin * Q† |
The first of these has this properties:
(Q1 Q2)† = Q2† Q1†
So if :
Q = a + b i + c j + d k + e ε + f iε + g jε + h kε
then:
Q† = a - b i - c j - d k + e ε - f iε - g jε - h kε
We can show that (Q1 Q2)† = Q2† Q1† by expanding out the terms as follows:
(Q1 Q2)† = ((r1 + ε d1)*(r2 + ε d2))†
= (r1*r2 + ε (r1*d2 + d1*r2))†
= (r1*r2)† + ε (r1*d2)† + ε (d1*r2)†
compare this to
Q2† Q1† = (r2 + ε d2)†*(r1 + ε d1)†
= (r2† + ε d2†)*(r1† + ε d1†)
= r2†*r1† + ε (r2†*d1† + d2†*r1†)
= (r1*r2)† + ε (r1*d2)† + ε (d1*r2)†
Amy de Buitléir has written this document to explain in this document and kindly allowed me to publish it.
Inverse Function
Dividing quaternions is done by multiplying top and bottom by the conjugate, can we do the same with dual quaternions?
Q Q† = (r + ε d)*(r + ε d)†
= r*r†+ ε (r*d† + d*r†)
= r*r†+ ε (r*d† + (r*d†)†)
but q + q† = 2*real part
Q Q† = |r|² + 2*ε*real(r*d†)
This is a bit messy so lets double check it by repeading with a fully expanded quaternion, start with this dual quaternion,
Q = (a + ε b) + i (c + ε d) + j (e + ε f) + k (g + ε h)
multiplying by the quaternion conjugate:
Q† = (a + ε b) - i (c + ε d) - j (e + ε f) - k (g + ε h)
gives the dual number:
Q Q† = (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)
Which is in the same form as we found earier
Can we 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)