Maths - Dual Quaternions

The Dual of a Quaternion can model the movement of a solid object in 3D, which can rotate and translate without changing shape, that is distances and angles between points on the object are preserved. In mathematical terms it can be used to represent the group of spatial displacements SE(3).

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

Table for: Dual Quaternion

a*bb.1b.ib.jb.kb.ε b.εi b.εj b.εk
a.ii-1k-jεi -εk εj
a.kkj-i-1εk -εj εi
a.eε -εi -εj -εk 0000
a.eiεiε-εkεj 0000
a.ejεj εk ε -εi 0000
a.ekεk -εj εi e0000

analysing commutivity: table does not commute: for example: i*j != j*i

analysing associativity: table does not associate, for example,
(i* j)* ε=k* ε=εk is not equal to i*(j* ε)=i*εj=-εk

how these results were generated.

As the above link explains, the table was generated by a computer program using a modification of Cayley-Dickson process.

However this differs from the table usually used for dual quaternions:

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

The red entries have a sign change, this is caused by the following:

The usual addition and subtraction rules apply, just add or subtract corresponding terms, the interesting properties are defined by the multiplication table.

Representing Transforms

The advantage of this is that we can represent a combined rotation with displacement operation with one multiplication operation.

We will do the transform using the same equation as we used for quaternion rotation:

P2=Q * P1 * Q'


Pure Displacement (no rotation)


We will use the notation εh as a shortcut to represent the vector (x iε + y jε + z kε) and similarly for ε p1.

The transform can be done by:

Pout = Q * Pin * Q† (where Q† = r† - ε d† see this page)
(1 + ε p2) = (1 + ε h)(1 + ε p1)(1 + ε h)
= (1 + ε h + ε p1)(1 + ε h)
since e²=0 we can ignore these terms
= (1 + ε h + ε h + ε p1)
= (1 + 2 ε h + ε p1)

So this adds the displacement (2*half) to the original point which is what we want.

If the rotation is 0 degrees, the rotation part is represented by (1 + 0 i + 0 j + 0 k), in other words 1, as explained on this page.


So if we are initially at point (x=3, y=4, z=5) this will be represented by the Dual Quaternion:

P1 = 1 + 3 iε + 4 jε + 5 kε

A pure displacement will be represented by the dual quaternion:

(1 + x/2 iε + y/2 jε + z/2 kε)

We now want to displace the initial point by (x=4, y=2, z=6) this will be represented by the Dual Quaternion:

q = (1 + 2 iε + 1 jε + 3 kε)

pure translation diagram

So to combine these, to give the resulting position, we use P2 = q * P1 * q' to give:

p2 = (1 + 2 iε + 1 jε + 3 kε)*(1 + 3iε + 4jε + 5 kε)*(1 + 2 iε + 1 jε + 3 kε)

multiplying out the first two terms using the above multiplication table we get:

P2 = (1 + 5 iε + 5 jε + 8 kε)*(1 + 2 iε + 1 jε + 3 kε)
P2 = (1 + 7 iε + 6 jε + 11 kε)

Pure Rotation (no displacement)

If the displacement is zero then iε = jε = kε = 0 and the rotation is represented by the normalised quaternion as explained on this page.

pure rotation


Applying a rotation of point (3,4,5) by 180° around the x axis is given by:

P2 = (0 + i)*(1 + 3iε + 4jε + 5 kε)*(0 - i)
P2 = ( i - 3ε -5jε + 4kε)*(0 - i)
P2 = 1 + 3iε - 4jε - 5 kε

Combined Displacement and Rotation (displace then rotation)


Starting from the previous position: (1 + 3iε + 4jε + 5 kε)

and both displace by (x=4, y=2, z=6) and applying a rotation of 180° around the x axis represented by: (0 + i)


Q = (0 + i) (1 + 2 iε + 1 jε + 3 kε)
Q = (i -2ε -3 jε + 1 kε)

So applying the transform gives:

P2 = (i - 2ε -3 jε + 1 kε)*(1 + 3iε + 4jε + 5 kε)*(-i + 2ε -3 jε + 1 kε)
P2 = (i - 5iε - 8jε + 5 kε)*(-i + 2ε -3 jε + 1 kε)
P2 = 1 + 7iε -6jε - 11kε

combined rotation and translation

Rotation about a point

In the above we are rotating about the origin. This is sometimes what we want to do, for instance, if we are observing the world from the frame of reference of a car and we assume it to be at the origin then, when it turns, the other cars will appear to rotate round it. If we want a car to rotate about its own centre then we can just multiply the complex number part (1 and i) and ignore the e and ie part.

If we want to rotate about an arbitrary point then we first translate this point to the origin, then rotate about the origin, then translate the origin back to the point (as discussed on this page).

about a point

Combining Transforms

Pure Rotation

Q = r

Pure Translation

Q = 1 + ε½t

Rotation then Translation

Q = (1 + ε½t)*r
= r + ε½t r

Translation then Rotation

Q = r*(1 + ε½t)
= r + ε½r t

Rotation about a point

Q = (1 + ε½c)*r*(1 - ε½c)
= (1 + ε½c)*(r - ε½r c)
= r - ε½r c + ε½c r

Inverse of Transform

see inverse on this page.

To invert the quaternion 'r' we use its conjugate 'r†', to invert the translation 't' we use '-t'. With combined transforms we must also reverse the order that they are combined (don't forget that order is important for translations and their corresponding dual quaternion).

The inverse of common transforms are:

  Q Q-1
Pure Rotation r r†
Pure Translation 1 + ε½t 1 - ε½t
Rotation then Translation r + ε½t r r† - ε½r† t
Translation then Rotation r + ε½r t r† - ε½t r†
Rotation about a point 'c' r - ε½r c + ε½c r r† + ε½r† c - ε½c r†

Geometric Algebra Representation

The algebra, derived here as a dual whose elements are quaternions or a quaternion whose elements are duals, can also be derived as a Geometric Algebra G+3,0,1. That is a Geometric Algebra generated from a 4 dimensional vector space with 3 dimensions which square to +ve and one dimension which squares to zero. We then take the subalgebra made up of the even grade elements: scalar + 6 dimensional bivector + pseudoscalar.

This is explained on this page.

The dimensions are related as follows:

dual quaternion
G+ 3,0,1
1 e
i e12
j e31
k e23

The use of Geometric Algebra to represent this type of tranform can be analysed using conformal space as described on this page.

Use for Physics

The reason for taking this approach is to combine linear and rotational movement into a single transform and to automatically handle the interaction between them. It would be good to be able to use this algebra to work with physics equations. For instance, imagine we have a set of forces acting on a solid body, can we determine the linear and rotational movement by using dual quaternions?

Dual Quaternions represent both the linear and rotational movement as bivectors (as we can see from the Geometric Algebra version of this algebra explained on this page). Bivectors are associated with planes, or quantities associated with them like rotations, we would expect a linier displacement to be represented by a vector. I think this issue could be a problem if we try to formulate the physics equations in terms of dual quaternions.

However linier movement can be represented as a rotation... If we rotate around a point at infinity! One way to handle this type of situation would be to use projective space as explained on this page. Is it possible to use this to do what we want? I would appreciate any help.

metadata block
see also:


Correspondence about this page Amy de Buitléir has written this document and kindly allowed me to publish it here.

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.


Terminology and Notation

Specific to this page here:


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

Copyright (c) 1998-2023 Martin John Baker - All rights reserved - privacy policy.