Dual quaternion representation of geometrical motion in 3D space
- Authors: Abakumova O.M.1, Gevorkyan M.N.1, Korolkova A.V.1, Kulyabov D.S.1,2
-
Affiliations:
- RUDN University
- Joint Institute for Nuclear Research
- Issue: Vol 34, No 1 (2026)
- Pages: 70-97
- Section: Modeling and Simulation
- URL: https://journals.rudn.ru/miph/article/view/49991
- DOI: https://doi.org/10.22363/2658-4670-2026-34-1-70-97
- EDN: https://elibrary.ru/UOBPEG
- ID: 49991
Cite item
Full Text
Abstract
\emph {Background} In a previous article we discussed the use of dual quaternions for modeling points, lines and planes and solving standard geometric problems. This article is a logical continuation and reveals the use of dual quaternions to describe isometries of three-dimensional space. \emph {Purpose} The derivation of all necessary formulas for the screw motion of points, straight lines and planes, as well as reflection relative to the plane. Refinement of notation and formalism. \emph {Method} The algebra of dual numbers, quaternions and dual quaternions is used, as well as elements of the theory of screws and sliding vectors. \emph {Results} Formulas for rotation, translation, reflection, helical motion, and mirror rotation are obtained and systematized. \emph {Conclusions} Dual quaternions can serve as a full-fledged tool for describing helical motion in space. Due to the possibility of expressing dual quaternion operations in terms of standard vector and scalar products, the formulas obtained allow for effective software implementation.
Full Text
1. Introduction
In the previous article [1], we considered parabolic biquaternions (dual quaternions), the discovery of which is attributed to W. Clifford and systematic study began later in the works of E. Study [2, 3] and A. P. Kotelnikov [4] including under the guise of the theory of screws [5–9].
This article logically continues the previous one [1] and focuses on the application of dual quaternions to the description of isometries (proper and improper motions) of three-dimensional space. There are two main objectives.
- Output the necessary formulas for calculating all possible movements of three-dimensional space for points, lines and planes. These movements include rotations, translations (parallel transfers), and mirror symmetries.
- In the process of deducing formulas, illustrate the work of mathematical formalism, for which the conclusion is given in great detail, with all the details. A number of quaternion formulas have also been preliminarily obtained, also for the purpose of illustrating the notation.
© 2026 Abakumova, O. M., Gevorkyan, M. N., Korolkova, A. V., Kulyabov, D. S.
This work is licensed under a Creative Commons “Attribution-NonCommercial 4.0 International” license.
As a novelty of the paper we can mention the description of not only the movement of lines (or screws, as it is done in the fundamental monograph [10]), but also points and planes, as well as consideration of reflections, which is rare in the literature. In the process, we relied on books [11–13], however, we also provide a number of new formulas. We also base our conclusion on the principle of Kotelnikov–Study transference, which is apparently unknown in foreign papers.
Dualquaternionshavesignificantappliedimportance, asevidencedbypublicationsonthetopic[14– 19]. In this article, we do not provide any software implementations, since adding this material would make it necessary to shorten the calculations. Examples of software implementation and an illustration of the operation of all the formulas obtained are planned in further publications by the authors.
1.1. Structure of the paper
The article consists of an introduction, 2 parts and a conclusion listing the results.
In the first part of the article, the quaternionic rotation formula is derived. The conclusion is based on the Rodrigues formula, which can be obtained from relatively elementary geometric constructions. The relation of quaternions to rotation matrices is shown below. Much attention is paid to the algorithm for calculating the rotation quaternion according to a given matrix. This algorithm takes into account the problem of rounding when working with floating-point numbers. In the last paragraph, a formula is derived for reflection relative to a plane, including one that does not pass through the origin.
The second part is the main one. It begins with the formulation of the Kotelnikov–Rudy transference principle. Next, this principle is applied to the quaternionic formula of rotation, which allows you to immediately obtain a dual quaternionic formula of helical motion for a straight line. The dual quaternion of helical motion is written out explicitly and a number of properties are proved for it. Next, it is divided into translational and rotational parts, and their actions on the direct line are studied separately. By creating compositions from these parts, it is possible to describe more complex cases, for example, the mismatch of the axis of rotation with the axis of translation.
Further, using the duality principle allows us to generalize the formula of helical motion to the cases of points and planes. For these cases, explicit formulas for pure translation and pure rotation are also given in detail.
This part ends with the derivation of dual quaternion formulas for reflecting straight lines, points, and planes relative to an arbitrary plane.
1.2. Notations and conventions
The following naming conventions are accepted in this article
- Quaternions are indicated by lowercase Latin letters from the end of the alphabet: 𝑝, 𝑞, 𝑟. The components of the quaternions are indicated by the same letters, but with the indexes 𝑝0, 𝑝1, etc. – Dual quaternions are indicated by uppercase Latin letters from the end of the alphabet: 𝑃, 𝑄, 𝑅. The components of the quaternions are indicated by the same letters, but with the indexes 𝑃0,
𝑃1, etc.
- Vectors and pure quaternions are indicated by lowercase bold Latin letters: q, v, etc.
- Pure dual quaternions are indicated by uppercase bold Latin letters: Q, V, etc.
- Individual scalars (real numbers) are denoted by the Greek letters 𝛼, 𝛽, etc.
To avoid ambiguity in the notation system, we do not use multiple quaternions and dual quaternions designated by the same letter, but distinguished by an index. The only exceptions are dual quaternions of points, lines, and planes, the components of which are denoted by letters other than the letters denoting these dual quaternions.
1.3. Description of geometric motion in three-dimensional space using quaternions
By motion in Euclidean space we mean an affine transformation that preserves the scalar product (metric). An affine transformation can be written as:
Motion in three-dimensional space is reduced to three:
- translation (paralleltranslation); – rotation;
- reflection.
The linear part of the affine transformation is responsible for the rotation.
1.4. Rotations using quaternions
1.4.1. Sandwich formula for quaternion rotation of a point
The quaternion formula for rotating a point about an axis passing through the origin is widely known [20, 21]. Let a unit quaternion be given
𝜆 = 𝜆0𝑜 + = 𝜆0𝑜 + 𝜆1i + 𝜆2j + 𝜆3k, 𝜆0 = cos 𝜃, 𝜆𝑖 = sin 𝜃𝑎𝑖,
2 2
where a = (𝑎1,𝑎2,𝑎3)𝑇 is the direction vector of the rotation axis passing through the origin, and 𝜃 is the magnitude of the rotation angle. Then, for a point 𝑃 with homogeneous coordinates p⃗ = (𝑥,𝑦,𝑧 ∣ 𝑤), given in quaternion form as 𝑝 = 𝑤𝑜 + 𝑥i + 𝑦j + 𝑧k, the following sandwich formula holds:
𝑝′ = 𝜆𝑝𝜆∗,
where 𝑝′ is a quaternion that specifies the homogeneous coordinates of the point 𝑃′, into which the original point 𝑃 has passed after the rotation.
Note that the interpretation of the scalar component of the quaternion 𝑝 as a homogeneous coordinate 𝑤 is not often encountered in the literature, and here we rely on the sources [12].
Let us prove the above formula purely algebraically using the Rodrigues formula in the Rodrigues– Hamilton form. Recall that this formula in the space ℝ3 is written as
p′ = p + 2𝜆0 × p + 2 × ( × p),
where p is the radius vector defining the initial position of the point 𝑃, and 𝜆0, 𝜆1, 𝜆2, 𝜆3 are the Rodrigues–Hamilton parameters that completely coincide with the components of the quaternion 𝜆 and obey the condition 𝜆20 + ‖‖2 = 1. The proof of the Rodrigues–Hamilton formula does not use the concept of quaternions in any way, so if we transform it so as to replace vector multiplication with quaternion multiplication and the components 𝜆𝑖 with the quaternion 𝜆, then we will also prove the quaternion sandwich formula.
We transform the Rodrigues–Hamilton formula using the normalization 𝜆20 + ‖‖2 = 1
p′ = (𝜆20 + ‖‖2)p + 2𝜆0 × p + 2 × ( × p) = 𝜆20p + ‖‖2p + 2𝜆0 × p + 2 × ( × p).
Using the formula a × (b × c) = b(a, c) − c(a, b) we write
× ( × p) = (, p) − p(,) = (, p) − p‖‖2,
and substitute into the Rodrigues–Hamilton formula p′ = 𝜆20p + ‖‖2p + 2𝜆0 × p + (, p) − p‖‖2 + × ( × p) = 𝜆20p + 2𝜆0 × p + (, p) + × ( × p).
We make the following transformation: × ( × p) = −( × p) × and add a dummy term ( × p,) = 0.
Equality to zero is true due to × p ⟂ , then
p′ = 𝜆20p + 2𝜆0 × p + (, p) − ( − ( × p,) + ( × p) × ).
Let us now temporarily, within the limits of this derivation, denote quaternion multiplication by the symbol ∘ and interpret all vectors in the formula as pure quaternions. We write
−( × p,) + ( × p) × = ( × p) ∘ и (, p) = (, p) ∘ .
and also replace 2 × p = ∘ p − p ∘ and continue transforming the Rodrigues–Hamilton formula:
p′ = 𝜆20p + 2𝜆0 × p + (, p) ∘ + ( × p) ∘ = 𝜆20p + 𝜆0( ∘ p − p ∘ ) − ( − (, p) + × p) ∘ =
= 𝜆20p + 𝜆0( ∘ p − p ∘ ) − ( ∘ p) ∘ = 𝜆20p − 𝜆0p ∘ + 𝜆0 ∘ p − ( ∘ p) ∘ = 𝜆0(𝜆0p − p ∘ ) + 𝜆0 ∘ p − ( ∘ p) ∘ =
= 𝜆0p0(𝜆0 − ) + ∘ p ∘ (𝜆0 − ) = (𝜆0p + ∘ p) ∘ (𝜆0 − ) = (𝜆0 + ) ∘ p ∘ (𝜆0 − ) As a result, we obtained a sandwich formula:
p′ = (𝜆0 + ) ∘ p ∘ (𝜆0 − ) = 𝜆 ∘ p ∘ 𝜆∗.
Due to 𝜆𝜆∗ = 1 we can finally write:
𝑝′ = 𝑤 + p′ = 𝑤𝜆𝜆∗ + 𝜆 ∘ p ∘ 𝜆∗ = 𝜆 ∘ (𝑤 + p) ∘ 𝜆∗ ⇒ 𝑝′ = 𝜆 ∘ 𝑝 ∘ 𝜆∗.
1.4.2. Calculating a rotation matrix given a rotation quaternion
Let’s use the Rodrigues formula, written in terms of the Rodrigues–Hamilton coefficients
p′ = p + 2𝜆0 × p + 2 × × p,
but let us represent the vector product in matrix form as follows:
⎡ 0 −𝜆3 𝜆2 ⎤⎡𝑝1⎤
× p = 𝛬p = ⎢⎢ 𝜆3 0 −𝜆1⎥⎥⎢⎢𝑝2⎥⎥.
⎢ ⎥⎢ ⎥
⎣−𝜆2 𝜆1 0 ⎦⎣𝑝3⎦
⎡ 0 −𝜆3 𝜆2 ⎤⎡ 0 −𝜆3 𝜆2 ⎤⎡𝑝1⎤
× × p = 𝛬(𝛬p) = 𝛬2p = ⎢⎢ 𝜆3 0 −𝜆1⎥⎥⎢⎢ 𝜆3 0 −𝜆1⎥⎥⎢⎢𝑝2⎥⎥ =
⎢ ⎥⎢ ⎥⎢ ⎥
⎣−𝜆2 𝜆1 0 ⎦⎣−𝜆2 𝜆1 0 ⎦⎣𝑝3⎦
⎡−(𝜆22 + 𝜆23) ⎢ = ⎢ 𝜆1𝜆2 ⎢ ⎣ 𝜆1𝜆3 | 𝜆1𝜆2 −(𝜆21 + 𝜆23) 𝜆2𝜆3 | 𝜆1𝜆3 ⎤⎡𝑝1⎤ ⎥⎢ ⎥ 𝜆2𝜆3 ⎥⎢𝑝2⎥, ⎥⎢ ⎥ −(𝜆21 + 𝜆22)⎦⎣𝑝3⎦ |
where 𝛬 is a matrix composed of the components of the vector part of the unit quaternion 𝜆. Now Rodrigues’ formula can be rewritten in matrix form as follows:
p′ = 𝐼p + 2𝜆0𝛬p + 2𝛬2p = (𝐼 + 2𝜆0𝛬 + 2𝛬2)p,
⎡1 0 0⎤ ⎡ 0 −2𝜆0𝜆3 2𝜆0𝜆2 ⎤
⎢ ⎥ ⎢ ⎥
𝐼 + 2𝜆0𝛬 + 2𝛬
⎡−2(𝜆22 + 𝜆23)
⎢
= ⎢ 2𝜆1𝜆2
⎢
⎣ 2𝜆1𝜆3
2 = ⎢0 1 0⎥ + ⎢ 2𝜆0𝜆3 0 −2𝜆0𝜆1⎥ +
⎢ ⎥ ⎢ ⎥
⎣0 0 1⎦ ⎣−2𝜆0𝜆2 2𝜆0𝜆1 0 ⎦
2𝜆1𝜆2 2𝜆1𝜆3 ⎤ ⎡1 − 2(𝜆22 + 𝜆23) 2(𝜆1𝜆2 − 𝜆0𝜆3) 2(𝜆0𝜆2 + 𝜆1𝜆3)⎤
⎥ ⎢ ⎥
−2(𝜆21 + 𝜆23) 2𝜆2𝜆3 ⎥ = ⎢2(𝜆0𝜆3 + 𝜆1𝜆2) 1 − 2(𝜆21 + 𝜆23) 2(𝜆2𝜆3 − 𝜆0𝜆1)⎥ =
⎥ ⎢ ⎥
2𝜆2𝜆3 −2(𝜆21 + 𝜆22)⎦ ⎣2(𝜆1𝜆3 − 𝜆0𝜆2) 2(𝜆0𝜆1 + 𝜆2𝜆3) 1 − 2(𝜆21 + 𝜆22)⎦
⎡𝜆20 + 𝜆21 − 𝜆22 − 𝜆23 2(𝜆1𝜆2 − 𝜆0𝜆3) 2(𝜆0𝜆2 + 𝜆1𝜆3) ⎤
⎢ ⎥ = ⎢ 2(𝜆0𝜆3 + 𝜆1𝜆2) 𝜆20 − 𝜆21 + 𝜆22 − 𝜆23 2(𝜆2𝜆3 − 𝜆0𝜆1) ⎥.
⎢ ⎥
⎣ 2(𝜆1𝜆3 − 𝜆0𝜆2) 2(𝜆0𝜆1 + 𝜆2𝜆3) 𝜆20 − 𝜆21 − 𝜆22 + 𝜆23⎦
The last matrix was obtained by replacing 1 = 𝜆20 + ‖q‖ = 𝜆20 + 𝜆21 + 𝜆22𝜆23.
1.4.3. Calculating a rotation quaternion from a given rotation matrix
Here we present an algorithm for calculating the coefficients of a quaternion 𝜆 given a rotation matrix 𝑅. The algorithm follows the calculation method described in [22, pp. 90–94], which allows for some compensation for the loss of precision when working with floating-point numbers.
Let us write the rotation matrix in quaternion form
⎡1 − 2(𝜆22 + 𝜆23) 2(𝜆1𝜆2 − 𝜆0𝜆3) 2(𝜆1𝜆3 − 𝜆0𝜆2)⎤ ⎢ ⎥ 𝑅 = ⎢2(𝜆0𝜆3 + 𝜆1𝜆2) 1 − 2(𝜆21 + 𝜆23) 2(𝜆2𝜆3 − 𝜆0𝜆1)⎥
⎢ ⎥
⎣2(𝜆1𝜆3 − 𝜆0𝜆2) 2(𝜆2𝜆3 + 𝜆0𝜆1) 1 − 2(𝜆21 + 𝜆22)⎦
where 𝜆 = cos 𝜃 + sin 𝜃, = 𝜆1i + 𝜆2j + 𝜆3k, 𝜆0 = cos 𝜃 и |𝜆| = 1.
2 2 2
Note that 𝜆 and −𝜆 define the same rotation, since the minus sign is neutralized in the sandwich formula
(−𝜆)𝑝(−𝜆)∗ = 𝜆𝑝𝜆∗.
This property allows us to choose the sign before the quaternion so that the scalar part is always positive. If 𝜆0 > 0, then we can store only three vector components 𝜆1, 𝜆2, 𝜆3, and calculate the scalar part from the unity condition 𝜆0 = √1 − ‖‖ = √1 − 𝜆21 − 𝜆22 − 𝜆23 and choose a positive sign before the root.
Let us represent the matrix 𝑅 as coefficients 𝑟𝑗𝑖, where 𝑖 = 1,2,3 is the column index, and 𝑗 is the row index
⎡𝑟11 𝑟21 𝑟31⎤
⎢ ⎥
𝑅 = ⎢𝑟12 𝑟22 𝑟32⎥
⎢ ⎥
⎣𝑟13 𝑟23 𝑟33⎦
Let us show that the scalar element 𝜆0 can be calculated through the trace of the matrix.
𝑟11 +𝑟22 +𝑟33 = 3−2(𝜆22 +𝜆23 +𝜆21 +𝜆23 +𝜆21 +𝜆22) = 3−4(𝜆21 +𝜆22 +𝜆23) = 3−4‖‖2 = 3−4(1−𝜆20) = 4𝜆20 −1. Next we write 4𝜆20 = 1 + 𝑟11 + 𝑟22 + 𝑟33 = 1 + Tr 𝑅, which will finally give an expression for 𝜆0
𝜆 Tr 𝑅.
Note that the expression under the root is always positive, since 1 + Tr 𝑅 = 4𝜆20 ⩾ 0.
To calculate 𝜆1, 𝜆2, 𝜆3 we write
𝑟23 − 𝑟32 = 2(𝜆2𝜆3 + 𝜆0𝜆1 − 𝜆2𝜆3 + 𝜆0𝜆1) = 4𝜆0𝜆1,
𝑟31 − 𝑟13 = 2(𝜆1𝜆3 + 𝜆0𝜆2 − 𝜆1𝜆3 + 𝜆0𝜆2) = 4𝜆0𝜆2, 𝑟12 − 𝑟21 = 2(𝜆0𝜆3 + 𝜆1𝜆2 − 𝜆1𝜆2 + 𝜆0𝜆3) = 4𝜆0𝜆3.
As a result, we obtain a set of formulas
4𝜆0𝜆1 = 𝑟23 − 𝑟32,
4𝜆0𝜆2 = 𝑟31 − 𝑟13, ⟺ 4𝜆0𝜆𝑖 = 𝑟𝑖+1𝑖−1 − 𝑟𝑖−1𝑖+1, 𝑖 = 1,2,3. (1)
4𝜆0𝜆3 = 𝑟12 − 𝑟21,
If |𝜆0| is large enough, say |𝜆0| > 1/2, then the quaternion coefficients can be calculated using the following formulas:
√1 + Tr 𝑅, 𝜆1 = 𝑟23 − 𝑟32 , 𝜆2 = 𝑟31 − 𝑟13 , 𝜆3 = 𝑟12 − 𝑟21 .
𝜆0 = ±
4𝜆0 4𝜆0 4𝜆0
If |𝜆0| is small, say |𝜆0| ⩽ 1/2, then a more sophisticated calculation scheme will have to be used.
We will need a set of three groups of formulas. To obtain the first group, we write
𝑟11 − 𝑟22 − 𝑟33 + 1 = 1 − 2𝜆22 − 2𝜆23 − 1 + 2𝜆21 + 2𝜆23 − 1 + 2𝜆21 + 2𝜆22 + 1 = 4𝜆21,
− 𝑟11 + 𝑟22 − 𝑟33 + 1 = −1 + 2𝜆22 + 2𝜆23 + 1 − 2𝜆21 − 2𝜆23 − 1 + 2𝜆21 + 𝜆22 + 1 = 4𝜆22, − 𝑟11 − 𝑟22 + 𝑟33 + 1 = −1 + 2𝜆22 + 2𝜆23 − 1 + 2𝜆21 + 2𝜆23 + 1 − 2𝜆21 − 2𝜆22 + 1 = 4𝜆23,
obtained the following set of formulas:
4𝜆21 = 1 + 𝑟11 − 𝑟22 − 𝑟33, 4𝜆22 = 1 + 𝑟22 − 𝑟11 − 𝑟33, 4𝜆23 = 1 + 𝑟33 − 𝑟11 − 𝑟22 (2)
Let us further consider the diagonal elements of the matrix 𝑅 and using the unity condition of the quaternion 𝜆 we write
𝑟11 = 1 − 2(𝜆22 + 𝜆23) = 1 − 2(𝜆21 + 𝜆22 + 𝜆23) + 2𝜆21 = 1 − 2(1 − 𝜆20) + 2𝜆21 = −1 + 2𝜆20 + 2𝜆21,
𝑟22 = 1 − 2(𝜆21 + 𝜆23) = 1 − 2(𝜆21 + 𝜆22 + 𝜆23) + 2𝜆22 = 1 − 2(1 − 𝜆20) + 2𝜆22 = −1 + 2𝜆20 + 2𝜆22, 𝑟33 = 1 − 2(𝜆21 + 𝜆22) = 1 − 2(𝜆21 + 𝜆22 + 𝜆23) + 2𝜆23 = 1 − 2(1 − 𝜆20) + 2𝜆23 = −1 + 2𝜆20 + 2𝜆23.
The second group of formulas we need is obtained:
2𝜆21 = 𝑟11 − 2𝜆20 + 1, 2𝜆22 = 𝑟22 − 2𝜆20 + 1, 2𝜆23 = 𝑟33 − 2𝜆20 + 1. (3)
Formulas (3) allow us to find the largest absolute value component 𝜆1, 𝜆2, 𝜆3 of the vector part of a quaternion using the elements of the matrix and 𝜆0.
We obtain the last set of formulas by summing the symmetric elements of the matrix 𝑅:
𝑟12 + 𝑟21 = 2𝜆0𝜆3 + 2𝜆1𝜆2 + 2𝜆1𝜆2 − 2𝜆0𝜆3 = 4𝜆1𝜆2,
𝑟31 + 𝑟13 = 2𝜆1𝜆3 + 2𝜆0𝜆2 + 2𝜆1𝜆3 − 2𝜆0𝜆2 = 4𝜆1𝜆3, 𝑟23 + 𝑟32 = 2𝜆2𝜆3 − 2𝜆0𝜆1 + 2𝜆2𝜆3 + 2𝜆0𝜆1 = 4𝜆2𝜆3,
we obtain the third, final group of necessary formulas:
4𝜆1𝜆2 = 𝑟12 + 𝑟21,4𝜆1𝜆3 = 𝑟31 + 𝑟13,4𝜆2𝜆3 = 𝑟23 + 𝑟31. (4)
Now we have the entire necessary set of formulas at our disposal and we can move on to the presentation of the algorithm itself.
- If |𝜆0| ⩽ 1/2, then dividing by 𝜆0 when calculating 𝜆1, 𝜆2, 𝜆3 using the set of formulas (1) can lead to an accumulation of errors, so it is more correct to start calculating from the largest component of the vector part.
- To find out which of the components 𝜆1, 𝜆2, 𝜆3 is larger, use the formulas (3). From the formulas it is clear that there is no need to calculate the entire expression; it is sufficient to compare the components of the matrix 𝑟11, 𝑟22, and 𝑟33.
- If 𝑟11 > 𝑟22 and 𝑟11 > 𝑟33, then the component 𝜆1 is the largest. We calculate it using the formula from (2), 𝜆2 and 𝜆3 using the formulas (4), and 𝜆0 using the formula from (1), i.e.
1 𝑟2 1 1 𝜆1 = ± √1 + 𝑟11 − 𝑟22 − 𝑟33, 𝜆2 = 14+𝜆1𝑟2 , 𝜆3 = 𝑟34+𝜆1𝑟13 , 2 – Otherwise, if 𝑟22 > 𝑟33, then 𝜆2 is the largest, then | 𝑟3 2 𝜆0 = 2 − 𝑟3 . 4𝜆1 |
2 1√ 22 − 𝑟11 − 𝑟33, 𝜆1 = 𝑟124+𝜆2𝑟21 , 𝜆3 = 𝑟234+𝜆2𝑟31 , 𝜆 = ± 1 + 𝑟 2 – Otherwise, the only option left is when the largest is 𝜆3, then | 𝑟1 3 𝜆0 = 3 − 𝑟1 . 4𝜆2 |
1 𝑟1 3 3 1 𝜆3 = ±2√1 + 𝑟33 − 𝑟11 − 𝑟22, 𝜆1 = 34+𝜆3𝑟1 , 𝜆2 = 𝑟24+𝜆3𝑟3 , | 𝑟2 1 𝜆0 = 1 − 𝑟2 . 4𝜆3 |
1.5. Reflections using quaternions
1.5.1. Reflection about a plane passing through the origin
Vector formula Consider a point 𝑃 with radius vector p and a plane 𝜋 passing through the origin 𝑂 with unit normal vector n, where n ⟂ 𝜋. Relative to the vector n, the vector p splits into two components p∥n and p⟂n:
p = p∥n + p⟂n.
Reflection with respect to the 𝜋 plane affects only the vector p∥n, while leaving the vector p⟂n unchanged. However, the vector p∥n changes sign upon reflection. As a result, the reflected vector p′ is calculated as follows:
p′ = p⟂n − p∥n,
where p∥n = (p, n)n and p⟂n = p − p∥n = p − (p, n)n, therefore
p′ = p⎵⎵⎵⎵⎵⎵⎵⎵− (p, n)n −(⎵⎵⎵⎵⎵p, n)n = p − 2(p, n)n. (5)
p⟂n ∥n
The same formula can be written in matrix form:
p′ = (I − 2nn𝑇)p.
Quaternion formula If we associate with the radius vector p a pure quaternion 𝑝 = 0 + p, then the quaternion formula for reflection can be obtained from the equalityby setting q = n and applying it to (5) from right to left:
npn = ‖n‖2p − 2(p, n)n = p − 2(p, n)n = p′.
Above, we associated a point with a quaternion of the general form 𝑝 = 𝑝0 + 𝑝𝑥i + 𝑝𝑦j + 𝑝𝑧k, so in the quaternion formula for reflecting a point, we would like to see a quaternion 𝑝 with a nonzero scalar part. However, the formula n𝑝n will give an incorrect result:
n𝑝n = n(𝑝0 + p)n = nn𝑝0 + npn = −𝑝0 + p′,
where the scalar part becomes negative, although it should remain positive.
To eliminate this discrepancy, we change the formula as follows:
𝑝′ = n(𝑝 − 2𝑝0)n = n(𝑝0 + p − 2𝑝0)n = n(p − 𝑝0)n = −nn𝑝0 + npn = 𝑝0 + p′.
If we additionally note that 𝑝 − 2𝑝0 = −𝑝0 + p = −(𝑝0 − p) = −𝑝∗, then the quaternion reflection formula can be written in its final form as follows:
𝑝′ = −n𝑝∗n
1.5.2. Reflection relative to an arbitrary plane
Vector formula Consider an arbitrary plane 𝜋, with a unit normal vector n, located at a distance −𝑑 from the origin 𝑂. Such a plane is given by the equation:
(q, n) + 𝑑 = 0,
where q is the radius vector of an arbitrary point 𝑄 belonging to the 𝜋 plane. The radius vector of the projection of the origin onto the plane is calculated as OO⟂ = −𝑑n.
The reflection of a certain point 𝑃 with a radius vector p is carried out in three stages:
- transferring the origin to a point on the plane by subtracting the vector OO⟂ from p;
- reflectionusingtheformula (5);
- returning the origin by adding the resulting vector to OO⟂.
Combining all three actions into one formula, we write:
p′ = p + 𝑑n − 2(p + 𝑑n, n)n − 𝑑n = p − 2(p, n)n − 2𝑑(n, n)n = p − 2(p, n)n − 2𝑑n and as a result we get:
p′ = p − 2(p, n)n − 2𝑑n. (6)
It is worth paying attention to the minus sign in the formula OO⟂ = −𝑑n, due to which, when subtracting the vector OO⟂ in the calculations, addition with 𝑑n occurs, and when adding, on the contrary, subtraction occurs.
Table 1 Kotelnikov–Study Transfer Principle
Radius vector p | Screw L |
Angle 𝜃 | Dual angle 𝛩 |
Real number 𝜆 | Dual number 𝛬 |
Quaternion formula Similarly, it can be written in quaternion form:
p′ = p − 2(p, n)n − 2𝑑n.
To prove the formula, we perform some transformations
𝑝′ = −n(𝑝 + 𝑑n)∗n − 𝑑n = −n𝑝∗n − n𝑑n∗n − 𝑑n = −n𝑝∗n − 𝑑n − 𝑑n =
= −n(1 − p)n − 2𝑑n = −nn + npn = 1 + npn − 2𝑑n. Since npn = ‖n‖2p − 2(p, n)n = p − 2(p, n)n, we can finally write
𝑝′ = 1 + p − 2(p, n)n − 2𝑑n = 1 + p′,
from which it is clear that the vector part completely coincides with the formula (6).
2. Description of screw motion and reflection using dual quaternions
2.1. Kotelnikov–Study’s transfer principle
Transfer principle. All formulas of the theory of finite rotations and the kinematics of motion of a rigid body with one fixed point, when replacing real quantities with dual analogs, are transformed into formulas of the theory of finite displacements and the kinematics of motion of a free rigid body [10, p. 67].
The principle was formulated by Alexander Petrovich Kotelnikov and Eduard Study (Eduard Study) [5, pp. 12–13].
In other words, if in the formulas for the rotation of a point in space we replace real numbers, vectors, angles and quaternions with dual numbers, screws, dual angles and dual quaternions, then we obtain the correct formulas for screw motion (table 1).
If the formulas for rotations in space are applied to affine points (radius vectors), then the formulas obtained by the principle of transfer should be applied to screws, that is, to lines in space.
2.2. Application of the Kotelnikov–Study transfer principle
2.2.1. Obtaining a dual quaternion of screw motion
Let’s apply the Kotelnikov–Study transfer principle to derive dual quaternion formulas for screw motion. First, we write down the necessary quaternion formulas. Rotational motion around an axis passing through the origin defines a unit quaternion, which is most conveniently written in trigonometric form:
𝜆 = cos 𝜃 + sin 𝜃 a, a = 𝑎𝑥i + 𝑎𝑦j + 𝑎𝑧k,
2 2
where 𝜃 is the angle of rotation around the axis with unit direction vector a = (𝑎𝑥,𝑎𝑦,𝑎𝑧)𝑇, ‖a‖ = 1. The rotation of an affine point 𝑃, represented in homogeneous coordinates by the quaternion 𝑝 = 1 + 𝑥i + 𝑦j + 𝑧k, is given by the sandwich formula:
𝑝′ = 𝜆𝑝𝜆∗,
where the new position of the point is expressed by the quaternion 𝑝′ = 1 + 𝑥′i + 𝑦′j + 𝑧′k.
Note also that the quaternion 𝑝 need not have a unit scalar part and can define a projective point of any form, since the sandwich formula leaves the coordinate 𝑤 unchanged due to the unity of 𝜆𝜆∗ = 1:
𝜆(𝑤 + p)𝜆∗ = 𝜆𝑤𝜆∗ + 𝜆p𝜆∗ = 𝑤𝜆𝜆∗ + 𝜆p𝜆∗ = 𝑤 + 𝜆p𝜆∗.
The scalar part 𝑤 can also be equal to zero, in which case the formula defines the rotation of a point at infinity in projective space or an equivalent free vector in Cartesian space.
According to the translation principle, dual quaternion defining screw motion (translation + rotation) is obtained from a rotational quaternion by the following substitution:
- 𝜃 ⟶ 𝛩 = 𝜃 + 𝜃𝑜𝜀 — the angle is replaced by its dual angle;
- a ⟶ A = a + a𝑜𝜀 — the vector is replaced by a pure dual quaternion (a screw);
- ∗ ⟶ † — the quaternion conjugate ∗ is replaced by the dual quaternion conjugate †.
As a result of such a replacement, the dual quaternion of screw motion will be written as follows:
𝛬 = cos 𝛩 + sin 𝛩A, 𝛩 = 𝜃 + 𝜃𝑜𝜀, A = a + a𝑜𝜀. (7)
2 2
A pure dual quaternion A defines an arbitrary axis of rotation with a direction unit vector a and a moment a𝑜. The set of vectors {a ∣ a𝑜} a re the Plücker coordinates, for which th Plücker condition (a, a𝑜) = 0 must be satisfied. The Plücker condition and the condition ‖a‖ = 1 guarantee the unity of the pure dual quaternion A, since |A| = AA∗ = (a + a𝑜𝜀)(−a − a𝑜𝜀) = ‖a2 + 2(a, a𝑜)𝜀‖ = ‖a‖2 = 1.
The dual angle 𝛩 specifies both the magnitude of the rotation angle 𝜃 around the axis A and the translation distance 𝜃𝑜 along the same axis A. Trigonometric functions of the dual angle are calculated using the formulas
sin 𝛩 = sin(𝜃 + 𝜀𝜃𝑜) = sin 𝜃 + 𝜃𝑜 cos 𝜃𝜀, cos 𝛩 = cos(𝜃 + 𝜃𝑜𝜀) = cos 𝜃 − 𝜃𝑜 sin 𝜃𝜀.
Using these formulas, we replace the dual number 𝛩 in the formula (7) with the real numbers 𝜃 and 𝜃𝑜 and transform the dual quaternion 𝛬 as follows:
𝛬 = cos 𝛩 + sin 𝛩A = cos 𝜃 − 𝜃𝑜 sin 𝜃𝜀 + (sin 𝜃 + 𝜃2 cos 𝜃𝜀)(a + a𝑜𝜀) =
2 2 2 2 2 2 2 2
= cos 𝜃 − 𝜃𝑜 sin 𝜃𝜀 + sin 𝜃 a + 𝜃𝑜 cos 𝜃𝜀a + sin 𝜃 a𝑜𝜀 + 𝜃𝑜 cos 𝜃 a𝑜𝜀2 =
2 2 2 2 2 2 2 2 2
= cos 𝜃 𝜃𝑜 𝜃𝜀 + sin 𝜃 𝜃𝑜 𝜃 𝜃 𝑜𝜀.
− sin a + cos a𝜀 + sin a
2 2 2 2 2 2 2
Having grouped separately the terms with 𝜃𝑜 and without 𝜃𝑜, we write the formula in the following
form: 𝜃 𝜃 𝑜𝜀) + ( cos 𝜃 a − sin 𝜃)𝜃𝑜 𝜀. (8)
𝛬 = cos + sin (a + a
2 2 2 2 2
This notation has the advantage of allowing us to distinguish between pure rotation and pure translation:
- for 𝜃𝑜 = 0, we obtain pure rotation around an arbitrary axis A defined by the dual quaternion
𝑅 = cos 𝜃 + sin 𝜃(a + a𝑜𝜀);
2 2
- for 𝜃 = 0, the trigonometric functions take the values sin 0 = 0 and cos 0 = 1, and we obtain
𝜃𝑜 pure translation along the axis A defined by the dual quaternion 𝑇 = 1 + a𝜀.
2
2.2.2. Conjugate dual quaternion of screw motion
Now let’s find the conjugate dual quaternion 𝛬. Recall that dual quaternion conjugation is introduced in three different ways:
- 𝑄∗ = (𝑞 + 𝑞𝑜𝜀)∗ = 𝑞∗ + 𝑞𝑜∗𝜀 is the quaternion conjugation, which can also be called complex conjugation.
- 𝑄 = 𝑞 + 𝑞𝑜𝜀 = 𝑞 − 𝑞𝑜𝜀 is the dual conjugation.
- 𝑄† = (𝑞 + 𝑞𝑜𝜀)∗ = 𝑞∗ − 𝑞𝑜∗𝜀 is the dual quaternion conjugation.
We need to calculate the dual conjugation of the dual quaternion 𝛬:
𝛬† = cos 𝛩/2 + sin 𝛩/2A†, A† = a∗ − a𝑜∗𝜀 = −a + a𝑜𝜀 = −(a − a𝑜𝜀).
Next, we can use formulas for trigonometric functions of dual numbers:
cos 𝛩/2 = cos 𝜃 + 𝜃𝑜 sin 𝜃𝜀, sin 𝛩/2 = sin 𝜃 − 𝜃𝑜 cos 𝜃𝜀.
2 2 2 2 2 2
We can, however, obtain this formula differently by writing 𝛬 in quaternion form:
𝛬 = cos 𝜃 + sin 𝜃 a + (−𝜃𝑜 sin 𝜃 + 𝜃𝑜 cos 𝜃 a + sin 𝜃 a𝑜)𝜀 = 𝜆 + 𝜆𝑜𝜀,
2 2 2 2 2 2 2
where 𝜆 = cos 𝜃 +sin 𝜃 a and 𝜆𝑜 = −𝜃𝑜 sin 𝜃 + 𝜃𝑜 cos 𝜃 a+sin 𝜃 a𝑜 are quaternions. Then we calculate:
2 2 2 2 2 2 2
𝛬† = 𝜆∗ − 𝜆𝑜∗𝜀 = (cos 𝜃 − sin 𝜃 a) − (−𝜃𝑜 sin 𝜃 − 𝜃𝑜 cos 𝜃 a − sin 𝜃 a𝑜)𝜀 =
2 2 2 2 2 2 2
= (cos 𝜃 − sin 𝜃 a) + (𝜃𝑜 sin 𝜃 + 𝜃𝑜 cos 𝜃 a + sin 𝜃 a𝑜)𝜀 =
2 2 2 2 2 2 2
= (cos 𝜃 − sin 𝜃(a − a𝑜𝜀)) + (sin 𝜃 + cos 𝜃 a) 𝜃𝑜 𝜀.
2 2 2 2 2
Accordingly, the final formula for the conjugate dual quaternion will look like this:
𝛬† = cos 𝜃 − sin 𝜃(a − a𝑜𝜀) + (sin 𝜃 + cos 𝜃 a) 𝜃𝑜 𝜀.
2 2 2 2 2
2.2.3. Proof of the unity of the dual quaternion of screw motion
Let us also recall the definition of a unit dual quaternion: a dual quaternion 𝑄 is called unit dual quaternion if its modulus is equal to 1, that is, |𝑄|2 = 𝑄𝑄∗ = |𝑞|2 + 2(𝑞,𝑞𝑜)𝜀 = 1. Let us check that 𝛬 is unit dual quaternion, for which it is necessary to calculate the quaternion conjugate. Let us do this and at the same time note that the expression for 𝛬∗ will differ from 𝛬†.
𝛬∗ = 𝜆∗ + 𝜆𝑜∗𝜀 = cos 𝜃 − sin 𝜃 a + (−𝜃𝑜 sin 𝜃 − 𝜃𝑜 cos 𝜃 a − sin 𝜃 a𝑜)𝜀 =
2 2 2 2 2 2 2
= cos 𝜃 − 𝜃𝑜 sin 𝜃𝜀 − sin 𝜃 a − 𝜃𝑜 cos 𝜃 a𝜀 − sin 𝜃 a𝑜𝜀 − 𝜃𝑜 cos 𝜃 a𝑜𝜀2 =
2 2 2 2 2 2 2 2 2
= (cos 𝜃 − 𝜃𝑜 sin 𝜃𝜀) − [(sin 𝜃 + 𝜃𝑜 cos 𝜃𝜀) a + (sin 𝜃 + 𝜃𝑜 cos 𝜃𝜀) a𝑜𝜀] =
2 2 2 2 2 2 2 2 2
= (cos 𝜃 − 𝜃𝑜 sin 𝜃𝜀) − (sin 𝜃 + 𝜃𝑜 cos 𝜃𝜀)(a + a𝑜𝜀) = cos 𝛩 − sin 𝛩A,
2 2 2 2 2 2 2 2
where A = a + a𝑜𝜀. Finally:
𝛬∗ = (cos 𝛩 + sin 𝛩A)∗ = cos 𝛩 − sin 𝛩A,
2 2 2 2
since A∗ = −a − a𝑜𝜀 = −A.
Now we can find the modulus of the dual quaternion |𝛬|2 = 𝛬𝛬∗:
𝛬𝛬∗ = (cos 𝛩 + sin 𝛩A)(cos 𝛩 − sin 𝛩A) =
2 2 2 2
= cos2 𝛩 − cos 𝛩 sin 𝛩A + sin 𝛩A cos 𝛩 − sin 𝛩A sin 𝛩A.
2 2 2 2 2 2 2
Recall that the multiplication of dual numbers is commutative (𝑎 + 𝑏𝜀)(𝑐 + 𝑑𝜀) = (𝑐 + 𝑑𝜀)(𝑎 + 𝑏𝜀), and the multiplication of a dual number by a pure dual quaternion is also commutative: (𝑎 + 𝑏𝜀)(a + b𝜀) = (a + b𝜀)(𝑎 + 𝑏𝜀). This allows us to write the expression 𝛬𝛬∗ in the following form:
𝛬𝛬∗ = cos2 𝛩 − cos 𝛩 sin 𝛩A + sin 𝛩 cos 𝛩A − sin2 𝛩AA = cos2 𝛩 − sin2 𝛩AA.
2 2 2 2 2 2 2 2
Let us calculate the product of pure dual quaternions AA:
AA = (a + a𝑜𝜀)(a + a𝑜𝜀) = aa + aa𝑜𝜀 + a𝑜a𝜀 + a𝑜a𝑜𝜀2 = aa + (aa𝑜 + a𝑜a)𝜀.
For further simplification, we use the rule of multiplication of pure quaternions pq = −(p, q) + p × q,
then aa = −(a, a) = −‖a‖2 = −1 since ‖a‖ = 1 by condition. In view of the fact that aa𝑜 = −(a, a𝑜) + a × a𝑜 and a𝑜a = −(a𝑜, a) + a𝑜 × a the dual part of AA is simplified:
aa𝑜 + a𝑜a = −2(a, a𝑜) + a × a𝑜 − a × a𝑜 = −2(a, a𝑜). In addition, by the Plücker condition (a, a𝑜) = 0, because a ⟂ a𝑜, therefore AA = −1 subject to ||a|| = 1.
We obtain that 𝛬𝛬 𝛩 . We use the formula (𝑎 + 𝑏𝜀)2 = 𝑎2 + 2𝑎𝑏𝜀 to calculate cos2 𝛩/2
2 and sin2 𝛩/2, for them the following will be true:
cos2 𝛩 = (cos 𝜃 − 𝜃𝑜 sin 𝜃 𝜀)2 = cos2 𝜃 − 2 cos 𝜃 sin 𝜃 𝜃𝑜 𝜀,
2 2 2 2 2 2 2 2
sin2 𝛩 = (sin 𝜃 + 𝜃𝑜 cos 𝜃 𝜀)2 = sin2 𝜃 + 2 sin 𝜃 cos 𝜃 𝜃𝑜 𝜀.
2 2 2 2 2 2 2 2
Hence:
cos2 𝛩 + sin2 𝛩 = cos2 𝜃 + sin2 𝜃 − 2 cos 𝜃 sin 𝜃 𝜃𝑜 𝜀 + 2 sin 𝜃 cos 𝜃 𝜃𝑜 𝜀 =
2 2 2 2 2 2 2 2 2 2
= cos2 𝜃 + sin2 𝜃 = 1 ⇒ cos2 𝛩 + sin2 𝛩 = 1,
2 2 2 2
where 𝛩 is the dual angle.
As a result, we have proved the unity of the dual quaternion 𝛬 = cos 𝛩 + sin 𝛩 A. It should be
2 2 especially noted that an important condition is the unity of the pure quaternion a, i.e. ‖a‖ = 1 and the fulfillment of the Plücker condition (a, a𝑜) = 0. Without these two conditions, 𝛬 will not be unity.
2.3. Screw motion of a point and a vector
2.3.1. Rotation around an arbitrary axis without translation
Let us consider the dual quaternion representation of an affine point 𝑃:
𝑃 = 1 + p𝑜𝜀 = 𝑝 + 𝑝𝑜,
where 𝑝𝑜 = p𝑜 is a pure quaternion (radius vector), and 𝑝 = 1 is a scalar quaternion (point O). Let’s now construct a sandwich operator from the dual quaternion 𝑅:
𝑅 = cos 𝜃 + sin 𝜃(a + a𝑜𝜀).
2 2
where A = a + a𝑜𝜀 is a pure dual quaternion defining the axis of rotation, a is the direction vector of the axis of rotation, a𝑜 is the moment of the axis of rotation, and 𝜃 is the actual angle of rotation about the axis.
Once again, we require two important conditions to be satisfied:
- vector a must be the unit vector ‖a‖ = 1;
- vectors a and a𝑜 satisfy the Plücker condition (a, a𝑜) = 0.
Let’s find the conjugate dual quaternion 𝑅† = (𝑅)̄ ∗ = (𝑅∗):
𝑅∗ = cos 𝜃 − sin 𝜃 a − sin 𝜃 a𝑜𝜀 𝑅† = (𝑅∗) = cos 𝜃 − sin 𝜃 a + sin 𝜃 a𝑜𝜀 = cos 𝜃 − sin 𝜃(a − a𝑜𝜀).
2 2 2 2 2 2 2 2
The final formula for the sandwich operator will look like this:
𝑃′ = 𝑅𝑃𝑅† = 𝑅(1 + p𝑜𝜀)𝑅† = 𝑅𝑅† + 𝑅p𝑜𝜀𝑅†.
Let’s first find the dual quaternion product 𝑅𝑅†:
𝑅𝑅† = (cos 𝜃 + sin 𝜃(a + a𝑜𝜀))(cos 𝜃 − sin 𝜃(a − a𝑜𝜀)) =
2 2 2 2
= cos2 𝜃 − sin 𝜃 cos 𝜃(a − a𝑜𝜀) + sin 𝜃 cos 𝜃(a + a𝑜𝜀) − sin2 𝜃(a + a𝑜𝜀)(a − a𝑜𝜀) =
2 2 2 2 2 2
= cos2 𝜃 + sin 𝜃 cos 𝜃(a + a𝑜𝜀 − a + a𝑜𝜀) + sin2 𝜃(1 + 2a × a𝑜𝜀) =
2 2 2 2
= cos2 𝜃 + sin2 𝜃 + 2 sin 𝜃 cos 𝜃 a𝑜𝜀 + 2 sin2 𝜃 a × a𝑜𝜀 =
2 2 2 2 2
= 1 + sin 𝜃a𝑜𝜀 + (1 − cos 𝜃)a × a𝑜𝜀 = 1 + (sin 𝜃a𝑜 + (1 − cos 𝜃)a × a𝑜)𝜀.
Note that to simplify the product of vectors (a + a𝑜𝜀)(a − a𝑜𝜀), the following calculations were performed:
(a + a𝑜𝜀)(a − a𝑜𝜀) = aa − aa𝑜𝜀 + a𝑜a𝜀 − a𝑜a𝑜𝜀𝜀 = aa + (a𝑜a − aa𝑜)𝜀,
where aa = −(a, a) + a × a = −‖a‖2 = −1, therefore aa = −1. The subtraction was simplified as follows:
a𝑜a − aa𝑜 = −(a𝑜, a) + a𝑜 × a + (a, a𝑜) − a × a𝑜 = −2a × a𝑜.
The result of simplifications is an expression of the form:
(a + a𝑜𝜀)(a − a𝑜𝜀) = (−1 − 2a × a𝑜𝜀).
As a result, we obtain the formula for the dual quaternion product 𝑅𝑅†:
𝑅𝑅† = 1 + (sin 𝜃a𝑜 + (1 − cos 𝜃)a × a𝑜)𝜀, (9)
where a × a𝑜 has the geometric meaning of the projection of the origin onto the A axis or, in other words, the point of the axis closest to the origin. Now we calculate the second term 𝑅p𝑜𝜀𝑅†:
𝑅p𝑜𝜀𝑅† = (cos 𝜃 + sin 𝜃(a + a𝑜𝜀)) p𝑜𝜀(cos 𝜃 − sin 𝜃(a − a𝑜𝜀)) =
2 2 2 2
= (cos 𝜃 + sin 𝜃(a + a𝑜𝜀))(cos 𝜃 p𝑜𝜀 − sin 𝜃 p𝑜a𝜀 + sin 𝜃 p𝑜a𝑜𝜀2) =
2 2 2 2 2
= cos2 𝜃 p𝑜𝜀 − sin 𝜃 cos 𝜃 p𝑜a𝜀 + sin 𝜃 cos 𝜃(a + a𝑜𝜀)p𝑜𝜀 − sin2 𝜃(a + a𝑜𝜀)p𝑜a𝜀 =
2 2 2 2 2 2
= cos2 𝜃 p𝑜𝜀 − sin 𝜃 cos 𝜃 p𝑜a𝜀 + sin 𝜃 cos 𝜃 ap𝑜𝜀 −ap𝑜a𝜀 =
2 2 2 2 2
= cos2 𝜃 p𝑜𝜀 + sin 𝜃 cos 𝜃 (ap𝑜 − p𝑜a)𝜀 − sin2 𝜃 ap𝑜a𝜀 =
2 2 2 2
= cos2 𝜃 p𝑜𝜀 + 2 sin 𝜃 cos 𝜃 a × p𝑜𝜀 − sin2 𝜃 (p𝑜 − 2(a, p𝑜)a)𝜀 =
2 2 2 2
= (cos2 𝜃 − sin2 𝜃) p𝑜𝜀 + sin 𝜃a × p𝑜𝜀 + a𝜀 =
2 2
= cos 𝜃p𝑜𝜀 + sin 𝜃a × p𝑜𝜀 + (1 − cos 𝜃)(a, p𝑜)a𝜀.
The following simplifications were used in calculating the main part:
(a + a𝑜𝜀)p𝑜𝜀 = ap𝑜𝜀 + a𝑜p𝑜𝜀2 = ap𝑜𝜀,
(a + a𝑜𝜀)p𝑜a𝜀 = ap𝑜a𝜀 + a𝑜p𝑜a𝜀2 = ap𝑜a𝜀,
ap𝑜 − p𝑜a = −(a, p𝑜) + a × p𝑜 + (p𝑜, a) − p𝑜 × a = 2a × p𝑜,
ap𝑜a = a (−(p𝑜, a) + p𝑜 × a) = −(p𝑜, a)a + a(p𝑜 × a) =
= −(p𝑜, a)a − (a, p𝑜 × a) + a × p𝑜 × a = −(p𝑜, a)a + a × p𝑜 × a =
= −(p𝑜, a)a + p𝑜||a||2 − (a, p𝑜)a = p𝑜 − 2(a, p𝑜)a.
In the end we got:
𝑅p𝑜𝜀𝑅† = (cos 𝜃p𝑜 + sin 𝜃a × p𝑜 + (1 − cos 𝜃)(a, p𝑜)a)𝜀.
Note that in this expression the moment a𝑜 is missing and the expression in brackets at the imaginary unit 𝜀 exactly repeats Rodrigues’ formula for the rotation of the radius vector around the axis with the direction vector a passing through the origin.
Let’s now write down the complete formula:
𝑅𝑃𝑅† = 𝑅𝑅†+𝑅p𝑜𝜀𝑅† = 1+[cos 𝜃p𝑜+sin 𝜃a×p𝑜+(1−cos 𝜃)(a, p𝑜)a+sin 𝜃a𝑜+(1−cos 𝜃)a×a𝑜]𝜀, (10) where a × a𝑜 corresponds to a point on the axis of rotation. The part responsible for rotation around an arbitrary axis in this case is hidden in the term 𝑅𝑅†.
It is also worth noting the importance of the scalar part in the dual quaternion representation of the point 𝑃 = 1 + p𝑜𝜀. Without this part, there would be no 𝑅𝑅† term in the final formula.
A direction vector (free vector) can be represented by a pure dual quaternion:
V = 0 + v𝑜𝜀
and the «translational» part of 𝑅𝑅† does not act on such a dual quaternion:
𝑅V𝑅† = 𝑅0𝑅† + 𝑅v𝑜𝜀𝑅† = 𝑅v𝑜𝜀𝑅† = (cos 𝜃v𝑜 + sin 𝜃a × v𝑜 + (1 − cos 𝜃)(a, v𝑜)a)𝜀. (11)
Similarly, a point in projective space with homogeneous coordinates (𝑥,𝑦,𝑧 ∶ 𝑤) = (p𝑜 ∣ 𝑤) is represented by the dual quaternion 𝑃𝑤 = 𝑤 + p𝑜𝜀 and the same formula can be used:
𝑅𝑃𝑤𝑅† = 𝑅𝑤𝑅† + 𝑅p𝑜𝜀𝑅† = 𝑤𝑅𝑅† + 𝑅p𝑜𝜀𝑅† =
= 𝑤 + [cos 𝜃p𝑜 + sin 𝜃a × p𝑜 + (1 − cos 𝜃)(a, p𝑜)a + 𝑤 sin 𝜃a𝑜 + 𝑤(1 − cos 𝜃)a × a𝑜]𝜀.
2.3.2. Rotation around an arbitrary axis using Rodrigues’ formula
Let us show that the formulas (10) and (11) can be obtained from the usual Rodrigues vector formula. We will consider the rotation of a point using the usual vector notation. We will associate a point 𝑃 with a vector p, where the superscript 𝑜 is removed since we have moved to the vector formalism.
We perform the rotation around an axis passing through point 𝑃0 in the direction of the radius vector a. We associate point 𝑃0 with the radius vector p0. We perform the rotation using Rodrigues’ formula in three steps:
- Subtract the vector p0 from p, thereby moving the origin to point 𝑃0 or, alternatively, moving the axis to the origin of the new coordinate system.
- We use Rodrigues’ formula to perform the rotation by applying it to the vector p − p0.
- Add the vector 𝑝0 to the result of the rotation, returning the coordinate system to its original position.
If 𝑅𝜃,a(p) = cos 𝜃p+sin 𝜃a×p+(1−cos 𝜃)(a, p)a, then the rotation around the axis passing through the point 𝑃0 with the direction vector a will be given by the formula:
p′ = 𝑅𝜃,a(p − p0) + p0.
Let’s expand on this formula:
𝑅𝜃,a(p − p0) + p0 = cos 𝜃(p − p0) + sin 𝜃a × (p − p0) + (1 − cos 𝜃)(a, p − p0)a + p0 =
= cos 𝜃p − cos 𝜃p0 + sin 𝜃a × p − sin 𝜃a × p0 + (1 − cos 𝜃)(a, p)a − (1 − cos 𝜃)(a, p0)a + p0 =
= cos 𝜃p + sin 𝜃a × p + (1 − cos 𝜃)(a, p)a − cos 𝜃p0 − sin 𝜃a × p0 − (1 − cos 𝜃)(a, p0)a + p0.
The choice of the point 𝑃0 on the straight axis of rotation is generally arbitrary, however, if we define the axis by Plücker coordinates using the screw A = a + a𝑜𝜀, then we can choose p0 = a × a𝑜 — the projection of the point 𝑂 onto the straight line. With this choice of point, the expressions in the tail will be simplified:
a × p0 = a × a × a𝑜 = a(a, a𝑜) − a𝑜(a, a) = −a𝑜
due to the Plücker condition (a, a𝑜) = 0 and the normalization of a ‖a‖ = 1
(a, p0)a = (a, a × a𝑜)a = 0,
because (a, a × a𝑜) = 0.
− cos 𝜃p0 + sin 𝜃a + p0 = (1 − cos 𝜃)p0 + sin 𝜃a𝑜 = (1 − cos 𝜃)a × a𝑜 + sin 𝜃a𝑜.
As a result, given that p0 = a × a𝑜 we get:
𝑅𝜃,a(p − p0) + p0 = cos 𝜃p + sin 𝜃a × p + (1 − cos 𝜃)(a, p)a + sin 𝜃a𝑜 + (1 − cos 𝜃)a × a𝑜, which completely coincides with the formula (10) obtained by the dual quaternion method up to the
notation p → p𝑜.
2.3.3. Translation along an axis without rotation
Let’s write the dual quaternion for translation along the axis A = a + a𝑜𝜀:
𝜃𝑜
𝑇 = 1 + a𝜀,
2
where 𝜃𝑜 is the dual part of the dual angle 𝛩.
𝜃𝑜 𝜃𝑜
𝑇† = (𝑇∗) = (1 + a∗𝜀) = (1 − a𝜀) = 1 + 𝜃𝑜 a𝜀 = 𝑇.
2 2 2
We get that 𝑇† = 𝑇.
Let’s apply the sandwich product to the point 𝑃 = 1 + p𝑜𝜀:
𝜃𝑜 𝜃𝑜
𝑃′ = 𝑇𝑃𝑇† = 𝑇𝑃𝑇 = (1 + a𝜀)(1 + p𝑜𝜀)(1 + a𝜀) =
2 2
= (1 + 𝜃𝑜 a𝜀)(1 + 𝜃𝑜 a𝜀 + p𝑜𝜀) = 1 + 𝜃𝑜 a𝜀 + p𝑜𝜀 + 𝜃𝑜 a𝜀 + 𝜃𝑜 𝜃𝑜 aa𝜀2 + 𝜃𝑜 ap𝑜𝜀2 =
2 2 2 2 2 2 2
= 1 + 𝜃𝑜 a𝜀 + p𝑜𝜀 + 𝜃𝑜 a𝜀 = 1 + 𝜃𝑜a𝜀 + p𝑜𝜀 = 1 + (𝜃𝑜a + p𝑜)𝜀 = 1 + (p𝑜 + 𝜃𝑜a)𝜀.
2 2
𝑃′ = 𝑇𝑃𝑇† = 1 + (p𝑜 + 𝜃𝑜a)𝜀.
2.3.4. Composition of rotations and translations
Above, we used the translation principle to obtain the screw motion dual quaternion and wrote it in terms of the dual (7) and real (8) angles. However, interestingly, it can be obtained by dual quaternion multiplication of only the rotational and only the translational dual quaternions.
Let us designate:
𝑅 = cos 𝜃 + sin 𝜃(a + a𝑜𝜀),
2 2
𝜃𝑜
𝑇 = 1 + 𝑛𝜀, 2
𝑅𝑇 = (cos 𝜃 𝜃 𝑜𝜀))(1 + 𝜃𝑜 a𝜀) = + sin (a + a
2 2 2
= cos 𝜃 + sin 𝜃(a + a𝑜𝜀) + 𝜃𝑜 cos 𝜃 a𝜀 + sin 𝜃 a𝜃𝑜 a𝜀 + sin 𝜃 𝜃𝑜 a𝑜a𝜀2 =
2 2 2 2 2 2 2 2
= cos 𝜃 + sin 𝜃(a + a𝑜𝜀) + cos 𝜃 𝜃𝑜 a𝜀 − sin 𝜃 𝜃𝑜 𝜀 =
2 2 2 2 2 2
= cos 𝜃 + sin 𝜃(a + a𝑜𝜀) + (cos 𝜃 a − sin 𝜃) 𝜃𝑜 𝜀 = 𝛬.
2 2 2 2 2
Taking into account the simplification aa = −(a, a) + a × a = −‖a‖2 = −1, we obtain the final formula:
𝛬 = 𝑅𝑇,
which completely coincides with the full formula:
𝑇𝑅 = (1 + 𝜃𝑜 a𝜀)(cos 𝜃 + sin 𝜃(a + a𝑜𝜀)) = cos 𝜃 + 𝜃𝑜 a cos 𝜃𝜀 + sin 𝜃(a + a𝑜𝜀) + sin 𝜃 𝜃𝑜 aa𝜀 =
2 2 2 2 2 2 2 2 2
= cos 𝜃 + sin 𝜃(a + a𝑜𝜀) + (cos 𝜃 a − sin 𝜃) 𝜃𝑜 𝜀 = 𝛬.
2 2 2 2 2
It turns out that translation and rotation along the screw axis commute:
𝛬 = 𝑅𝑇 = 𝑇𝑅.
2.4. Screw motion of a straight line
An arbitrary line with a specified direction a is defined by a pure dual quaternion L = v + m𝜀. The components of the vectors {v ∣ m} are Plücker coordinates, and the Plücker condition (v, m) = 0 is satisfied. Screw motion is defined by the same dual quaternion 𝛬, but the sandwich formula looks somewhat different:
L′ = 𝛬L𝛬∗.
Just as for a point, we will first consider the translation of a straight line, then rotations, and then find their composition.
2.4.1. Translation of a straight line along an axis
Consider the line L = v + m𝜀 and apply 𝑇 to it as a sandwich operator:
𝑇 = 1 + 𝜃𝑜 a𝜀, 𝑇∗ = 1 − 𝜃𝑜 a𝜀,
2 2
𝜃𝑜
𝑇(v + m𝜀)𝑇∗ = (1 + a𝜀)(v + m𝜀)(1 − 𝜃𝑜 a𝜀).
2 2
It can be shown that 𝑇𝑇∗ = 1, since 𝑇∗ = 1 − 𝜃𝑜 a𝜀, then
2
(1 + 𝜃𝑜 a𝜀)(1 − 𝜃𝑜 a𝜀) = 1 − 𝜃𝑜 a𝜀 + 𝜃𝑜 a𝜀 = 1 ⇒ |𝑇| = 𝑇𝑇∗ = 1.
2 2 2 2
Let’s now reveal the formula:
𝑇(v + m𝜀)𝑇∗ = 𝑇v𝑇∗ + 𝑇m𝑇∗𝜀.
𝜃
Because ∗ = (1 + 𝑜 a𝜀)(v − 𝜃𝑜 va𝜀) = v + 𝜃𝑜 av𝜀 − 𝜃𝑜 va𝜀
𝑇v𝑇
2 2 2 2
𝜃
and ∗ = m + 𝑜 am𝜀 − 𝜃𝑜 ma𝜀,
𝑇m𝑇
2 2
that 𝑇m𝑇 m 𝜃𝑜 am 𝜃𝑜 2 = m𝜀.
∗𝜀 = 𝜀 + 𝜀2 − ma𝜀
2 2
𝑇v𝑇∗ + 𝑇m𝑇∗𝜀 = v + 𝜃𝑜 (av − va)𝜀 + m𝜀. 2
av − va = −(a, v) + a × v + (v, a) − v × a = 2a × v.
Then it turns out that:
𝐿′ = 𝑇𝐿𝑇∗ = v + 𝜃𝑜 2a × v𝜀 + m𝜀 = v + (m + 𝜃𝑜a × v)𝜀, 2
where m = p0 × v ⇒ m + 𝜃𝑜a × v = p0 × v + 𝜃𝑜a × v = (p0 + 𝜃𝑜a) × v, therefore we get:
𝐿′ = v + (p0 + 𝜃𝑜a) × v𝜀.
As a result, as expected, the direction vector v does not change during parallel translation (translation), but the moment of the line is transformed. The line was moved from the point 𝑃0 towards the a axis by the amount 𝜃𝑜. Note that we can map 𝑇−1 onto 𝑇∗, since |𝑇| = 1 and 𝑇∗ = 𝑇−1. Therefore, the sandwich formula for translation can also be written as follows [13, p. 51]:
𝐿′ = 𝑇𝐿𝑇∗ = 𝑇𝐿𝑇−1.
2.4.2. Rotation of a line around an axis
Let’s consider the rotating dual quaternion 𝑅 and find its conjugate dual quaternion 𝑅∗:
𝑅 = cos 𝜃 + sin 𝜃(a + a𝑜𝜀), 𝑅∗ = cos 𝜃 − sin 𝜃(a + a𝑜𝜀).
2 2 2 2
It was shown earlier that AA = −1, where A = a + a𝑜𝜀, so:
𝑅𝑅∗ = cos2 𝜃 − sin 𝜃 cos 𝜃 A + sin 𝜃 cos 𝜃 A − sin2 𝜃 AA = cos2 𝜃 + sin2 𝜃 = 1 ⇒ 𝑅𝑅∗ = 1,
2 2 2 2 2 2 2 2
from which it follows that 𝑅−1 = 𝑅∗.
The rotation of the line L = v + m𝜀 is carried out by the sandwich operator:
L′ = 𝑅L𝑅∗ = 𝑅v𝑅∗ + 𝑅m𝑅∗𝜀, Let’s calculate the first term in this formula:
𝑅v𝑅 = (cos 𝜃 + sin 𝜃 A) v (cos 𝜃 − sin 𝜃 A) =
2 2 2 2
= cos2 𝜃 v − sin 𝜃 cos 𝜃 vA + sin 𝜃 cos 𝜃 Av − sin2 𝜃 AvA =
2 2 2 2 2 2
= cos2 𝜃 v + sin 𝜃 cos 𝜃(Av − vA) − sin2 𝜃 AvA.
2 2 2 2
Because
Av = (a + a𝑜𝜀)v = av + a𝑜v𝜀 = −(a, v) − (a𝑜, v)𝜀 + a × v + a𝑜 × v𝜀
and
vA = v(a + a𝑜𝜀) = va + va𝑜𝜀 = −(v, a) − (v, a𝑜)𝜀 + v × a + v × a𝑜𝜀,
that
Av − vA = 2a × v + 2a𝑜 × v𝜀.
Next, we calculate the dual quaternion product AvA:
AvA = (a+a𝑜𝜀)v(a+a𝑜𝜀) = (a+a𝑜𝜀)(va+va𝑜𝜀) = ava+ava𝑜𝜀+a𝑜va𝜀+a𝑜va𝑜𝜀2 = ava+(ava𝑜 +a𝑜va)𝜀, where to simplify the dual part ava𝑜 + a𝑜va we take into account that
ava𝑜 = −a(v, a𝑜) + av × a𝑜 = −(v, a𝑜)a − (a, v × a𝑜) + a × v × a𝑜 =
= −(v, a𝑜)a − (a, v × a𝑜) + v(a, a𝑜) − a𝑜(a, v),
a𝑜va = −a𝑜(v, a) + a𝑜v × a = −(v, a)a𝑜 − (a𝑜, v × a) + a𝑜 × v × a =
= −(v, a)a𝑜 − (a𝑜, v × a) + v(a𝑜, a) − a(a𝑜, v),
after which the expression in brackets is simplified:
ava𝑜 + a𝑜va = −2(v, a𝑜)a − 2(v, a)a𝑜 + 2(a, a𝑜)v = −2((v, a𝑜)a + (v, a)a𝑜).
We used the Plücker condition (a𝑜, a) = 0 and the mixed product property (a𝑜, v × a) = −(a, v × a𝑜).
Given that ava = −a(v, a) + av × a = −a(v, a) − (a, v × a) + a × v × a = −a(v, a) + v(a, a) − a(a, v) = v − 2a(v, a), we obtain the final expression:
AvA = v − 2a(v, a) − 2((v, a𝑜)a + (v, a)a𝑜)𝜀.
Substituting into the formula for 𝑅v𝑅 we get:
cos2 𝜃 v + 2 sin 𝜃 cos 𝜃 (a × v + a𝑜 × v𝜀) − sin2 𝜃 (v − 2a(v, a) − 2((v, a𝑜)a + (v, a)a𝑜)𝜀) =
2 2 2 2
= (cos2 𝜃 − sin2 𝜃) v + sin 𝜃 (a × v + a𝑜 × v𝜀) + 2 sin2 𝜃 (a(v, a) + ((v, a𝑜)a + (v, a)a𝑜)𝜀) =
2 2 2
= cos 𝜃v + sin 𝜃a × v + (1 − cos 𝜃)a(v, a) + [sin 𝜃a𝑜 × v + (1 − cos 𝜃)((v, a𝑜)a + (v, a)a𝑜)]𝜀.
The expression 𝑅m𝑅∗𝜀 is calculated in a completely similar way and is significantly simplified by multiplying by the dual imaginary unit 𝜀:
𝑅m𝑅∗𝜀 = (cos 𝜃m + sin 𝜃a × m + (1 − cos 𝜃)a(m, a))𝜀.
Now we can write a sandwich formula for the rotation of a line around an axis:
L′ = 𝑅L𝑅∗ = v′ + m′𝜀,
where:
v′ = cos 𝜃v + sin 𝜃a × v + (1 − cos 𝜃)a(v, a),
m′ = cos 𝜃m + sin 𝜃a × m + (1 − cos 𝜃)a(m, a) + sin 𝜃a𝑜 × v + (1 − cos 𝜃)((v, a𝑜)a + (v, a)a𝑜).
To check this equality, we can take Rodrigues’ formula and use the principle of transfer to write:
L′ = cos 𝜃L + sin 𝜃A × L + (1 − cos 𝜃)(A, L)A,
where
L = v + m𝜀,
A = a + a𝑜𝜀.
The arguments of the functions cos and sin are real, since we have pure rotation without translation:
A × L = a × v + (a × m + a𝑜 × v)𝜀,
(A, L)A = (a, v)a + [(a, m)a + (a𝑜, v)a]𝜀 + (a, v)a𝑜𝜀.
Combining the expressions we obtain:
L′ = cos 𝜃v + sin 𝜃a × v + (1 − cos 𝜃)a(v, a) + [cos 𝜃m + sin 𝜃a × m + (1 − cos 𝜃)(a, m)a]𝜀 +
+ [sin 𝜃a𝑜 × v + (1 − cos 𝜃)((a𝑜, v)a + (a, v)a𝑜)]𝜀 =
= 𝑅𝜃,a(v) + 𝑅𝜃,a(m)𝜀 + [sin 𝜃a𝑜 × v + (1 − cos 𝜃)((v, a𝑜)a + (v, a)a𝑜)]𝜀,
which exactly repeats the result obtained from the dual quaternion formula.
2.5. Screw motion of a plane
Let us recall that the dual quaternion representation of a plane has the following form:
𝛱 = 𝑎𝑖 + 𝑏𝑗 + 𝑐𝑘 + 𝑑𝜀 = n + 𝑑𝜀.
where n is the unit direction normal vector, and 𝑑 is the distance from the origin to the plane. The
sandwich formula for the screw motion of the plane will have the form [13, pp. 49–50]:
𝛱′ = 𝛬𝛱𝛬†,
where the dual quaternion of screw motion is already known to us:
𝛬 = cos 𝜃 + sin 𝜃(a + a𝑜𝜀) + (cos 𝜃 a − sin 𝜃) 𝜃𝑜 𝜀.
2 2 2 2 2
2.5.1. Plane Translation
Consider the translation 𝑇 = 1 + 𝜃𝑜 a𝜀. Note that:
2
𝑇𝑇 = (1 + 𝜃𝑜 a𝜀)2 = 1 + 2𝜃𝑜 𝑜a𝜀, a𝜀 = 1 + 𝜃
2 2
𝑇𝛱𝑇† = 𝑇𝛱𝑇 = 𝑇𝑑𝜀𝑇 + 𝑇n𝑇. Let’s carry out the calculations separately:
𝑇𝑑𝜀𝑇 = 𝑑𝜀𝑇𝑇 = 𝑑𝜀 + 2𝜃𝑜a𝜀𝑑𝜀 = 𝑑𝜀,
𝑇n𝑇 = (1 + 𝜃𝑜 a𝜀) n (1 + 𝜃𝑜 a𝜀) = (1 + 𝜃𝑜 a𝜀)(n + 𝜃𝑜 na𝜀) =
2 2 2 2
= n + 𝜃𝑜 na𝜀 + 𝜃𝑜 an𝜀 = n + 𝜃𝑜 (na + an)𝜀 = n − 𝜃𝑜(a, n)𝜀
2 2 2
because the product of vectors:
na + an = −(n, a) + n × a − (a, n) + a × n = −2(a, n).
As a result we get:
𝛱′ = 𝑇𝛱𝑇 = n + (𝑑 − 𝜃𝑜(a, n))𝜀
2.5.2. Rotation of a plane
Consider now the pure rotation 𝑅 = cos 𝜃 + sin 𝜃 (a + a𝑜𝜀) and 𝑅† = cos 𝜃 − sin 𝜃 (a + a𝑜𝜀). Using the
2 2 2 2 formula (9), we write:
𝑅(n + 𝑑𝜀)𝑅† = 𝑅n𝑅† + 𝑑𝜀𝑅𝑅† = 𝑅n𝑅† + 𝑑𝜀,
The calculation of 𝑅n𝑅† is similar to the calculation we already did for a straight line, but it differs from it in details, so we will also present all the calculations in detail:
(cos 𝜃 + sin 𝜃(a + a𝑜𝜀))(cos 𝜃 n − sin 𝜃(na − na𝑜𝜀)) =
2 2 2 2
= cos2 𝜃 n − cos 𝜃 sin 𝜃(na − na𝑜𝜀) + sin 𝜃 cos 𝜃(an + a𝑜n𝜀) − sin2 𝜃(ana − ana𝑜𝜀 + a𝑜na𝜀) =
2 2 2 2 2 2
= cos2 𝜃 n + 2 cos 𝜃 sin 𝜃 (a × n − (a𝑜, n)𝜀) − sin2 𝜃 (n − 2(n, a)a + 2(a, n, a𝑜)𝜀) =
2 2 2 2
= cos 𝜃n + sin 𝜃 (a × n − (a𝑜, n)𝜀) + (1 − cos 𝜃)[(n, a)a − (a, n, a𝑜)𝜀] =
= cos 𝜃n + sin 𝜃a × n + (1 − cos 𝜃)(n, a)a − [sin 𝜃(a𝑜, n) + (a, n, a𝑜)(1 − cos 𝜃)]𝜀.
The following simplifications were used during the calculation:
−na + na𝑜𝜀 + an + a𝑜n𝜀 = (an − na) + (a𝑜n + na𝑜)𝜀 = 2a × n − 2(a𝑜, n)𝜀,
ana = ‖a‖2n − 2(n, a)a = n − 2(n, a)a,
a𝑜na = −a𝑜(n, a) + a𝑜n × a = −a𝑜(n, a) − (a𝑜, n × a) + a𝑜 × n × a =
= −a𝑜(n, a) − (a𝑜, n × a) + n(a𝑜, a) − a(a𝑜, n),
ana𝑜 = −a(n, a𝑜) + an × a𝑜 = −a(n, a𝑜) − (a, n × a𝑜) + a × n × a𝑜 =
= −a(n, a𝑜) − (a, n × a𝑜) + n(a, a𝑜) − a𝑜(a, n),
a𝑜na − ana𝑜 = −(a𝑜, n × a) − (a, n × a𝑜) = +(a, n, a𝑜) + (a, n, a𝑜) = 2(a, n, a𝑜).
The result is that:
𝛱′ = 𝑅𝛱𝑅† = cos 𝜃n + sin 𝜃a × n + (1 − cos 𝜃)(n, a)a + [𝑑 − sin 𝜃(a𝑜, n) − (1 − cos 𝜃)(a, n, a𝑜)]𝜀
In [13] there is only a formula for rotation around an axis passing through the origin, but there is no formula for an arbitrary axis of rotation.
2.6. Relationship of dual quaternions to projective transformation matrices in ℝP3 Let us write the dual quaternion that defines the screw motion in quaternion form:
𝛬 = 𝜆 + 𝜆𝑜𝜀 = cos 𝜃 + sin 𝜃 a + (sin 𝜃 a𝑜 + 𝜃𝑜 cos 𝜃 a − 𝜃𝑜 sin 𝜃)𝜀,
2 2 2 2 2 2 2
𝜆 = 𝜆0 +𝜆1i+𝜆2j+𝜆3k = cos 𝜃2 +sin 𝜃2 a, 𝜆𝑜 = 𝜆𝑜0 +𝜆𝑜1i+𝜆𝑜2j+𝜆𝑜3k = sin 𝜃2 a𝑜 + 𝜃2𝑜 cos 𝜃2 a− 𝜃2𝑜 sin 𝜃2.
The quaternion 𝜆 specifies the rotation, and the quaternion 𝜆𝑜 is responsible for translation operations.
Table 2 Relationship of dual quaternions to projective transformation matrices
Comparison criterion | Matrixes | Dual quaternions |
Number of scalar coefficients | 4 × 4 = 16 | 4 + 4 = 8 |
Multiplications (compositions) | 48 scalar multiplications | 48 scalar multiplications |
Point motion | 12 scalar multiplications | 96 scalar multiplications |
The projective transformation matrix that defines rotation and translation looks like this:
𝑟11 | 𝑟21 | 𝑟31 | 𝑡𝑥 |
𝑟12 | 𝑟22 | 𝑟32 | 𝑡𝑦 |
𝑟13 | 𝑟23 | 𝑟33 | 𝑡𝑧 |
0 | 0 | 0 | 1 |
𝑅 | t |
0𝑇 | 1 |
⎡⎤
⎢⎥ ⎢⎥
𝑀 = [] = ⎢⎥
⎢⎥
⎢⎥
⎣⎦
where the matrix 𝑅 is written in terms of the quaternion coefficients 𝜆0, 𝜆1, 𝜆2, 𝜆3 as
⎡𝜆20 + 𝜆21 − 𝜆22 − 𝜆23 ⎢ 𝑅 = ⎢ 2(𝜆1𝜆2 + 𝜆0𝜆3) ⎢ ⎣ 2(𝜆1𝜆3 − 𝜆0𝜆2) | 2(𝜆1𝜆2 + 𝜆0𝜆3) 𝜆20 − 𝜆21 + 𝜆22 − 𝜆23 2(𝜆2𝜆3 + 𝜆0𝜆1) | 2(𝜆1𝜆3 + 𝜆0𝜆2) ⎤ ⎥ 2(𝜆2𝜆3 − 𝜆0𝜆1) ⎥. ⎥ 𝜆20 − 𝜆21 − 𝜆22 + 𝜆23⎦ |
Let us show that the column vector t can be calculated using the formula
t = 2𝜆𝑜𝜆∗.
Using the Plücker condition (a, a𝑜) = 0 and the unity of the vector a, we can prove:
2𝜆𝑜𝜆∗ = 𝜃𝑜a + sin 𝜃a𝑜 + 2 sin2 𝜃 a × a𝑜 = 𝜃𝑜a + sin 𝜃a𝑜 + (1 − cos 𝜃)a × a𝑜. 2 This formula has two terms:
- sin 𝜃a𝑜+(1−cos 𝜃)a×a𝑜 — coincides with the part of the formula for rotation around an arbitrary axis (translation and return to the origin);
- 𝜃𝑜a — specifies a translation along the a axis by a distance 𝜃.
If the matrix 𝑀 is given, then the principal part 𝜆 of the dual quaternion 𝛬 can be calculated using a special algorithm, described in detail in section 1.4.3, and the calculation of 𝜆𝑜 can be carried out using the formula:
𝜆𝑜 = t𝜆 = 𝑡𝜆, 𝑡 = 0 + t.
The formula is valid due to (see table 2):
t = 2𝜆𝑜𝜆∗ ⇒ t𝜆 = .
- Dual quaternions are computationally less efficient than matrices.
- Dual quaternions are more convenient for defining an arbitrary axis.
- Dual quaternions are easier to use for making heuristic inferences.
2.7. Reflection about a plane using dual quaternions
For a point 𝑃 represented by a dual quaternion 𝑃 = 𝑤+p𝜀 = 𝑤+(𝑥i+𝑦j+𝑧k)𝜀, the reflection formula with respect to the plane represented by the dual quaternion 𝑁 = n + 𝑑𝜀, where ‖n‖ = 1, has the following form:
𝑃′ = −𝑁𝑃∗𝑁.
A similar reflection formula is valid for an arbitrary plane 𝜋, represented by the dual quaternion 𝛱 = + 𝛿𝜀:
𝛱′ = −𝑁𝛱∗𝑁.
In the case of reflection of a straight line represented by the dual quaternion 𝐿 = v + m𝜀, a different formula is valid:
𝐿′ = 𝑁𝐿†𝑁−1.
Since usually ‖n‖ = 1, then |𝑁|2 = ‖n‖2 = 1 and 𝑁−1 = 𝑁∗/|𝑁|2 = 𝑁∗.
Let us prove the formulas.
2.7.1. Point reflection
𝑃′ = −𝑁𝑃∗𝑁 = −(n + 𝑑𝜀)(𝑤 − p𝜀)(n + 𝑑𝜀) = −(n + 𝑑𝜀)(𝑤n + 𝑑𝑤𝜀 − pn𝜀 − 𝑑p𝜀2) =
= −(n + 𝑑𝜀)(𝑤n + 𝑑𝑤𝜀 − pn𝜀) = −(𝑤nn + 𝑑𝑤n𝜀 − npn𝜀 + 𝑑𝑤n𝜀 + 𝑑2𝑤𝜀2 − pn𝑑𝜀2) =
= −(−𝑤 + 2𝑑𝑤n𝜀 − npn𝜀) = 𝑤 + npn𝜀 − 2𝑑𝑤n𝜀 =
= 𝑤 + (npn − 2𝑑𝑤n)𝜀 = 𝑤 + (p − 2(p, n)n − 2𝑑𝑤n)𝜀.
It can be seen that in the dual part of the dual quaternion 𝑃′ we obtain exactly the same expression as in the formula (6), if the point is affine and 𝑤 = 1.
For an affine point the expression is somewhat simplified:
𝑃′ = −𝑁𝑃∗𝑁 = 1 + (p − 2(p, n)n − 2𝑑n)𝜀 = 1 + (npn − 2𝑑n)𝜀.
2.7.2. Reflection of a plane
The reflected plane is defined by the dual quaternion 𝛱 = + 𝛿𝜀, and the plane relative to which the reflection occurs is represented by the dual quaternion 𝑁 = n + 𝑑𝜀, ‖n‖ = 1.
Note that 𝛱∗ = −𝜈 + 𝛿𝜀 and write
− 𝑁𝛱∗𝑁 = −(n + 𝑑𝜀)(− + 𝛿𝜀)(n + 𝑑𝜀) =
= −(n + 𝑑𝜀)(−n − 𝑑𝜀 + 𝛿n𝜀 + 𝛿𝑑𝜀2) = −(n + 𝑑𝜀)(−n − 𝑑𝜀 + 𝛿n𝜀) =
= −(−nn − 𝑑n𝜀 + 𝛿nn𝜀 − 𝑑n𝜀 − 𝑑2𝜀2 + 𝛿𝑑n𝜀2) = nn + 𝑑n𝜀 + 𝛿𝜀 + 𝑑n𝜀 =
= nn + 𝑑(n + n)𝜀 + 𝛿𝜀 = − 2(, n)n − (2𝑑(, n) − 𝛿)𝜀.
As a result, we obtain the formula:
−𝑁𝛱∗𝑁 = − 2(, n)n − (2𝑑(, n) − 𝛿)𝜀.
This formula can be rewritten in a different form if we consider the case when the planes 𝑁 and 𝛱 are not parallel and have a common point 𝑃, then
𝛿𝜀 = −(𝑃,) = −(1 + p𝜀,) = −(1,) − (p,)𝜀 = −(p,)𝜀, 𝑑𝜀 = −(𝑃, n).
Using these two relations, the plane reflection formula can be written as follows:
− 𝑁𝛱∗𝑁 = − 2(, n)n − (−2(𝑃, n)(, n) + (𝑃,)) = − 2(, n)n − ((𝑃,−2(, n)n) + (𝑃,)) =
= − 2(, n)n − (𝑃, − 2(, n)n) = − 2(, n)n − (𝑃, − 2(, n)n) = nn − (𝑃, nn).
2.7.3. Reflection of a line
We will assume that the normal vector of the plane relative to which the reflection occurs is unitary. Then 𝑁−1 = 𝑁∗/|𝑁| = 𝑁∗/‖n‖ = 𝑁∗. As a result, 𝑁−1 = 𝑁∗ = n∗ + 𝑑𝜀 = −n + 𝑑𝜀. Let us now find the dual conjugation of the dual quaternion of the line 𝐿
𝐿† = (v + m𝜀)† = v∗ − m𝜀 = −v + m𝜀.
Now we transform the expression
𝐿′ = 𝑁𝐿†𝑁−1 = (n + 𝑑𝜀)(−v + m𝜀)(−n + 𝑑𝜀) = (n + 𝑑𝜀)(vn − 𝑑v𝜀 − mn𝜀 + 𝑑m𝜀2) =
= (n + 𝑑𝜀)(vn − 𝑑v𝜀 − mn𝜀) = nvn − 𝑑nv𝜀 − nmn𝜀 + 𝑑vn𝜀 − 𝑑2v𝜀2 − 𝑑mn𝜀2 =
= nvn − nmn𝜀 + 𝑑(vn − nv)𝜀 = nvn − nmn𝜀 + 2𝑑v × n𝜀 =
= ‖n‖2v − 2(v, n)n − (‖n‖2m − 2(m, n)n)𝜀 + 2𝑑v × n𝜀 = v − 2(v, n)n − (m − 2(m, n)n − 2𝑑v × n)𝜀.
Let us express the moment m = p × v through the point 𝑃 on the line and the vector v. In this case, we take into account that v − 2(v, n)n = nvn and m − 2(m, n)n = nmn, then
𝑁𝐿†𝑁−1 = nvn − n(p × v)n𝜀 + 2𝑑v × n𝜀 = nvn + (npn) × (nvn)𝜀 + 2𝑑v × n𝜀.
Consider the expression 2𝑑v × n and transform it as follows:
nvn = v − 2(v, n)n ⇒ v = nvn + 2(v, n)n,
2𝑑v × n = −2𝑑n × v = −2𝑑n × (nvn + 2(v, n)n) = = −2𝑑n × (nvn) − 2𝑑(v, n)n × n = −2𝑑n × (nvn), 2𝑑v × n = −2𝑑n × (nvn).
Let’s substitute into the basic formula for reflection:
𝑁𝐿†𝑁−1 = nvn + (npn) × (nvn)𝜀 − 2𝑑n × (nvn) = nvn + (npn − 2𝑑n) × (nvn)𝜀.
Above we obtained the formula 𝑃′ = −𝑁𝑃∗𝑁 = 1 + (npn − 2𝑑n)𝜀, with the help of which we can
write
(npn − 2𝑑n)𝜀 = (𝑃′ − 1)
𝑁𝐿†𝑁−1 = nvn + (𝑃′ − 1) × (nvn) = nvn + (−𝑁𝑃∗𝑁 − 1) × (nvn).
In this form, this formula is written in [13, p. 59]. As a result, we have the formula in three versions:
𝐿′ = 𝑁𝐿†𝑁−1 = nvn + (2𝑑v × n − nmn)𝜀 = v − 2(v, n)n − (m − 2(m, n)n − 2𝑑v × n)𝜀 =
= nvn + (−𝑁𝑃∗𝑁 − 1) × (nvn).
3. Results
As a result of the work, dual quaternionic formulas were obtained for
- of screw motion of a straight line, point, and plane;
- for pure rotation and pure parallel transfer (translation) of straight lines, points and planes;
- formula for calculating the projective matrix of screw motion according to a given dual quaternion;
- formulas for reflecting points, straight lines, and planes relative to randomly positioned planes. We dare to attribute to one of the results the very fact of detailed derivation of these formulas, as this will make it easier for readers of the article to master working with dual quaternions.
4. Discussion
The material presented in this article shows that dual quaternions can be used to comprehensively describe both proper and improper movements in three-dimensional space. Currently, there are many alternative formalisms, the most popular and actively promoted of which is the geometric algebra formalism.
We will not go into a comparison of dual quaternions and geometric algebra here, since without a detailed presentation of the latter in terms consistent with dual quaternions, this comparison is unproductive. However, we note the following.
- In our opinion, when applying the Cayley–Dickson procedure, dual quaternions cannot be called some kind of artificial formation and they are quite logical.
- All dual quaternion formulas, when disclosed, are reduced to standard calculations with threedimensional vectors, which makes it possible to efficiently implement calculations using, for example, shader languages where support for these vectors is implemented at the hardware level.
5. Conclusion
All the formulas obtained are of practical interest, as they can be used to calculate finite complex movements, as well as to construct surfaces (for example, linear ones). In future publications, we plan to use them to visualize various examples of movement, focusing on software implementation. The detailed material in this article will allow you not to be distracted by mathematical details and focus on the subtleties of software implementation and the algorithmic side of the issue.
About the authors
Olesya M. Abakumova
RUDN University
Email: 1132220832@rudn.ru
ORCID iD: 0009-0002-5236-0027
Student of Department of Probability Theory and Cyber Security
6 Miklukho-Maklaya St, Moscow, 117198, Russian FederationMigran N. Gevorkyan
RUDN University
Email: gevorkyan-mn@rudn.ru
ORCID iD: 0000-0002-4834-4895
Scopus Author ID: 57190004380
ResearcherId: E-9214-2016
Docent, Candidate of Sciences in Physics and Mathematics, Associate Professor of Department of Probability Theory and Cyber Security
6 Miklukho-Maklaya St, Moscow, 117198, Russian FederationAnna V. Korolkova
RUDN University
Email: korolkova-av@rudn.ru
ORCID iD: 0000-0001-7141-7610
Scopus Author ID: 36968057600
ResearcherId: I-3191-2013
Docent, Candidate of Sciences in Physics and Mathematics, Associate Professor of Department of Probability Theory and Cyber Security
6 Miklukho-Maklaya St, Moscow, 117198, Russian FederationDmitry S. Kulyabov
RUDN University; Joint Institute for Nuclear Research
Author for correspondence.
Email: kulyabov-ds@rudn.ru
ORCID iD: 0000-0002-0877-7063
Scopus Author ID: 35194130800
ResearcherId: I-3183-2013
Professor, Doctor of Sciences in Physics and Mathematics, Professor of Department of Probability Theory and Cyber Security of RUDN University; Senior Researcher of Laboratory of Information Technologies, Joint Institute for Nuclear Research
6 Miklukho-Maklaya St, Moscow, 117198, Russian Federation; 6 Joliot-Curie St, Dubna, 141980, Russian FederationReferences
- Gevorkyan, M. N., Vishnevskiy, N. A., Didus, K. V., Korolkova, A. V. & Kulyabov, D. S. Dual quaternion representation of points, lines and planes. Discrete and Continuous Models and Applied Computational Science 33, 411–439. doi: 10.22363/2658-4670-2025-33-4-411-439 (Dec. 2025).
- Blaschke, W. J. E. Anwendung dualer Quaternionen auf Kinematik German (Suomalainen tiedeakatemia, Helsinki, 1958).
- Blaschke, W. J. E. Kinematics and Quaternions trans. from the German by Delphenich, D. H. Berlin, 1960. doi: 10.1002/zamm.19620420724.
- Kotelnikov, A. P. The Screw Calculus and Some of Its Applications to Geometry and Mechanics 222 pp. (Annals of the Imperial University of Kazan, Kazan, 1895).
- Dimentberg,F.M.TheScrewCalculusandItsApplicationsinMechanics 162pp.(ForeignTechnology Division, Springfield, 1969).
- Fischer, I. Dual-Number Methods in Kinematics, Statics and Dynamics 240 pp. (CRC Press, 1998).
- Huang, Z., Li, Q. & Ding, H. Basics of Screw Theory in Theory of Parallel Mechanisms (Springer Netherlands, Dordrecht, 2013). doi: 10.1007/978-94-007-4201-7_1.
- Featherstone, R. A Beginner’s Guide to 6-D Vectors (Part 1). IEEE Robotics and Automation Magazine 17, 83–94. doi: 10.1109/MRA.2010.937853 (2010).
- Featherstone, R. A Beginner’s Guide to 6-D Vectors (Part 2) [Tutorial]. IEEE Robotics and Automation Magazine 17, 88–99. doi: 10.1109/MRA.2010.939560 (2010).
- Chelnokov, Y. N. Quaternionic and biquaternionic models and methods of solid mechanics and their applications. Geometry and kinematics of motion 512 pp. (FIZMATLIT, Moscow, 2006).
- Goldman, R. An integrated introduction to computer graphics and geometric modeling 592 pp. (CRC Press Taylor & Francis Group, Boca Raton, London, New York, 2009).
- Goldman, R. Rethinking Quaternions. Theory and Computation doi: 10.2200/S00292ED1V01Y201008CGR013 (Morgan & Claypool, 2010).
- Goldman, R. Dual Quaternions and Their Associated Clifford Algebras 279 pp. (CRC Press Taylor & Francis Group, Boca Raton, London, New York, 2024).
- Kenwright, B. A Survey on Dual-Quaternions 2023. arXiv: 2303.14765 [math.OC].
- Thomas, F. Approaching Dual Quaternions From Matrix Algebra. IEEE Transactions on Robotics 30, 1–12. doi: 10.1109/TRO.2014.2341312 (Aug. 2014).
- Bruno, V. A. Robot Kinematic Modeling and Control Based on Dual Quaternion Algebra. Part I: Fundamentals working paper or preprint. https://hal.science/hal-01478225.
- Wang, X., Han, D., Yu, C. & Zheng, Z. The geometric structure of unit dual quaternion with application in kinematic control. Journal of Mathematical Analysis and Applications 389, 1352– 1364. doi: 10.1016/j.jmaa.2012.01.016 (2012).
- Bekar, M. & Yayli, Y. Kinematics of Dual Quaternion Involution Matrices. SDU Journal of Science 11, 121–132 (2016).
- Dantam, N. T. Practical Exponential Coordinates using Implicit Dual Quaternions (Workshop on the Algorithmic Foundations of Robotics, 2018).
- Kuipers, J. B. Quaternions and rotation sequences a primer with applications to orbits, aerospace and virtual reality. 371 pp. (Princeton University Press, 41 William Street, Princeton, New Jersey 08540, 1999).
- Vince, J. Rotation transforms for computer graphics 1st ed. 232 pp. (Springer-Verlag London, 2011).
- Lengyel, E. Foundations of Game Engine Development. 1: Mathematics 4 vols. 195 pp. (Terathon Software LLC, Lincoln, California, 2016).
Supplementary files










