Motor

A motor is an operator that performs a proper isometry in Euclidean space. Such isometries encompass all possible combinations of any number of rotations and translations. The name motor is a portmanteau of motion operator or moment vector. Motors are equivalent to the set of dual quaternions used in conventional theories, and the functionality is properly generalized in rigid geometric algebra. Motors cannot perform improper isometries that include an odd number of reflections; those are instead performed by operators called flectors.

In the 4D rigid geometric algebra $$\mathcal G_{3,0,1}$$, a motor $$\mathbf Q$$ has the general form


 * $$\mathbf Q = Q_{vx} \mathbf e_{41} + Q_{vy} \mathbf e_{42} + Q_{vz} \mathbf e_{43} + Q_{vw} {\large\unicode{x1d7d9}} + Q_{mx} \mathbf e_{23} + Q_{my} \mathbf e_{31} + Q_{mz} \mathbf e_{12} + Q_{mw} \mathbf 1$$.

To possess the geometric property, the components of $$\mathbf Q$$ must satisfy the equation


 * $$Q_{vx} Q_{mx} + Q_{vy} Q_{my} + Q_{vz} Q_{mz} + Q_{vw} Q_{mw} = 0$$.

Motors are capable of representing any general screw motion consisting of a rotation about a line combined with a displacement along the same line. By Chasles’ theorem, all proper rigid motions in 3D space are screw motions.

An element $$\mathbf x$$ is transformed by a motor $$\mathbf Q$$ through the operation $$\mathbf x' = \mathbf Q \mathbin{\unicode{x27C7}} \mathbf x \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}}$$, where $$\unicode{x27C7}$$ is the geometric antiproduct.

The set of all motors, sometimes denoted by $$\unicode{x1D544}$$, forms a subgroup of index 2 in a geometric algebra. Its coset is the set of flectors.

Simple Motors
If $$Q_{mw} = 0$$ (i.e., the scalar part $$Q_{\mathbf 1}$$ is zero), then the motor $$\mathbf Q$$ is called a simple motor. Every simple motor represents either a pure translation or a pure rotation about a line without any displacement along that line.

In the case of a pure translation, the motor $$\mathbf T$$ is given by


 * $$\mathbf T = t_x \mathbf e_{23} + t_y \mathbf e_{31} + t_z \mathbf e_{12} + {\large\unicode{x1d7d9}}$$ ,

and this performs a translation by twice the displacement vector $$(t_x, t_y, t_z)$$.

In the case of a pure rotation, the motor $$\mathbf R$$ is given by


 * $$\mathbf R = \boldsymbol l\sin\phi + {\large\unicode{x1d7d9}}\cos\phi$$ ,

and this performs a rotation by twice the angle $$\phi$$ about the line $$\boldsymbol l$$.

Motors Built from Geometry
Motors having specific geometric constructions can be built from points,  lines, and  planes as shown in the following table.

Norm
The bulk norm of a motor $$\mathbf Q$$ is given by


 * $$\left\Vert\mathbf Q\right\Vert_\unicode{x25CF} = \sqrt{\mathbf Q \mathbin{\unicode{x25CF}} \mathbf{\tilde Q}} = \sqrt{Q_{mx}^2 + Q_{my}^2 + Q_{mz}^2 + Q_{mw}^2}$$ ,

and its weight norm is given by


 * $$\left\Vert\mathbf Q\right\Vert_\unicode{x25CB} = \sqrt{\mathbf Q \mathbin{\unicode{x25CB}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}}\vphantom{\mathbf{\tilde Q}}} = {\large\unicode{x1D7D9}}\sqrt{Q_{vx}^2 + Q_{vy}^2 + Q_{vz}^2 + Q_{vw}^2}$$.

The geometric norm of a motor $$\mathbf Q$$ is thus


 * $$\widehat{\left\Vert\mathbf Q\right\Vert} = \sqrt{\dfrac{Q_{mx}^2 + Q_{my}^2 + Q_{mz}^2 + Q_{mw}^2}{Q_{vx}^2 + Q_{vy}^2 + Q_{vz}^2 + Q_{vw}^2}}$$ ,

and this is equal to half the distance that the origin is moved by the operator.

A motor is unitized when $$Q_{vx}^2 + Q_{vy}^2 + Q_{vz}^2 + Q_{vw}^2 = 1$$.

Exponential Form
A motor $$\mathbf Q$$ can be expressed as the exponential of a unitized line $$\boldsymbol l$$ multiplied by $$d + \phi{\large\unicode{x1D7D9}}$$, where $$\phi$$ is half the angle of rotation about the line $$\boldsymbol l$$, and $$d$$ is half the displacement distance along the line $$\boldsymbol l$$. The exponential form can be written as


 * $$\mathbf Q = \exp_\unicode{x27C7}((d + \phi{\large\unicode{x1D7D9}}) \mathbin{\unicode{x27C7}} \boldsymbol l) = \cos_\unicode{x27C7}(d + \phi{\large\unicode{x1D7D9}}) + \sin_\unicode{x27C7}(d + \phi{\large\unicode{x1D7D9}}) \mathbin{\unicode{x27C7}} \boldsymbol l$$.

This expands to


 * $$\mathbf Q = \boldsymbol l\sin\phi + (d \mathbin{\unicode{x27C7}} \boldsymbol l)\cos\phi - d\sin\phi + {\large\unicode{x1D7D9}}\cos\phi$$ ,

and replacing the line $$\boldsymbol l$$ with its components gives us


 * $$\mathbf Q = (l_{vx} \mathbf e_{41} + l_{vy} \mathbf e_{42} + l_{vz} \mathbf e_{43} + l_{mx} \mathbf e_{23} + l_{my} \mathbf e_{31} + l_{mz} \mathbf e_{12})\sin\phi + d(l_{vx} \mathbf e_{23} + l_{vy} \mathbf e_{31} + l_{vz} \mathbf e_{12})\cos\phi - d\sin\phi + {\large\unicode{x1D7D9}}\cos\phi$$.

A motor in exponential form is always unitized, and its geometric norm can be written as


 * $$\widehat{\left\Vert\mathbf Q\right\Vert} = \sqrt{d^2 + (l_{mx}^2 + l_{my}^2 + l_{mz}^2)\sin^2\phi}$$.

The quantity $$d + \phi{\large\unicode{x1D7D9}}$$, as a homogeneous magnitude, is the pitch of the screw transformation performed by the motor, which is the amount of translation along the screw axis per radian of rotation.

Logarithm
Given an arbitrary unitized motor $$\mathbf Q$$ with $$|Q_{vw}| < 1$$, the values of $$\boldsymbol l$$, $$d$$, and $$\phi$$ can be determined from the components of $$\mathbf Q$$, essentially taking the logarithm of a motor. First, the scalar and antiscalar terms satisfy the equations


 * $$Q_{mw} = -d\sin\phi$$
 * $$Q_{vw} = \cos\phi$$.

Assuming that $$\phi > 0$$, we define $$s = \sin\phi = \sqrt{1 - Q_{vw}^2}$$. Then,


 * $$d = -\dfrac{Q_{mw}}{s}$$
 * $$\phi = \tan^{-1}\left(\dfrac{s}{Q_{vw}}\right)$$.

If $$Q_{vw} = 0$$, then we assign $$\phi = \pi/2$$. If $$Q_{vw} < 0$$, then we can add $$\pi$$ to $$\phi$$ to make the angle positive, but this is not required.

The components of $$\boldsymbol l$$ are then given by


 * $$(l_{vx}, l_{vy}, l_{vz}) = \dfrac{1}{s}(Q_{vx}, Q_{vy}, Q_{vz})$$


 * $$(l_{mx}, l_{my}, l_{mz}) = \dfrac{1}{s}\left[(Q_{mx}, Q_{my}, Q_{mz}) - dQ_{vw}(Q_{vx}, Q_{vy}, Q_{vz})\right] = \dfrac{1}{s}\left[(Q_{mx}, Q_{my}, Q_{mz}) + \dfrac{Q_{vw} Q_{mw}}{s^2}(Q_{vx}, Q_{vy}, Q_{vz})\right]$$.

In the special case that $$Q_{vw} = \pm 1$$, the motor must be a pure translation with $$\phi = 0$$ and $$(Q_{vx}, Q_{vy}, Q_{vz}) = (0, 0, 0)$$.

Square Root
The square root of a quaternion can be calculated by summing with the identity and renormalizing. If we attempt to do the same thing with a motor $$\mathbf Q$$, we find that it works only under certain conditions. However, such a calculation does give us a starting point from which we can make a correction for the general case.

Using the exponential form of $$\mathbf Q$$, we first examine the weight norm of $$\mathbf Q + {\large\unicode{x1D7D9}}$$ and find that


 * $$\left\Vert\mathbf Q + \smash{\large\unicode{x1D7D9}}\right\Vert_\unicode{x25CB} = \sqrt{\sin^2\phi + (\cos\phi + 1)^2} = \sqrt{\vphantom{\sin^2\phi}2 + 2Q_\smash{\large\unicode{x1D7D9}}}$$ ,

where $$Q_{\large\unicode{x1D7D9}} = \cos\phi$$. Applying the trigonometric identity $$\cos^2(\phi/2) = (1 + \cos\phi)/2$$, we can rewrite this as


 * $$\left\Vert\mathbf Q + \smash{\large\unicode{x1D7D9}}\right\Vert_\unicode{x25CB} = 2\cos(\phi/2)$$.

Applying several more trigonometric identities, we now observe


 * $$\dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{\left\Vert\mathbf Q + \smash{\large\unicode{x1D7D9}}\right\Vert_\unicode{x25CB}} = \dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{2\cos(\phi/2)} = \boldsymbol l\sin(\phi/2) + \left(\dfrac{d}{2} \mathbin{\unicode{x27C7}} \boldsymbol l\right)\cos(\phi/2) - \dfrac{d}{2}\sin(\phi/2) + {\large\unicode{x1D7D9}}\cos(\phi/2) - \left(\dfrac{d}{2} \mathbin{\unicode{x27C7}} \boldsymbol l\right)\sin(\phi/2)\tan(\phi/2) - \dfrac{d}{2}\sin(\phi/2)$$.

The first four terms are exactly the square root of $$\mathbf Q$$ because the distance $$d$$ and angle $$\phi$$ have both been halved. But there are two additional terms that we need to eliminate. It just so happens that


 * $$\dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{\left\Vert\mathbf Q + \smash{\large\unicode{x1D7D9}}\right\Vert_\unicode{x25CB}} \mathbin{\unicode{x27C7}} \dfrac{d}{2}\tan(\phi/2) = \left(\dfrac{d}{2} \mathbin{\unicode{x27C7}} \boldsymbol l\right)\sin(\phi/2)\tan(\phi/2) + \dfrac{d}{2}\sin(\phi/2)$$ ,

which means that


 * $$\sqrt{\mathbf Q} = \dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{\sqrt{2 + 2Q_\smash{\large\unicode{x1D7D9}}}} \mathbin{\unicode{x27C7}} \left({\large\unicode{x1D7D9}} + \dfrac{d}{2}\tan(\phi/2)\right)$$.

The scalar component of $$\mathbf Q$$ can be rewritten as $$Q_{\mathbf 1} = -d\sin\phi = -2d\sin(\phi/2)\cos(\phi/2) $$. Dividing this by $$2 + 2Q_{\large\unicode{x1D7D9}} = 4\cos^2(\phi/2)$$ yields


 * $$\dfrac{Q_\mathbf 1}{2 + 2Q_{\large\unicode{x1D7D9}}} = -\dfrac{d}{2}\tan(\phi/2)$$.

The square root of a general motor $$\mathbf Q$$ is thus given by


 * $$\sqrt{\mathbf Q} = \dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{\sqrt{2 + 2Q_\smash{\large\unicode{x1D7D9}}}} \mathbin{\unicode{x27C7}} \left({\large\unicode{x1D7D9}} - \dfrac{Q_\mathbf 1}{2 + 2Q_{\large\unicode{x1D7D9}}}\right)$$.

If $$\mathbf Q$$ is a simple motor, then $$Q_{\mathbf 1} = 0$$, and this reduces to


 * $$\sqrt{\mathbf Q} = \dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{\sqrt{2 + 2Q_\smash{\large\unicode{x1D7D9}}}} = \dfrac{\mathbf Q + {\large\unicode{x1D7D9}}}{\left\Vert\mathbf Q + \smash{\large\unicode{x1D7D9}}\right\Vert_\unicode{x25CB}}$$.

Factorization
Any unitized motor $$\mathbf Q$$ can be factored into the product of a motor $$\mathbf R = Q_{vx} \mathbf e_{41} + Q_{vy} \mathbf e_{42} + Q_{vz} \mathbf e_{43} + Q_{vw} {\large\unicode{x1D7D9}}$$ corresponding to a pure rotation about a line through the origin and a motor $$\mathbf T = {t_x \mathbf e_{23} + t_y \mathbf e_{31} + t_z \mathbf e_{12} + \large\unicode{x1d7d9}}$$ corresponding to a pure translation by calculating


 * $$\mathbf T = \mathbf Q \mathbin{\unicode{x27C7}} \mathbf{\underset{\Large\unicode{x7E}}{R}}$$.

The motor $$\mathbf T$$ is then given by


 * $$\mathbf T = (Q_{vy} Q_{mz} - Q_{vz} Q_{my} + Q_{mx} Q_{vw} - Q_{vx} Q_{mw})\mathbf e_{23} + (Q_{vz} Q_{mx} - Q_{vx} Q_{mz} + Q_{my} Q_{vw} - Q_{vy} Q_{mw})\mathbf e_{31} + (Q_{vx} Q_{my} - Q_{vy} Q_{mx} + Q_{mz} Q_{vw} - Q_{vz} Q_{mw})\mathbf e_{12} + {\large\unicode{x1d7d9}}$$.

The original motor $$\mathbf Q$$ can now be expressed as


 * $$\mathbf Q = \mathbf T \mathbin{\unicode{x27C7}} \mathbf R$$ ,

where both $$\mathbf R$$ and $$\mathbf T$$ are unitized simple motors.

Conversion from Motor to Matrix
Given a specific unitized motor $$\mathbf Q$$, define the matrices


 * $$\mathbf A = \begin{bmatrix}1 - 2(Q_{vy}^2 + Q_{vz}^2) & 2Q_{vx} Q_{vy} & 2Q_{vz} Q_{vx} & 2(Q_{vy} Q_{mz} - Q_{vz} Q_{my}) \\ 2Q_{vx} Q_{vy} & 1 - 2(Q_{vz}^2 + Q_{vx}^2) & 2Q_{vy} Q_{vz} & 2(Q_{vz} Q_{mx} - Q_{vx} Q_{mz}) \\ 2Q_{vz} Q_{vx} & 2Q_{vy} Q_{vz} & 1 - 2(Q_{vx}^2 + Q_{vy}^2) & 2(Q_{vx} Q_{my} - Q_{vy} Q_{mx}) \\ 0 & 0 & 0 & 1\end{bmatrix}$$

and


 * $$\mathbf B = \begin{bmatrix}0 & -2Q_{vz} Q_{vw} & 2Q_{vy} Q_{vw} & 2(Q_{vw} Q_{mx} - Q_{vx} Q_{mw}) \\ 2Q_{vz} Q_{vw} & 0 & -2Q_{vx} Q_{vw} & 2(Q_{vw} Q_{my} - Q_{vy} Q_{mw}) \\ -2Q_{vy} Q_{vw} & 2Q_{vx} Q_{vw} & 0 & 2(Q_{vw} Q_{mz} - Q_{vz} Q_{mw}) \\ 0 & 0 & 0 & 0\end{bmatrix}$$.

Then the corresponding 4&times;4 matrix $$\mathbf M$$ that transforms a point $$\mathbf p$$, regarded as a column matrix, as $$\mathbf p' = \mathbf{Mp}$$ is given by


 * $$\mathbf M = \mathbf A + \mathbf B$$.

The inverse of $$\mathbf M$$, which transforms a plane $$\mathbf g$$, regarded as a row matrix, as $$\mathbf g' = \mathbf{gM^{-1}}$$ is given by


 * $$\mathbf M^{-1} = \mathbf A - \mathbf B$$.

Conversion from Matrix to Motor
Let $$\mathbf M$$ be an orthogonal 4&times;4 matrix with determinant +1 having the form


 * $$\mathbf M = \begin{bmatrix} M_{00} & M_{01} & M_{02} & M_{03} \\ M_{10} & M_{11} & M_{12} & M_{13} \\ M_{20} & M_{21} & M_{22} & M_{23} \\ 0 & 0 & 0 & 1\end{bmatrix}$$.

Then, by equating the entries of $$\mathbf M$$ to the entries of $$\mathbf A + \mathbf B$$ from above, we have the following four relationships based on the diagonal entries of $$\mathbf M$$:


 * $$M_{00} - M_{11} - M_{22} + 1 = 4Q_{vx}^2$$


 * $$M_{11} - M_{22} - M_{00} + 1 = 4Q_{vy}^2$$


 * $$M_{22} - M_{00} - M_{11} + 1 = 4Q_{vz}^2$$


 * $$M_{00} + M_{11} + M_{22} + 1 = 4(1 - Q_{vx}^2 - Q_{vy}^2 - Q_{vz}^2) = 4Q_{vw}^2$$

And we have the following six relationships based on the off-diagonal entries of $$\mathbf M$$:


 * $$M_{21} + M_{12} = 4Q_{vy} Q_{vz}$$


 * $$M_{02} + M_{20} = 4Q_{vz} Q_{vx}$$


 * $$M_{10} + M_{01} = 4Q_{vx} Q_{vy}$$


 * $$M_{21} - M_{12} = 4Q_{vx} Q_{vw}$$


 * $$M_{02} - M_{20} = 4Q_{vy} Q_{vw}$$


 * $$M_{10} - M_{01} = 4Q_{vz} Q_{vw}$$

If $$M_{00} + M_{11} + M_{22} \geq 0$$, then we calculate


 * $$Q_{vw} = \pm \dfrac{1}{2}\sqrt{M_{00} + M_{11} + M_{22} + 1}$$ ,

where either sign can be chosen. In this case, we know $$|Q_{vw}|$$ is at least $$1/2$$, so we can safely divide by $$4Q_{vw}$$ in the last three off-diagonal relationships above to solve for $$Q_{vx}$$, $$Q_{vy}$$, and $$Q_{vz}$$. Otherwise, if $$M_{00} + M_{11} + M_{22} < 0$$, then we select one of the first three diagonal relationships based on the largest diagonal entry $$M_{00}$$, $$M_{11}$$, or $$M_{22}$$. After calculating $$Q_{vx}$$, $$Q_{vy}$$, or $$Q_{vz}$$, we plug its value into two of the first three off-diagonal relationships to solve for the other two values of $$Q_{vx}$$, $$Q_{vy}$$, and $$Q_{vz}$$. Finally, we plug it into one of the last three off-diagonal relationships to solve for $$Q_{vw}$$.

Setting $$t_x = M_{03}$$, $$t_y = M_{13}$$, and $$t_z = M_{23}$$, the values of $$Q_{mx}$$, $$Q_{my}$$, $$Q_{mz}$$, and $$Q_{mw}$$ are given by

$$u_x = \dfrac{1}{2}(Q_{vw} t_x + Q_{vz} t_y - Q_{vy} t_z)$$

$$u_y = \dfrac{1}{2}(Q_{vw} t_y + Q_{vx} t_z - Q_{vz} t_x)$$

$$u_z = \dfrac{1}{2}(Q_{vw} t_z + Q_{vy} t_x - Q_{vx} t_y)$$

$$u_w = -\dfrac{1}{2}(Q_{vx} t_x + Q_{vy} t_y + Q_{vz} t_z)$$.

Motor Transformations
Points, lines, and  planes are transformed by a unitized motor $$\mathbf Q$$ as shown in the following table.