Symmetries in Projective Geometric Algebra and Motor: Difference between pages

From Rigid Geometric Algebra
(Difference between pages)
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
Line 1: Line 1:
__NOTOC__
[[Image:proper_isom.svg|400px|thumb|right|'''Figure 1.''' A motor represents a proper Euclidean isometry, which can always be regarded as a rotation about a line $$\boldsymbol L$$ and a displacement along the same line.]]
'''By Eric Lengyel'''<br />
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]].
October 19, 2020


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


This is a continuation of the post [[Projective Geometric Algebra Done Right]] from earlier this year. That post introduces the geometric antiproduct and the notation $$\unicode{x27D1}$$ and $$\unicode{x27C7}$$ used in this post. As before, everything in this post assumes familiarity with Chapter 4 of FGED1.
:$$\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$$ .


I have been thinking about the geometric product and geometric antiproduct on a low-priority thread for most of 2020, and I have discovered a number of interesting properties that highlight beautiful symmetries in projective geometric algebra (PGA). This post summarizes a lot of my findings for those who’d like further insight into the pervasive duality that geometric algebra has to offer. There have been arguments that only one product is necessary in geometric algebra, but it’s my intention to demonstrate in part of this post that there exist elegant concepts that are complete only if both products are working together in harmony.
To possess the [[geometric property]], the components of $$\mathbf Q$$ must satisfy the equation


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


I have been using the symbol $$\mathbf E_4$$ to represent the volume element of the 4D exterior algebra, also known as the unit [[antiscalar]]. $$\mathbf E_4$$ is the wedge product of all the basis vectors $$\mathbf e_1 ∧ \mathbf e_2 ∧ \mathbf e_3 ∧ \mathbf e_4$$. I have recently decided that the symbol $$\mathbf E_4$$ was inadequately conveying the fact that scalars and antiscalars are two sides of the same coin. I wanted to emphasize that they are equal and opposite within the algebra, with neither one having a place of greater importance, so after much searching and thought, I’ve come to the conclusion that the best symbol for the unit antiscalar is $${\large\unicode{x1d7d9}}$$, the number one in blackboard bold. I will use the symbol $$\mathbf 1$$, an ordinary bold number one, as the unit scalar. These two symbols balance each other nicely, and both of them will show up throughout this post.
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.


=== Bulk and Weight ===
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]].


A homogeneous point is represented by the vector $$\mathbf p = p_x \mathbf e_1 + p_y \mathbf e_2 + p_z \mathbf e_3 + p_w \mathbf e_4$$. The $$w$$ coordinate is sometimes called the ''weight'' of the point, and the point is projected into 3D space by scaling so that the $$w$$ coordinate is one. For a line given by $$\boldsymbol l = v_x \mathbf e_{41} + v_y \mathbf e_{42} + v_z \mathbf e_{43} + m_x \mathbf e_{23} + m_y \mathbf e_{31} + m_z \mathbf e_{12}$$, the weight is the magnitude of the direction vector $$(v_x, v_y, v_z)$$, and the line is projected into 3D space by scaling so that this magnitude is one. For a plane given by $$\mathbf g = g_x \mathbf e_{423} + g_y \mathbf e_{431} + g_z \mathbf e_{412} + g_w \mathbf e_{321}$$, the weight is the magnitude of the normal vector $$(g_x, g_y, g_z)$$, and the plane is projected into 3D space by scaling so that this magnitude is one. We use the term ''[[unitization]]'' to refer to the projection operation that causes the weight of any object to have magnitude one.
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]].


In general, the components of an object in the algebra can be separated into those that include the basis vector $$\mathbf e_4$$ and those that do not. The parts that do include $$\mathbf e_4$$ represent the extent of the object into the fourth dimension, and these components are collectively called the ''[[weight]]'' of the object. An object is projected into 3D space by normalizing its weight to unit magnitude, and I will have much more to say about this when I discuss norms below. The remaining parts of an object, those that do not include the basis vector $$\mathbf e_4$$, are collectively called the ''[[bulk]]'' of the object.
== Simple Motors ==


I will use a solid circle as a subscript to represent the bulk of an object, and I will use an empty circle as a subscript to represent the weight. Then the notation $$\mathbf a_\unicode{x25CF}$$ means the sum of the components of $$\mathbf a$$ that exclude the basis vector $$\mathbf e_4$$, and the notation $$\mathbf a_\unicode{x25CB}$$ means the sum of the components of $$\mathbf a$$ that include the basis vector $$\mathbf e_4$$. We will never have a need to use these directly in a calculation, but their complements actually arise in an interesting way when we perform projections, as discussed below.
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.


I’ve always considered it to be somewhat artificial whenever we have to pick off components of some value in order to create another quantity. It generally indicates that something has been overcalculated, and a simpler or more natural operation can be used instead. I was pleasantly surprised to discover that the complements of the bulk and weight can be directly calculated in the algebra with the following formulas:
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}}$$ ,
| style="padding-left: 1em; padding-right: 5em;" | $$\overline{\mathbf a_\smash{\unicode{x25CF}}} = \mathbf{\tilde a} \mathbin{\unicode{x27D1}} {\large\unicode{x1D7D9}}$$
 
| (bulk right complement)
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 [[Point | points]], [[Line | lines]], and [[Plane | planes]] as shown in the following table.
 
{| class="wikitable"
! Motor|| Description
|-
|-
| style="padding-left: 1em; padding-right: 5em;" | $$\overline{\mathbf a_\smash{\unicode{x25CB}}} = \mathbf 1 \mathbin{\unicode{x27C7}} \mathbf{\tilde a}$$
| style="padding: 12px;" | $$\begin{split}\mathbf h \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{g}}} =\, &(g_yh_z - g_zh_y)\mathbf e_{41} + (g_zh_x - g_xh_z)\mathbf e_{42} + (g_xh_y - g_yh_x)\mathbf e_{43} \\ +\, &(h_xg_w - g_xh_w)\mathbf e_{23} + (h_yg_w - g_yh_w)\mathbf e_{31} + (h_zg_w - g_zh_w)\mathbf e_{12} \\ +\, &(g_xh_x + g_yh_y + g_zh_z)\smash{\large\unicode{x1d7d9}}\end{split}$$
| (weight right complement)
| style="padding: 12px;" | Rotation about the line where planes $$\mathbf g$$ and $$\mathbf h$$ intersect by twice the angle between them in the direction from $$\mathbf g$$ to $$\mathbf h$$.
 
$$\mathbf g = g_x \mathbf e_{234} + g_y \mathbf e_{314} + g_z \mathbf e_{124} + g_w \mathbf e_{321}$$
 
$$\mathbf h = h_x \mathbf e_{234} + h_y \mathbf e_{314} + h_z \mathbf e_{124} + h_w \mathbf e_{321}$$
|-
|-
| style="padding-left: 1em; padding-right: 5em;" | $$\underline{\mathbf a_\smash{\unicode{x25CF}}} = \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}} \mathbin{\unicode{x27D1}} {\large\unicode{x1D7D9}}$$
| style="padding: 12px;" | $$\begin{split}\boldsymbol l \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{k}}}
| (bulk left complement)
=\, &(l_{vz} k_{vy} - l_{vy} k_{vz})\mathbf e_{41} + (l_{vx} k_{vz} - l_{vz} k_{vx})\mathbf e_{42} + (l_{vy} k_{vx} - l_{vx} k_{vy})\mathbf e_{43} \\
+\, &(l_{vz} k_{my} - l_{vy} k_{mz} + l_{mz} k_{vy} - l_{my} k_{vz})\mathbf e_{23} + (l_{vx} k_{mz} - l_{vz} k_{mx} + l_{mx} k_{vz} - l_{mz} k_{vx})\mathbf e_{31} + (l_{vy} k_{mx} - l_{vx} k_{my} + l_{my} k_{vx} - l_{mx} k_{vy})\mathbf e_{12} \\
+\, &(l_{vx} k_{mx} + l_{vy} k_{my} + l_{vz} k_{mz} + l_{mx} k_{vx} + l_{my} k_{vy} + l_{mz} k_{vz}) \\
+\, &(l_{vx} k_{vx} + l_{vy} k_{vy} + l_{vz} k_{vz})\smash{\large\unicode{x1d7d9}}\end{split}$$
| style="padding: 12px;" | Rotation about the line containing the closest points on lines $$\mathbf k$$ and $$\boldsymbol l$$ by twice the angle between the directions $$(l_{vx}, l_{vy}, l_{vz})$$ and $$(k_{vx}, k_{vy}, k_{vz})$$, and translation by twice the distance between the lines in the direction from $$\mathbf k$$ to $$\boldsymbol l$$.
 
$$\mathbf k = k_{vx} \mathbf e_{41} + k_{vy} \mathbf e_{42} + k_{vz} \mathbf e_{43} + k_{mx} \mathbf e_{23} + k_{my} \mathbf e_{31} + k_{mz} \mathbf e_{12}$$
 
$$\boldsymbol l = 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}$$
|-
|-
| style="padding-left: 1em; padding-right: 5em;" | $$\underline{\mathbf a_\smash{\unicode{x25CB}}} = \mathbf 1 \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}}$$
| style="padding: 12px;" | $$\mathbf q \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{p}}} = (q_xp_w - p_xq_w)\mathbf e_{23} + (q_yp_w - p_yq_w)\mathbf e_{31} + (q_zp_w - p_zq_w)\mathbf e_{12} + (p_wq_w)\smash{\large\unicode{x1d7d9}}$$
| (weight left complement)
| style="padding: 12px;" | Translation by twice the distance between points $$\mathbf p$$ and $$\mathbf q$$ in the direction from $$\mathbf p$$ to $$\mathbf q$$.
 
$$\mathbf p = p_x \mathbf e_1 + p_y \mathbf e_2 + p_z \mathbf e_3 + p_w \mathbf e_4$$
 
$$\mathbf q = q_x \mathbf e_1 + q_y \mathbf e_2 + q_z \mathbf e_3 + q_w \mathbf e_4$$
|}
|}


These equations possess an elegant symmetry that relates the [[Reverses | reverse and antireverse]] to the right and left complements and makes use of both the geometric product and geometric antiproduct with the multiplicative identity of the other product.
== 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}$$ ,


Since the bulk and weight are disjoint, so are their complements, and we can add them to obtain full complements:
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}$$ .
| style="padding-left: 1em; padding-right: 5em;" | $$\overline{\mathbf a} = \mathbf{\tilde a} \mathbin{\unicode{x27D1}} {\large\unicode{x1D7D9}} + \mathbf 1 \mathbin{\unicode{x27C7}} \mathbf{\tilde a}$$
 
| (right complement)
The [[geometric norm]] of a motor $$\mathbf Q$$ is thus
|-
 
| style="padding-left: 1em; padding-right: 5em;" | $$\underline{\mathbf a} = \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}} \mathbin{\unicode{x27D1}} {\large\unicode{x1D7D9}} + \mathbf 1 \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}}$$
:$$\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}}$$ ,
| (left complement)
 
|}
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}) - \dfrac{dQ_{vw}}{s}(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


What this really means is that the combination of both the product and antiproduct allows us to calculate a complete dual of any element using only the multiplication and reversion operations of the algebra. This task is impossible in a degenerate algebra when only the geometric product is recognized because it always annihilates components containing $$\mathbf e_4$$. The geometric antiproduct is required in order to fill in the other half.
:$$\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)$$ .


The bulk of an object stores information about its position, encoding the object’s location relative to the origin. The weight of an object stores information about its [[attitude]], encoding the spatial direction that the object faces. The weight is particularly useful in projection calculations because its complement provides directional information in a form that can be conveniently joined with the geometry being projected.
If $$\mathbf Q$$ is a simple motor, then $$Q_{\mathbf 1} = 0$$, and this reduces to


=== Norms ===
:$$\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}}$$ .


In many algebras, the Euclidean norm of some element $$\mathbf a$$ is routinely calculated using the formula $$\left\Vert \mathbf a \right\Vert = (\mathbf a \cdot \mathbf a^*)^{1/2}$$, where $$\cdot$$ is the multiplication in the algebra and $$*$$ represents some kind of conjugate operation. In the geometric algebra, this becomes $$\left\Vert \mathbf a \right\Vert = (\mathbf a \mathbin{\unicode{x27D1}} \mathbf{\tilde a})^{1/2}$$. Because $$\mathbf e_4^2 = 0$$, this formula ends up calculating the magnitude of only the bulk part of $$\mathbf a$$. However, when we recognize that geometric algebra has two products, we can also calculate a different norm using the formula $$\left\Vert \mathbf a \right\Vert = (\mathbf a \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}})^{1/2}$$, where we are taking the square root with respect to the antiproduct. Whereas the product $$\mathbf a \mathbin{\unicode{x27D1}} \mathbf{\tilde a}$$ results in a scalar quantity, the antiproduct $$\mathbf a \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}}$$ results in an antiscalar quantity. (The square root of an antiscalar simply follows the identity $$(x {\large\unicode{x1D7D9}})^{1/2} = x^{1/2}{\large\unicode{x1D7D9}}$$.) This second norm calculates the magnitude of the weight part of $$\mathbf a$$, demonstrating another way in which the product and antiproduct work together to form a whole. The two norms are summarized as follows:
== 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
| style="padding-left: 1em; padding-right: 5em;" | $$\left\Vert \mathbf a \right\Vert_\smash{\unicode{x25CF}} = (\mathbf a \mathbin{\unicode{x27D1}} \mathbf{\tilde a})^{1/2}$$
| ([[bulk norm]])
|-
| style="padding-left: 1em; padding-right: 5em;" | $$\left\Vert \mathbf a \right\Vert_\smash{\unicode{x25CB}} = (\mathbf a \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}})^{1/2}$$
| ([[weight norm]])
|}


I’m introducing a new definition for the norm of an element $$\mathbf a$$, with no qualifier, to be the sum of the bulk norm and the weight norm:
:$$\mathbf T = \mathbf Q \mathbin{\unicode{x27C7}} \mathbf{\underset{\Large\unicode{x7E}}{R}}$$ .


{|
The motor $$\mathbf T$$ is then given by
| style="padding-left: 1em; padding-right: 5em;" | $$\left\Vert \mathbf a \right\Vert_ = \left\Vert \mathbf a \right\Vert_\smash{\unicode{x25CF}} + \left\Vert \mathbf a \right\Vert_\smash{\unicode{x25CB}} = (\mathbf a \mathbin{\unicode{x27D1}} \mathbf{\tilde a})^{1/2} + (\mathbf a \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}})^{1/2}$$
| (total [[geometric norm]])
|}


Unlike conventional norms, this norm is a two-component homogeneous magnitude consisting of a pair of numbers, a scalar and an antiscalar, which we could write as $$x \mathbf 1 + y {\large\unicode{x1d7d9}}$$. As with all things homogeneous, we project into 3D space by requiring the weight part ($$y$$ in this case) to have unit magnitude. Unitizing the norm by taking the quotient of the bulk part and the weight part (technically, division with respect to the antiproduct) produces a concrete Euclidean distance measure. In the case of a point, the unitized norm is the distance from the point to the origin. In the case of a line, the unitized norm is the perpendicular distance from the line to the origin. In the case of a plane, the unitized norm is the perpendicular distance from the plane to the origin.
:$$\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}}$$ .


We can also talk about the norm of a motion operator (motor) $$\mathbf Q = r_x \mathbf e_{41} + r_y \mathbf e_{42} + r_z \mathbf e_{43} + r_w {\large\unicode{x1d7d9}} + u_x \mathbf e_{23} + u_y \mathbf e_{31} + u_z \mathbf e_{12} + u_w$$. The bulk norm of $$\mathbf Q$$ is given by $$\left\Vert \mathbf Q \right\Vert_\smash{\unicode{x25CF}} = (u_x^2 + u_y^2 + u_z^2 + u_w^2)^{1/2}$$, and although it isn’t even remotely obvious, this is equal to exactly half of the weight-scaled distance that a point at the origin is moved by the motor $$\mathbf Q$$, accounting for both rotation in the plane perpendicular to the axis and translation along the axis. I will show one way to arrive at this fact below.
The original motor $$\mathbf Q$$ can now be expressed as


The weight norm of $$\mathbf Q$$ is the magnitude of the four components making up the rotational part of the dual quaternion. As with everything else, it’s these components that include a factor of $$\mathbf e_4$$ that we want to unitize in order to project into 3D space. This nicely consistent rule means that purely rotational motors are the unit quaternions that we would expect.
:$$\mathbf Q = \mathbf T \mathbin{\unicode{x27C7}} \mathbf R$$ ,


=== Projections ===
where both $$\mathbf R$$ and $$\mathbf T$$ are [[unitized]] simple motors.


When all we have to worry about is vectors, the formula $$(\mathbf a \cdot \mathbf{\hat b})\mathbf{\hat b}$$ is not too hard to understand as the projection of the vector $$\mathbf a$$ onto the vector $$\mathbf b$$, where the notation $$\mathbf{\hat b}$$ means that $$\mathbf b$$ has been normalized. It is possible to generalize this formula in geometric algebra for the projection of points, lines, and planes onto other points, lines, and planes, but I find it difficult to form an intuitive understanding of what’s happening when we take the dot product between a point and a line, for example, and then multiply the result by the line again using one of the geometric products. Fortunately, projections can be broken down into simpler operations that make a lot of sense when you understand that a wedge product performs a join operation, and an antiwedge product performs a meet operation.
== Conversion from Motor to Matrix ==


I’m first going to introduce the interior products because they allow me to express projections in an interesting form, but keep in mind that you ultimately will not need to use them directly if you don’t want to. The right and left interior products are defined as follows:
Given a specific [[Unitization | 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}$$
| style="padding-left: 1em; padding-right: 5em;" | $$\mathbf a \mathbin{\unicode{x22A2}} \mathbf b = \mathbf a \vee \overline{\mathbf b}$$
| (right [[interior product]])
|-
| style="padding-left: 1em; padding-right: 5em;" | $$\mathbf a \mathbin{\unicode{x22A3}} \mathbf b = \underline{\mathbf a} \vee \mathbf b$$
| (left [[interior product]])
|}


Up to sign, these produce the same results as what some authors call the right and left contraction products, and both types of products can be used as the basis for defining a dot product. In previous works by other authors, the left interior product has been defined using $$\overline{\mathbf b}$$ instead of $$\underline{\mathbf a}$$, but this introduces an asymmetry that causes some problems. Using the above definitions, $$\mathbf a \mathbin{\unicode{x22A2}} \mathbf a = \mathbf a \mathbin{\unicode{x22A3}} \mathbf a = +1$$ for all basis elements $$\mathbf a$$ of all grades, and the following relationship holds independently of the number of dimensions:
and


:$$\mathbf a \mathbin{\unicode{x22A3}} \mathbf b = (−1)^{gr(a)(gr(a) + gr(b))} \mathbf b \mathbin{\unicode{x22A3}} \mathbf a$$
:$$\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}$$ .


Using the interior products, the general projection of a blade $$\mathbf a$$ onto a blade $$\mathbf b$$ is given by this peculiar-looking formula:
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$$ .
| style="padding-left: 1em; padding-right: 5em;" | $$\mathbf{\hat b} \mathbin{\unicode{x22A2}} \mathbf a \mathbin{\unicode{x22A3}} \mathbf{\hat b}$$
| (projection of $$\mathbf a$$ onto $$\mathbf b$$)
|}


This expression is associative in the sense that it doesn’t matter if we calculate $$(\mathbf{\hat b} \mathbin{\unicode{x22A2}} \mathbf a) \mathbin{\unicode{x22A3}} \mathbf{\hat b}$$ or $$\mathbf{\hat b} \mathbin{\unicode{x22A2}} (\mathbf a \mathbin{\unicode{x22A3}} \mathbf{\hat b})$$ because they both give the same answer. This formula for the projection is non-metric and thus cannot handle positional information. In order to project our points, lines, and planes onto one another, we need to make a small tweak that implicitly accounts for the fact that $$\mathbf e_4^2 = 0$$. This is done by taking only the weight part of $$\mathbf b$$ in one of the interior products (and it doesn’t matter which one) as follows:
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$$ .
| style="padding-left: 1em; padding-right: 5em;" | $$(\mathbf b_\smash{\unicode{x25CB}} \mathbin{\unicode{x22A2}} \mathbf a) \mathbin{\unicode{x22A3}} \mathbf b$$ or $$\mathbf b \mathbin{\unicode{x22A2}} (\mathbf a \mathbin{\unicode{x22A3}} \mathbf b_\smash{\unicode{x25CB}})$$
| (geometric [[projection]] of $$\mathbf a$$ onto $$\mathbf b$$)
|}


Now, we need to parenthesize so that the product with b○ is done first. Since the projective algebra is homogeneous, that hats on $$\mathbf b$$ have also been dropped. When we expand the first of these expressions using the definitions of the right and left interior products, we get this:
== Conversion from Matrix to Motor ==


{|
Let $$\mathbf M$$ be an orthogonal 4&times;4 matrix with determinant +1 having the form
| style="padding-left: 1em; padding-right: 5em;" | $$(\underline{\mathbf b_\smash{\unicode{x25CB}}} \wedge \mathbf a) \vee \mathbf b$$
| (geometric [[projection]] of $$\mathbf a$$ onto $$\mathbf b$$)
|}


In this form, we can derive some geometric intuition about what’s going on. As mentioned above, the expression $$(\underline{\mathbf b_\smash{\unicode{x25CB}}}$$ extracts the attitude of the object $$\mathbf b$$ in a perpendicular form while throwing away information about the position. The wedge product joins things together, so the expression $$\underline{\mathbf b_\smash{\unicode{x25CB}}} \wedge \mathbf a$$ means “create an object perpendicular to $$\mathbf b$$ that contains $$\mathbf a$$.” Taking the antiwedge product of this object with the original $$\mathbf b$$ then performs a meet operation that projects a perpendicularly onto $$\mathbf b$$.
:$$\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}$$ .


In the case that we are projecting a point $$\mathbf p$$ onto a plane $$\mathbf g$$, the weight complement $$(\underline{\mathbf g_\smash{\unicode{x25CB}}}$$ gives us the vector $$g_x \mathbf e_1 + g_y \mathbf e_2 + g_z \mathbf e_3$$ corresponding to the plane’s normal direction. The wedge product $$\underline{\mathbf g_\smash{\unicode{x25CB}}} \wedge \mathbf p$$ then creates a line passing through $$\mathbf p$$ and perpendicular to the plane. Taking the antiwedge product between this line and the plane calculates the meet, essentially moving $$\mathbf p$$ along the perpendicular line until it hits the plane.
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$$:


The case in which we are projecting a point $$\mathbf p$$ onto a line $$\boldsymbol l$$ is similar. The weight complement $$(\underline{\boldsymbol l_\smash{\unicode{x25CB}}}$$ gives us the line at infinity $$v_x \mathbf e_{23} + v_y \mathbf e_{31} + v_z \mathbf e_{12}$$ corresponding to all the points at infinity in directions perpendicular to the direction of the original line $$\boldsymbol l$$. The wedge product $$\underline{\boldsymbol l_\smash{\unicode{x25CB}}} \wedge \mathbf p$$ then creates a plane containing $$\mathbf p$$ that is also perpendicular to the original line. Taking the antiwedge product between this plane and the original line calculates the meet, essentially moving $$\mathbf p$$ in the perpendicular plane until it hits the line.
:$$M_{00} - M_{11} - M_{22} + 1 = 4Q_{vx}^2$$


The above projection formulas work when we are projecting an object of lower dimensionality onto an object of equal or higher dimensionality. (When you project onto something of equal dimensionality, you always end up with a scaled version of the point, line, or plane that you’re projecting onto.) Although it takes a little getting used to, we can also go the other way and ''antiproject'' an object of higher dimensionality onto an object of lower dimensionality. It sounds a bit weird to say you’re going to do something like project a plane onto a point, but all it really does is move the plane in its normal direction so that it contains the point. This happens in the opposite sense that projecting a point onto a plane moves the point in the normal direction so that it lies in the plane.
:$$M_{11} - M_{22} - M_{00} + 1 = 4Q_{vy}^2$$


The formula for an antiprojection is the same as the formula for a projection, except the interior products are replaced by interior antiproducts. We don’t really need to bother getting into a silly exposition of interior antiproducts because what ends up happening is that the wedge and antiwedge products are simply exchanged as follows:
:$$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$$
| style="padding-left: 1em; padding-right: 5em;" | $$(\underline{\mathbf b_\smash{\unicode{x25CB}}} \vee \mathbf a) \wedge \mathbf b$$
| (geometric [[antiprojection]] of $$\mathbf a$$ onto $$\mathbf b$$)
|}


This formula projects planes onto lines, planes onto points, and lines onto points.
And we have the following six relationships based on the off-diagonal entries of $$\mathbf M$$:


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


Now for a few notes about the exponential form of a [[motor]] $$\mathbf Q$$ under the geometric antiproduct $$\unicode{x27C7}$$. Suppose that we have a unitized line $$\boldsymbol l$$ and we want to construct the motor that performs a rotation about $$\boldsymbol l$$ through an angle $$2\phi$$ followed by a translation along $$\boldsymbol l$$ by a distance $$2d$$. Such a motor is given by the exponential of $$(d + \phi{\large\unicode{x1d7d9}}) \mathbin{\unicode{x27C7}} \boldsymbol l$$ with respect to the geometric antiproduct, which expands to the following:
:$$M_{02} + M_{20} = 4Q_{vz} Q_{vx}$$


:$$\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$$
:$$M_{10} + M_{01} = 4Q_{vx} Q_{vy}$$


The subscript $$\unicode{x27C7}$$ on the exponential, cosine, and sine functions means that the multiplication on which these are based is the antiproduct. If you’d like to work things out with power series, keep in mind that $$x^0 = {\large\unicode{x1d7d9}}$$ under the antiproduct $$\unicode{x27C7}$$, not 1 as it would be under the product $$\unicode{x27D1}$$. We can expand this formula further so it becomes an expression involving ordinary sines and cosines of the angle $$\phi$$ as follows:
:$$M_{21} - M_{12} = 4Q_{vx} Q_{vw}$$


:$$Q = \exp_{\unicode{x27C7}}(d + \phi{\large\unicode{x1d7d9}}) \mathbin{\unicode{x27C7}} \boldsymbol l = {\large\unicode{x1d7d9}} \cos \phi − d \sin \phi + (d \mathbin{\unicode{x27C7}} \boldsymbol l) \cos \phi + \boldsymbol l \sin \phi$$
:$$M_{02} - M_{20} = 4Q_{vy} Q_{vw}$$


When we take the weight norm of the right side of this equation, we always get $$\left\Vert \mathbf Q \right\Vert_\smash{\unicode{x25CB}} = {\large\unicode{x1d7d9}}$$, which is nice because it means that the motor is always unitized. (Remember that the direction part of $$\boldsymbol l$$ has been assumed to be unit length.) When we take the bulk norm, we get the following:
:$$M_{10} - M_{01} = 4Q_{vz} Q_{vw}$$


:$$\left\Vert \mathbf Q \right\Vert_\smash{\unicode{x25CF}} = (d^2 + (m_x^2 + m_y^2 + m_z^2) \sin^2 \phi)^{1/2}$$
If $$M_{00} + M_{11} + M_{22} \geq 0$$, then we calculate


The $$d^2$$ appearing in this equation clearly corresponds to half the distance moved along the line $$\boldsymbol l$$. For a unitized line, the square of the moment appearing in the equation is the squared perpendicular distance from the line to the origin, but it’s rather oddly multiplied by $$\sin^2 \phi$$ without any accompanying cosine in sight. Making sense out of this requires a little trig fu:
:$$Q_{vw} = \pm \dfrac{1}{2}\sqrt{M_{00} + M_{11} + M_{22} + 1}$$ ,


:$$\sin^2 \phi = \dfrac{1}{2}(1 − \cos 2\phi)$$
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}$$.


:$$= \dfrac{1}{4}(2 − 2 \cos 2\phi)$$
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


:$$= \dfrac{1}{4}(\sin^2 2\phi + \cos^2 2\phi + 1 − 2 \cos 2\phi)$$
$$Q_{mx} = \dfrac{1}{2}(Q_{vw} t_x + Q_{vz} t_y - Q_{vy} t_z)$$


:$$= \dfrac{1}{4}[\sin^2 2\phi + (1 − \cos 2\phi)^2]$$
$$Q_{my} = \dfrac{1}{2}(Q_{vw} t_y + Q_{vx} t_z - Q_{vz} t_x)$$


This last line is the square of precisely half the distance that a point one unit away from the line would move in the plane perpendicular to the line under the rotation through the angle $$2\phi$$ performed by the motor $$\mathbf Q$$. Multiplying this by the square of the line’s moment tells us how far any point the same distance from the line as the origin moves in the perpendicular plane. Adding the $$d^2$$ to account for the motion parallel to the line, we conclude that the norm of a motor is equal to exactly half the distance that the origin is moved when we apply the motor $$\mathbf Q$$ to it.
$$Q_{mz} = \dfrac{1}{2}(Q_{vw} t_z + Q_{vy} t_x - Q_{vx} t_y)$$


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


Symmetries abound in PGA, and they should be embraced whenever possible. Mathematically, a model in which vectors are planes and we only use the geometric product is absolutely identical to a model in which vectors are points and we only use the geometric antiproduct. Any claim that one of these models is somehow more natural or better in any way from a mathematical perspective of any kind is categorically wrong. That said, it is still valid to argue about which model departs from established conventions the most and whether both the geometric product and geometric antiproduct should be recognized within the algebra. My opinion is that the model in which vectors are points not only sticks to established conventions to a much greater degree but is also more intuitive. Based on what I’ve written above, it should be clear that I think a complete understanding and clean implementation of PGA requires us to welcome both the geometric product and geometric antiproduct and take advantage of the symmetries they provide.
== Motor Transformations ==


The following table compares a variety of the properties of the two models to help you form your own opinion.
[[Point | Points]], [[Line | lines]], and [[Plane | planes]] are transformed by a [[unitized]] motor $$\mathbf Q$$ as shown in the following table.


{| class="wikitable"
{| class="wikitable"
! Direct homogeneous model<br />Vectors are points<br />Both the products $$\unicode{x27D1}$$ and $$\unicode{x27C7}$$ are available !! Dual homogeneous model<br />Vectors are planes<br />Only the geometric product $$\unicode{x27D1}$$ is available
! Type || Transformation
|-
|-
| style="max-width: 40em;" | The grade of a projective $$k$$-dimensional object is $$k + 1$$.
| style="padding: 12px;" | [[Point]]
| style="max-width: 40em;" | The grade of a projective $$k$$-dimensional object is $$3 − k$$.
 
$$\mathbf p = p_x \mathbf e_1 + p_y \mathbf e_2 + p_z \mathbf e_3 + p_w \mathbf e_4$$
| style="padding: 12px;" | $$\begin{split}\mathbf Q \mathbin{\unicode{x27C7}} \mathbf p \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} =\, &\left[(1 - 2Q_{vy}^2 - 2Q_{vz}^2)p_x + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})p_y + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})p_z + 2(Q_{vy}Q_{mz} - Q_{vz}Q_{my} + Q_{vw}Q_{mx} - Q_{vx}Q_{mw})p_w\right]\mathbf e_1 \\ +\, &\left[(1 - 2Q_{vz}^2 -2Q_{vx}^2))p_y + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})p_z + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})p_x + 2(Q_{vz}Q_{mx} - Q_{vx}Q_{mz} + Q_{vw}Q_{my} - Q_{vy}Q_{mw})p_w\right]\mathbf e_2 \\ +\, &\left[(1 - 2Q_{vx}^2 - 2Q_{vy}^2))p_z + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})p_x + 2(Q_{vy}Q_{vz} + Q_{vx}Q_{vw})p_y + 2(Q_{vx}Q_{my} - Q_{vy}Q_{mx} + Q_{vw}Q_{mz} - Q_{vz}Q_{mw})p_w\right]\mathbf e_3 \\ +\, &p_w\mathbf e_4\end{split}$$
|-
|-
| style="max-width: 40em;" | A point $$\mathbf p$$ is a vector $$p_x \mathbf e_1 + p_y \mathbf e_2 + p_z \mathbf e_3 + p_w \mathbf e_4$$.
| style="padding: 12px;" | [[Line]]
| style="max-width: 40em;" | A point $$\mathbf p$$ is a trivector $$p_x \mathbf e_{423} + p_y \mathbf e_{431} + p_z \mathbf e_{412} + p_w \mathbf e_{321}$$.
 
$$\begin{split}\boldsymbol l =\, &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}\end{split}$$
| style="padding: 12px;" | $$\begin{split}\mathbf Q \mathbin{\unicode{x27C7}} \boldsymbol l \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} =\, &\left[(1 - 2Q_{vy}^2 - 2Q_{vz}^2)l_{vx} + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})l_{vy} + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})l_{vz}\right]\mathbf e_{41} \\ +\, &\left[(1 - 2Q_{vz}^2 - 2Q_{vx}^2)l_{vy} + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})l_{vz} + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})l_{vx}\right]\mathbf e_{42} \\ +\, &\left[(1 - 2Q_{vx}^2 - 2Q_{vy}^2)l_{vz} + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})l_{vx} + 2(Q_{vy}Q_{vz} + Q_{vx}Q_{vw})l_{vy}\right]\mathbf e_{43} \\ +\, &\left[-4(Q_{vy}Q_{my} + Q_{vz}Q_{mz})l_{vx} + 2(Q_{vy}Q_{mx} + Q_{vx}Q_{my} - Q_{vz}Q_{mw} - Q_{vw}Q_{mz})l_{vy} + 2(Q_{vz}Q_{mx} + Q_{vx}Q_{mz} + Q_{vy}Q_{mw} + Q_{vw}Q_{my})l_{vz} + (1 - 2Q_{vy}^2 - 2Q_{vz}^2)l_{mx} + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})l_{my} + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})l_{mz}\right]\mathbf e_{23} \\ +\, &\left[-4(Q_{vz}Q_{mz} + Q_{vx}Q_{mx})l_{vy} + 2(Q_{vz}Q_{my} + Q_{vy}Q_{mz} - Q_{vx}Q_{mw} - Q_{vw}Q_{mx})l_{vz} + 2(Q_{vx}Q_{my} + Q_{vy}Q_{mx} + Q_{vz}Q_{mw} + Q_{vw}Q_{mz})l_{vx} + (1 - 2Q_{vz}^2 - 2Q_{vx}^2)l_{my} + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})l_{mz} + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})l_{mx}\right]\mathbf e_{31} \\ +\, &\left[-4(Q_{vx}Q_{mx} + Q_{vy}Q_{my})l_{vz} + 2(Q_{vx}Q_{mz} + Q_{vz}Q_{mx} - Q_{vy}Q_{mw} - Q_{vw}Q_{my})l_{vx} + 2(Q_{vy}Q_{mz} + Q_{vz}Q_{my} + Q_{vx}Q_{mw} + Q_{vw}Q_{mx})l_{vy} + (1 - 2Q_{vx}^2 - 2Q_{vy}^2)l_{mz} + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})l_{mx} + 2(Q_{vy}Q_{vz} + 2Q_{vx}Q_{vw})l_{my}\right]\mathbf e_{12}\end{split}$$
|-
|-
| style="max-width: 40em;" | A direction $$\mathbf v$$ is a vector $$v_x \mathbf e_1 + v_y \mathbf e_2 + v_z \mathbf e_3$$.
| style="padding: 12px;" | [[Plane]]
| style="max-width: 40em;" | A direction $$\mathbf v$$ is a trivector $$v_x e_{423} + v_y \mathbf e_{431} + v_z \mathbf e_{412}$$.
 
|-
$$\mathbf g = g_x \mathbf e_{423} + g_y \mathbf e_{431} + g_z \mathbf e_{412} + g_w \mathbf e_{321}$$
| style="max-width: 40em;" | A plane $$\mathbf g$$ is a trivector $$g_x \mathbf e_{423} + g_y \mathbf e_{431} + g_z \mathbf e_{412} + g_w \mathbf e_{321}$$.
| style="padding: 12px;" | $$\begin{split}\mathbf Q \mathbin{\unicode{x27C7}} \mathbf g \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} =\, &\left[(1 - 2Q_{vy}^2 - 2Q_{vz}^2)g_x + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})g_y + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})g_z\right]\mathbf e_{423} \\ +\, &\left[(1 - 2Q_{vz}^2 - 2Q_{vx}^2)g_y + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})g_z + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})g_x\right]\mathbf e_{431} \\ +\, &\left[(1 - 2Q_{vx}^2 - 2Q_{vy}^2)g_z + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})g_x + 2(Q_{vy}Q_{vz} + Q_{vx}Q_{vw})g_y\right]\mathbf e_{412} \\ +\, &\left[2(Q_{vy}Q_{mz} - Q_{vz}Q_{my} + Q_{vx}Q_{mw} - Q_{vw}Q_{mx})g_x + 2(Q_{vz}Q_{mx} - Q_{vx}Q_{mz} + Q_{vy}Q_{mw} - Q_{vw}Q_{my})g_y + 2(Q_{vx}Q_{my} - Q_{vy}Q_{mx} + Q_{vz}Q_{mw} - Q_{vw}Q_{mz})g_z + g_w\right]\mathbf e_{321}\end{split}$$
| style="max-width: 40em;" | A plane $$\mathbf g$$ is a vector $$g_x \mathbf e_1 + g_y \mathbf e_2 + g_z \mathbf e_3 + g_w \mathbf e_4$$.
|-
| style="max-width: 40em;" | The wedge product $$\wedge$$ performs the join operation.
| style="max-width: 40em;" | The wedge product $$\wedge$$ performs the meet operation.
|-
| style="max-width: 40em;" | The antiwedge product $$\vee$$ performs the meet operation.
| style="max-width: 40em;" | The antiwedge product $$\vee$$ performs the join operation.
|-
| style="max-width: 40em;" | The weight of an object is the magnitude of the components that include the projective basis element $$\mathbf e_4$$.
| style="max-width: 40em;" | The weight of an object is the magnitude of the components that do not include the projective basis element $$\mathbf e_4$$.
|-
| style="max-width: 40em;" | Norms with respect to the geometric product $$\unicode{x27D1}$$ correspond to Euclidean distances for points, lines, planes, and motors.
| style="max-width: 40em;" | Norms with respect to the geometric product $$\unicode{x27D1}$$ correspond to weights.
|-
| style="max-width: 40em;" | Norms with respect to the geometric antiproduct $$\unicode{x27C7}$$ correspond to weights.
| style="max-width: 40em;" | The geometric antiproduct is not available, but there is something called an infinity-norm that can only be defined implicitly. It is able to produce Euclidean distances.
|-
| style="max-width: 40em;" | The dot product between two directions $$\mathbf v$$ and $$\mathbf w$$ satisfies the formula $$\mathbf v \cdot \mathbf w = \left\Vert\mathbf v\right\Vert \left\Vert\mathbf w\right\Vert \cos \phi$$.
| style="max-width: 40em;" | The dot product between two directions $$\mathbf v$$ and $$\mathbf w$$ is always zero. Recovering the conventional dot product formula requires an antidot product, which is not available in this model. If it were available, it would produce an antiscalar.
|-
| style="max-width: 40em;" | The dual of an element $$\mathbf a$$ is given by $$\mathbf{\tilde a} \mathbin{\unicode{x27D1}} {\large\unicode{x1D7D9}} + \mathbf 1 \mathbin{\unicode{x27C7}} \mathbf{\tilde a}$$, and the inverse dual is given by $$\smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}} \mathbin{\unicode{x27D1}} {\large\unicode{x1D7D9}} + \mathbf 1 \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{a}}}$$ (or vice-versa).
| style="max-width: 40em;" | There are no explicit formulas for the dual or inverse dual because both the geometric product and geometric antiproduct are required.
|}
|}


== See Also ==
== See Also ==


* [[Projective Geometric Algebra Done Right]]
* [[Flector]]
* [[Translation]]
* [[Rotation]]

Revision as of 05:36, 6 August 2023

Figure 1. A motor represents a proper Euclidean isometry, which can always be regarded as a rotation about a line $$\boldsymbol L$$ and a displacement along the same line.

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.

Motor Description
$$\begin{split}\mathbf h \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{g}}} =\, &(g_yh_z - g_zh_y)\mathbf e_{41} + (g_zh_x - g_xh_z)\mathbf e_{42} + (g_xh_y - g_yh_x)\mathbf e_{43} \\ +\, &(h_xg_w - g_xh_w)\mathbf e_{23} + (h_yg_w - g_yh_w)\mathbf e_{31} + (h_zg_w - g_zh_w)\mathbf e_{12} \\ +\, &(g_xh_x + g_yh_y + g_zh_z)\smash{\large\unicode{x1d7d9}}\end{split}$$ Rotation about the line where planes $$\mathbf g$$ and $$\mathbf h$$ intersect by twice the angle between them in the direction from $$\mathbf g$$ to $$\mathbf h$$.

$$\mathbf g = g_x \mathbf e_{234} + g_y \mathbf e_{314} + g_z \mathbf e_{124} + g_w \mathbf e_{321}$$

$$\mathbf h = h_x \mathbf e_{234} + h_y \mathbf e_{314} + h_z \mathbf e_{124} + h_w \mathbf e_{321}$$

$$\begin{split}\boldsymbol l \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{k}}} =\, &(l_{vz} k_{vy} - l_{vy} k_{vz})\mathbf e_{41} + (l_{vx} k_{vz} - l_{vz} k_{vx})\mathbf e_{42} + (l_{vy} k_{vx} - l_{vx} k_{vy})\mathbf e_{43} \\ +\, &(l_{vz} k_{my} - l_{vy} k_{mz} + l_{mz} k_{vy} - l_{my} k_{vz})\mathbf e_{23} + (l_{vx} k_{mz} - l_{vz} k_{mx} + l_{mx} k_{vz} - l_{mz} k_{vx})\mathbf e_{31} + (l_{vy} k_{mx} - l_{vx} k_{my} + l_{my} k_{vx} - l_{mx} k_{vy})\mathbf e_{12} \\ +\, &(l_{vx} k_{mx} + l_{vy} k_{my} + l_{vz} k_{mz} + l_{mx} k_{vx} + l_{my} k_{vy} + l_{mz} k_{vz}) \\ +\, &(l_{vx} k_{vx} + l_{vy} k_{vy} + l_{vz} k_{vz})\smash{\large\unicode{x1d7d9}}\end{split}$$ Rotation about the line containing the closest points on lines $$\mathbf k$$ and $$\boldsymbol l$$ by twice the angle between the directions $$(l_{vx}, l_{vy}, l_{vz})$$ and $$(k_{vx}, k_{vy}, k_{vz})$$, and translation by twice the distance between the lines in the direction from $$\mathbf k$$ to $$\boldsymbol l$$.

$$\mathbf k = k_{vx} \mathbf e_{41} + k_{vy} \mathbf e_{42} + k_{vz} \mathbf e_{43} + k_{mx} \mathbf e_{23} + k_{my} \mathbf e_{31} + k_{mz} \mathbf e_{12}$$

$$\boldsymbol l = 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}$$

$$\mathbf q \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{p}}} = (q_xp_w - p_xq_w)\mathbf e_{23} + (q_yp_w - p_yq_w)\mathbf e_{31} + (q_zp_w - p_zq_w)\mathbf e_{12} + (p_wq_w)\smash{\large\unicode{x1d7d9}}$$ Translation by twice the distance between points $$\mathbf p$$ and $$\mathbf q$$ in the direction from $$\mathbf p$$ to $$\mathbf q$$.

$$\mathbf p = p_x \mathbf e_1 + p_y \mathbf e_2 + p_z \mathbf e_3 + p_w \mathbf e_4$$

$$\mathbf q = q_x \mathbf e_1 + q_y \mathbf e_2 + q_z \mathbf e_3 + q_w \mathbf e_4$$

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}) - \dfrac{dQ_{vw}}{s}(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×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×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

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

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

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

$$Q_{mw} = -\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.

Type Transformation
Point

$$\mathbf p = p_x \mathbf e_1 + p_y \mathbf e_2 + p_z \mathbf e_3 + p_w \mathbf e_4$$

$$\begin{split}\mathbf Q \mathbin{\unicode{x27C7}} \mathbf p \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} =\, &\left[(1 - 2Q_{vy}^2 - 2Q_{vz}^2)p_x + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})p_y + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})p_z + 2(Q_{vy}Q_{mz} - Q_{vz}Q_{my} + Q_{vw}Q_{mx} - Q_{vx}Q_{mw})p_w\right]\mathbf e_1 \\ +\, &\left[(1 - 2Q_{vz}^2 -2Q_{vx}^2))p_y + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})p_z + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})p_x + 2(Q_{vz}Q_{mx} - Q_{vx}Q_{mz} + Q_{vw}Q_{my} - Q_{vy}Q_{mw})p_w\right]\mathbf e_2 \\ +\, &\left[(1 - 2Q_{vx}^2 - 2Q_{vy}^2))p_z + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})p_x + 2(Q_{vy}Q_{vz} + Q_{vx}Q_{vw})p_y + 2(Q_{vx}Q_{my} - Q_{vy}Q_{mx} + Q_{vw}Q_{mz} - Q_{vz}Q_{mw})p_w\right]\mathbf e_3 \\ +\, &p_w\mathbf e_4\end{split}$$
Line

$$\begin{split}\boldsymbol l =\, &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}\end{split}$$

$$\begin{split}\mathbf Q \mathbin{\unicode{x27C7}} \boldsymbol l \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} =\, &\left[(1 - 2Q_{vy}^2 - 2Q_{vz}^2)l_{vx} + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})l_{vy} + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})l_{vz}\right]\mathbf e_{41} \\ +\, &\left[(1 - 2Q_{vz}^2 - 2Q_{vx}^2)l_{vy} + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})l_{vz} + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})l_{vx}\right]\mathbf e_{42} \\ +\, &\left[(1 - 2Q_{vx}^2 - 2Q_{vy}^2)l_{vz} + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})l_{vx} + 2(Q_{vy}Q_{vz} + Q_{vx}Q_{vw})l_{vy}\right]\mathbf e_{43} \\ +\, &\left[-4(Q_{vy}Q_{my} + Q_{vz}Q_{mz})l_{vx} + 2(Q_{vy}Q_{mx} + Q_{vx}Q_{my} - Q_{vz}Q_{mw} - Q_{vw}Q_{mz})l_{vy} + 2(Q_{vz}Q_{mx} + Q_{vx}Q_{mz} + Q_{vy}Q_{mw} + Q_{vw}Q_{my})l_{vz} + (1 - 2Q_{vy}^2 - 2Q_{vz}^2)l_{mx} + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})l_{my} + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})l_{mz}\right]\mathbf e_{23} \\ +\, &\left[-4(Q_{vz}Q_{mz} + Q_{vx}Q_{mx})l_{vy} + 2(Q_{vz}Q_{my} + Q_{vy}Q_{mz} - Q_{vx}Q_{mw} - Q_{vw}Q_{mx})l_{vz} + 2(Q_{vx}Q_{my} + Q_{vy}Q_{mx} + Q_{vz}Q_{mw} + Q_{vw}Q_{mz})l_{vx} + (1 - 2Q_{vz}^2 - 2Q_{vx}^2)l_{my} + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})l_{mz} + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})l_{mx}\right]\mathbf e_{31} \\ +\, &\left[-4(Q_{vx}Q_{mx} + Q_{vy}Q_{my})l_{vz} + 2(Q_{vx}Q_{mz} + Q_{vz}Q_{mx} - Q_{vy}Q_{mw} - Q_{vw}Q_{my})l_{vx} + 2(Q_{vy}Q_{mz} + Q_{vz}Q_{my} + Q_{vx}Q_{mw} + Q_{vw}Q_{mx})l_{vy} + (1 - 2Q_{vx}^2 - 2Q_{vy}^2)l_{mz} + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})l_{mx} + 2(Q_{vy}Q_{vz} + 2Q_{vx}Q_{vw})l_{my}\right]\mathbf e_{12}\end{split}$$
Plane

$$\mathbf g = g_x \mathbf e_{423} + g_y \mathbf e_{431} + g_z \mathbf e_{412} + g_w \mathbf e_{321}$$

$$\begin{split}\mathbf Q \mathbin{\unicode{x27C7}} \mathbf g \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} =\, &\left[(1 - 2Q_{vy}^2 - 2Q_{vz}^2)g_x + 2(Q_{vx}Q_{vy} - Q_{vz}Q_{vw})g_y + 2(Q_{vz}Q_{vx} + Q_{vy}Q_{vw})g_z\right]\mathbf e_{423} \\ +\, &\left[(1 - 2Q_{vz}^2 - 2Q_{vx}^2)g_y + 2(Q_{vy}Q_{vz} - Q_{vx}Q_{vw})g_z + 2(Q_{vx}Q_{vy} + Q_{vz}Q_{vw})g_x\right]\mathbf e_{431} \\ +\, &\left[(1 - 2Q_{vx}^2 - 2Q_{vy}^2)g_z + 2(Q_{vz}Q_{vx} - Q_{vy}Q_{vw})g_x + 2(Q_{vy}Q_{vz} + Q_{vx}Q_{vw})g_y\right]\mathbf e_{412} \\ +\, &\left[2(Q_{vy}Q_{mz} - Q_{vz}Q_{my} + Q_{vx}Q_{mw} - Q_{vw}Q_{mx})g_x + 2(Q_{vz}Q_{mx} - Q_{vx}Q_{mz} + Q_{vy}Q_{mw} - Q_{vw}Q_{my})g_y + 2(Q_{vx}Q_{my} - Q_{vy}Q_{mx} + Q_{vz}Q_{mw} - Q_{vw}Q_{mz})g_z + g_w\right]\mathbf e_{321}\end{split}$$

See Also