Attack of the Mirrors

Plane-Based Geometric Algebra \(\mathbb{ R}^{d,0,1}\)

Leo Dorst


Steven De Keninck

SIBGRAPI 2021, Brazil

One Scheme to Rule Them All

  • PGA integrates objects and operators
  • PGA relates all known computational representations
  • PGA is real and understandable geometry
  • PGA empowers the programmer
  • PGA leads to very frugal, efficient code
  • PGA is fun !
  1. It's All Done with Mirrors
  2. Operators and Objects
  3. Interpolating Motions
  4. Orthogonal Projections
  5. PGA: Just Right

Enjoy Your Flight with

1. It's All Done with Mirrors

  • Bullet One
  • Bullet Two
  • Bullet Three

Plane Reflection Algebra

Define a sensible geometric product such that reflection of an oriented plane \(x\) in a plane mirror \(a\) becomes:

\[x ~~\mapsto~~-a \, x \, a^{-1}\]

The mirror plane reflects to its negative:  

\[a \mapsto -a\,a\,a^{-1} = -a\]

So planes are oriented, they have sides.

To make the geometric product work in the right way, it needs to be bilinear, associative, not generally commutative, and square to a scalar (which is \(a^2 = a \cdot a\) ).


mirror \(a\)



A Plane is a PGA Vector

You may have used the homogeneous coordinates,  \([\mathbf{n},-\delta]\) for a plane. In PGA we use:

$$p = \mathbf{n} + \delta\,{\sf e}.$$

Here \({\sf e}\) is a basis vector for the extra dimension. 


It can be interpreted as the plane at infinity and satisfies

\({\sf e}^2 = 0\).

That explains the notation \(\mathbb{R}^{d,0,1}\) for PGA: there are \(d\) Euclidean dimensions, plus an extra null dimension.


Commutation and Perpendicularity

A plane \(b\) perpendicular to a mirror \(a\) reflects to itself:  \( -a \,b \, a^{-1} = b\). So we have:

         algebra \(\rightarrow\)     \(a \,b = - b \, a      \Longleftrightarrow      b \, \bot  a\)     \(\leftarrow\) geometry

perpendicular planes anticommute


This holds especially for the Euclidean coordinate planes:

\(\mathbf{e}_1\,\mathbf{e}_2 = -\mathbf{e}_2\,\mathbf{e}_1\), etc.

We also demand it for the special plane \(\mathsf{e}\):   

\(\mathsf{e}\,\mathbf{e}_i= -\mathbf{e}_i\,\mathsf{e}\).

Of course, identical planes commute:  \(\mathbf{e}_1\,\mathbf{e}_1 = \mathbf{e}_1\,\mathbf{e}_1\).




Multiple Reflections Give Operator Elements

Perform two reflections in succession:

\(x ~~~\mapsto~~-a_2 \, (-a_1\, x  \,a_1^{-1})\,  a_2^{-1}= (a_2\,a_1)\, x\, (a_2\,a_1)^{-1}\)

This shows that elements of the form \((a_2\,a_1)\) act as rotation/translation operators. We can clearly continue this with more reflections.


A geometric product of planes produces a motion, when applied as sandwiching. We call it a motor.

Motors are computational elements of the plane-based geometric algebra PGA: Euclidean motion operators are thus naturally included!






Only Axis and Separation Angle Matter





actually this is better shown as demo only, the math is not very helpful. creating the awareness is enough

2. Operators and Objects

Parallel Reflections: Translation Operators

Double reflection in two parallel plane mirrors:

     \(p_2\,p_1 =\) \((\mathbf{n} + \delta_2 \mathsf{e}) \, (\mathbf{n} + \delta_1 \mathsf{e}) \)

              \(= \mathbf{n}\,\mathbf{n} + \delta_2\, \mathsf{e} \,\mathbf{n} + \delta_1\,\mathbf{n}\,\mathsf{e}  + \delta_2\delta_1 \,\mathsf{e}\,\mathbf{n}\,\mathsf{e}\,\mathbf{n} \)

              \(= 1 - (\delta_2-\delta_1) \mathbf{n}\, \mathsf{e}+ 0\)

              \(= 1 - \mathbf{t} \mathsf{e}/2\)

              \(= 1- \mathbf{t} \,\mathsf{e}/2 + \frac{1}{2!}(-\mathbf{t} \,\mathsf{e}/2)^2+\cdots\)

              \(= \exp({-\mathbf{t} \,\mathsf{e}/2})\)

Translations are additive: 

     \((1-\mathbf{t}_2\mathsf{e}/2)\,(1-\mathbf{t}_1\mathsf{e}/2)\) \( = 1 - (\mathbf{t}_2+\mathbf{t}_1)\mathsf{e}/2 + \mathbf{t}_2\mathsf{e}\,\mathbf{t}_1\mathsf{e}/4\) \(= 1 -(\mathbf{t}_2+\mathbf{t}_1)\,\mathsf{e}/2\)

 You see how \({\sf e}^2 = 0\) is crucial to making this work.


\( \mathbf{t} = 2 (\delta_2-\delta_1)\,\mathbf{n} \)



Tilted Plane Reflections: Rotation Operators


...and  \((\mathbf{e}_2\mathbf{e}_3)^2 = (\mathbf{e}_3\mathbf{e}_1)^2=-1\).

Shades of quaternions? Yes!

Let us choose handy local coordinates so that the two mirrors are  \(p_1= \mathbf{e}_1\), and  \(p_2 = \mathbf{e}_1 \cos(\phi/{\small 2}) + \mathbf{e}_2\sin(\phi/{\small 2})\). Then

     \(p_2\, p_1 =\)\(\big(\mathbf{e}_1 \cos(\phi/{\small 2}) + \mathbf{e}_2\sin(\phi/{\small 2})\big)\,\mathbf{e}_1\)

              \(= \mathbf{e}_1^2 \cos(\phi/{\small 2}) + \mathbf{e}_2\mathbf{e}_1\,\sin(\phi/{\small 2})\)

              \(= \cos(\phi/{\small 2}) - L \sin(\phi/{\small 2}) \)

              \(= \exp({-\phi L/2})\)

with \(e_1e_2 =\)\( L\) the common line and \(\phi\) the rotation angle.

Note that a line has a negative square:

                \(L^2 = \mathbf{e}_1\mathbf{e}_2\mathbf{e}_1\mathbf{e}_2 = - \mathbf{e}_1^2\mathbf{e}_2^2 = -1\),

motivating the exponential notation.



\(\phi/{\small 2}\)


(Steven showed you

that \(\mathbf{e}_1\mathbf{e}_2\) is a line \(L\).)

(Note that the exponential notation has no gauge ambiguities, unlike \(p_2p_1\). Yet the operators still combine correctly!)

The Line Common to Two Planes Is a Bivector

The line common to two non-orthogonal planes \(a\) and \(b\) is the bivector

        \(L = a \wedge b \equiv \frac{1}{2} (a \, b - b\, a)\).

The line norm \(\|L\| = \sin(\angle(a,b))\) is a useful numerical stability measure.

The wedge product \(\wedge\) (also known as the meet or outer product) is bilinear, anti-symmetric, and extended to be associative. Note that \(a \wedge a = 0\)

(Associativity by defining \(x \wedge A = \frac{1}{2}(x \, A + \hat{A}\,x)\), with \(\hat{A}\) giving minus sign for odd \(A\) ).


(This is the geometry of Plücker coordinates.) 

Example: \(\Big(\mathbf{e}_1 \cos(\phi/{\small 2}) + \mathbf{e}_2\sin(\phi/{\small 2}) + \delta \mathsf{e}\Big) \wedge \mathbf{e}_1 = \underbrace{\mathbf{e}_2 \wedge\mathbf{e}_1\,\sin(\phi/{\small 2})}_{direction} + \underbrace{\delta \, \mathsf{e} \wedge \mathbf{e}_1}_{location}\)




Bonus Material:

The Line Is Indeed Invariant Under Rotation

The element \(a \wedge b\) commutes with the rotation operator \(a \, b\).

    \(  (a \wedge b)\, (a\,b) = \frac{1}{2} (a \, b \, a \, b - b\,a\,a\,b) \)

                         \(= \frac{1}{2} (a \, b \, a \, b - 1) \)

                         \(= \frac{1}{2} (a \, b \, a \, b - a\,b\, b\,a)\)

                         \(= (a \, b) \, (a \wedge b) \)

Therefore, the element \(L = a \wedge b\) is invariant under the rotation \(R_{L\phi} =a \, b\), for

               \( R_{L\phi}\, L \,R^{-1}_{L\phi} = L\, R_{L\phi}\,R^{-1}_{L\phi} = L\).

So it must be the common line.      Circular reasoning is OK for rotations!


A Point: a Trivector Common to Three Planes

Standard example:

    \(  X \) \(= (\mathbf{e}_1+x_1\mathsf{e}) \wedge (\mathbf{e}_2+x_2\mathsf{e}) \wedge (\mathbf{e}_3+x_3\mathsf{e})\)

           \( = \mathbf{e}_1\mathbf{e}_2\mathbf{e}_3 + x_1 \,\mathsf{e}\,\mathbf{e}_2\mathbf{e}_3 + x_2 \,\mathsf{e}\, \mathbf{e}_3\mathbf{e}_1 + x_3 \,\mathsf{e} \,\mathbf{e}_1\mathbf{e}_2\)

           \( = \mathbf{e}_1\mathbf{e}_2\mathbf{e}_3 - (x_1\mathbf{e}_1 + x_2 \mathbf{e}_2 + x_3\mathbf{e}_3)\,\mathsf{e}\,\mathbf{e}_1\mathbf{e}_2\mathbf{e}_3\)

           \(= O - \mathbf{x} \, \mathcal{I}\)

Just like with homogeneous coordinates, a point \(X\) is characterized as \([1, x_1, x_2, x_3]\), but now on the PGA trivector basis \([\mathbf{e}_1\mathbf{e}_2\mathbf{e}_3, -\mathsf{e}\mathbf{e}_2\mathbf{e}_3, -\mathsf{e}\mathbf{e}_3\mathbf{e}_1, -\mathsf{e}\mathbf{e}_1\mathbf{e}_2]\).

The trivector \(a \wedge b \wedge c\) is the point 

common to three planes \(a, b, c\).


\(O\) and \(\mathcal{I}\) are pseudoscalars for Euclidean and PGA space

We can use the point \(X\) as a point reflector:  \(y ~\mapsto~-X\,y\,X^{-1}\).

A 16-D Basis for the 3D PGA \(\mathbb{R}^{3,0,1}\)

Ultimately, the elements of \(\mathbb{R}^{d,0,1}\) can be expressed on a standard multivector basis, of \(2^d\) basis elements.  All elements are used!

For 3D, there are thus sixteen 'geometric numbers' on a basis:

\(\{ 1,\) \(\mathsf{e},\mathbf{e}_1,\mathbf{e}_2,\mathbf{e}_3,\)\(~ \mathbf{e}_2\mathbf{e}_3,\mathbf{e}_3\mathbf{e}_1, \mathbf{e}_1\mathbf{e}_2,\)\(\mathsf{e}\mathbf{e}_1,\mathsf{e}\mathbf{e}_2,\mathsf{e} \mathbf{e}_3,\) \(\mathbf{e}_1\mathbf{e}_2\mathbf{e}_3,\)\(\mathsf{e}\mathbf{e}_3\mathbf{e}_2,\mathsf{e}\mathbf{e}_1\mathbf{e}_3,\mathsf{e}\mathbf{e}_2\mathbf{e}_1,\) \(\mathsf{e}\mathbf{e}_1\mathbf{e}_2\mathbf{e}_3\}\)


General Motors

We can multiply rotation and translation motors to produce a motor for any Euclidean motion. These general motors:

  • are algebraically isomorphic to dual quaternions.
  • are totally real, built from reflections in real planes.
  • can be applied to any element, by sandwiching.
  • at one point in 3D: rotation motors are quaternions
  • at one point in 2D: rotation motors are complex numbers
  • without rotations in \(d\)-D: motors are effectively position vectors


Automatic Equivariance of Motions

All elements are basically made from a weighted sum of geometric products.

Therefore they all transform in the same way, by sandwiching:

\[ M\,(x\,y)\,M^{-1} =  (M\,x\,M^{-1})\,(M\,y\,M^{-1}).\]

A motor moves a composed element as the composition of the moved constituents; so exactly as you would want!


No more need to spell out motions depending on argument type. 


This simplifies code enormously!

3. Interpolating Motions

\(M= R_{\phi L} \, T_{\delta L\mathcal{I}} =  T_{\delta L\mathcal{I}}\, R_{\phi L}\)


Chasles' Theorem & Motor Logarithms

Any Euclidean motion can (locally) be seen as a rotation

around an axis \(L\), combined with a translation along it.

In PGA, two ways of seeing this:

  • G: Any even multiple of reflections can be reduced to two orthogonal bireflections, one involving parallel planes.
  • A: Any bivector in 4D can be written as the sum of two commuting bivectors, one of them ideal. 

Either leads to a way to compute the logarithm of a motor

\(\log(M) = \log(e^{-Bt/2})= -\frac{t}{2} (\phi\, L + \delta\, L\mathcal{I})\)

The logarithm helps to split the motor into independent parts:

\(e^{-\frac{t}{2}(\phi\, L + \delta\, L\mathcal{I})} = e^{-\phi t L /2} \, e^{-\delta t L\mathcal{I}/2} = e^{-\delta t L\mathcal{I}/2} \, e^{-\phi t L/2}\)

Now we can interpolate motors:    \({}^{{}^n} \!\!\!\!\sqrt{M} =e^{\log(M)/n}\) etc.


( many hidden subtleties! we solved them for you...)

Motor Logarithms: Bivector Invariants

We retrieve the invariant bivector by the PGA logarithm:

\(\log(M) = \log(e^{-Bt/2})= -Bt/2\)

Bivectors form a linear space in which we can use all the usual interpolation techniques, like:  \({}^{{}^n} \!\!\!\!\sqrt{M} =e^{\log(M)/n}\) etc.


The bivectors form the Lie algebra of the motions in PGA.

We made the motors originally as multiple reflections in planes.



\(\phi/{\small 2}\)


But in practice we use their exponential form, based on the line (or screw) they keep invariant:

motor = exp(invariant bivector)

Interpolation by Bivector Splines

  • Take the logarithm to get bivectors \(B_i\) for the pose motors \(M_i\).
  • Bivector space is linear and flat so you can do splines there.
  • Exponentiate the interpolated \(B_i\) to get interpolated motors.

You are effectively interpolating in the Lie algebra.


Bivectors Represent Motions


4. Orthogonal Projections

The Other Part of the Geometric Product

We have seen that the anti-symmetric meet product

\[a \wedge b \equiv \frac{1}{2}(a\,b-b\,a)\]

generates objects by intersection. It is non-metric.


The symmetric part of the geometric product

\[a \cdot b \equiv \frac{1}{2}(a\,b+b\,a)\]

is the usual dot product. It is metric and can be extended to all elements.      (According to \(x \cdot A \equiv \frac{1}{2}(x \, A - \hat{A}\,x)\) and \( (X \wedge y) \cdot Z \equiv X \cdot (y \cdot Z)\) etc. )


The geometric product is basic, all the rest is derived from it.


All Things Project Alike

To project an element \(X\) orthogonally onto an element \(A\), do

\[ X ~~\mapsto~~ (X \cdot A)\, A^{-1}\]

Projection is thus universal. Some results are intriguing...




\((p \cdot L)\,L^{-1}\)

\((L \cdot p)\,p^{-1}\)



\((p \cdot X)\,X^{-1}\)

\((X \cdot p)\,p^{-1}\)

point \(X\) and plane \(p\)

line \(L\) and plane \(p\)

Coordinate-Free Encoding of Geometrical Relationships and Objects


Linear Transformations and Motions

With the universal orthogonal projection, you can express any linear operator, and make it act on any element.

However, if you have a defining type of motion, better move to a geometric algebra that represents that as its motors.

 Motion  Algebra  Signature  Vector
 Re-Orientation   GA  Direction
 Euclidean   PGA  Plane
 Conformal   CGA  Sphere
 Special Relativity   STA  Event
 3D Projectivities   LGA  3D Line
       et cetera









5. PGA: Just Right

  • Bullet One
  • Bullet Two
  • Bullet Three

PGA contains the elements of Euclidean geometry

(objects, operators, and their computational representations)

in one compact package, with clear mutual relationships.

For all your Geometric Products, visit


Ganja Coffeeshop Time!


Motor or Matrix?

The Forque Awakens

Newtonian Dynamics in PGA

Leo Dorst

Steven De Keninck

SIBGRAPI 2021, Brazil


  1. Two Types of Lines
  2. Momentum and Inertia
  3. May the Forque Be with You
  4. Differentiating Motors
  5. Unified Dynamics
  6. Classical Mechanics Embedded
  7. Demos

Kinematics and Dynamics in PGA

Roadmap of this Talk

1. Join Lines 

0. Kinematics

2. Mass in Motion

3. Forque Action

4. Derivatives

5. Dynamics

1. Two Types of Lines

Two planes meet in a line.

Two points join to form a line.

Are those lines of the same type? No!





Points Move Along Lines

The line from point \(X\) to point \(Y\) is the PGA element \[X \vee Y \]

It is defined using the JOIN product \(\vee\), which is (in a Hodge sense) dual to the MEET product \(\wedge\) (and, like it, a linear combination of geometric products).

One can derive from this that the line from \(X\)  in direction \({\bf u}\) is: \[ {\bf u} \cdot X\]

The join in \({\mathbb R}^{d,0,1}\) of two \(d\)-vector points is a \((d-1)\)-vector.

  • (Join) lines in \(d\)-D are \((d-1)\)-vectors (dual bivectors)!
  • (Meet) hyperlines are 2-vectors (bivectors) in any dimension.


Consider a 2D picture of a tricycle in a plane, made of points and lines. Analyze and program up, then pop up the third dimension.


Some points remain points (2-vectors to 3-vectors), but the turning points become extruded to axis lines; they were 2D hyperlines.

Some lines remain lines (they were join lines), but the boundary lines become planes (they were 2D hyperplanes).

We need them all!

PGA encodes them all properly, so they extrude correctly to \(d\)-D.

Hyperlines vs Lines


2. Momentum and Inertia

The Momentum of a Moving Mass is a Line

A point with mass \(m\) moving with velocity \({\bf v}\) through a point \(X\) has as momentum \(P\) the join line:

\[ P=m\,X\vee \dot{X}=m\,{\bf v}\cdot X\]

Note that the inclusion of the point \(X\), where things happen, is more specific than in Classical Mechanics (CM).


It is precisely this practice that makes the PGA momentum into an element of geometry, which allows PGA to be coordinate-free.


Inertial Momentum of a Point Cloud

We defined the linear inertia map \(I[\,]\), taking a bivector and producing a dual bivector (i.e. \((d-1)\)-vector). It contains all required information on the mass distribution.


PGA inertia is additive: it can be evaluated anywhere. Inertia of union is sum of inertias. No parallel axis theorem needed!


P = \Sigma_i \,m_i \,X_i \vee \dot{X}_i \\
= \Sigma_i \,m_i \,X_i \vee (X_i \times B) \\
\equiv I[B]

definition join line

moving by motor: bivector rate

defining inertia map

We will show that \(\dot{X}_i = X_i \times B\) a little later.

Masses Provide the Inertial Duality 

to Convert Rates to Momenta

Rate \(B\) is for kinematics.

Momentum \(P\) is for dynamics.

Inertia \(I[\,]\) couples them.


momentum \(P\)

join line


P = I[B]

rate \(B\)



inertia \(I[\,]\)

duality map

The Inertial Duality Map is not Symmetric

On a basis of principal frame bivectors \((e_{23},e_{31},e_{12},\)\(e_{01},e_{02},e_{03})\), the 3DPGA inertia map acts like the matrix:

\begin{bmatrix} 0 & 0 & 0 & m & 0 & 0 \\ 0 & 0 & 0 & 0 & m & 0 \\ 0 & 0 & 0 & 0 & 0 & m \\ i_1 & 0 & 0 & 0 & 0 & 0 \\ 0 & i_2 & 0 & 0 & 0 & 0 \\ 0 & 0 & i_3 & 0 & 0 & 0 \\ \end{bmatrix} = \begin{bmatrix} \mathbb{O} & m \mathbb{I} \\ {I}_C & \mathbb{O} \end{bmatrix}

Note the dual nature: converts Euclidean to ideal and vice versa.


It changes a meet line to a join line, intuitively

from an 'around' axis to an 'along' flow line.

(NOTE: not from rotation to translation; translation is also 'around' an infinity line!)

classical mechanics inertia matrix



May the Forque Be with You

A Force is a Line

Classically, you speak of a force vector \({\bf f}\) attached at a location \(X\), but ultimately only compute with \({\bf f}\) (and leave \(X\) in the text).


In PGA, we compute with the

force line    \(F = {\bf f}\cdot\!X\)

This is a geometric object, free from convention on origin or choice of coordinates.


What does that mean, and why does it help enormously?


A Force Line Induces Torque Elsewhere

In PGA, we compute with the force line \(F = {\bf f}\cdot\!X\).

Consider the same force line \(F\) from another point \(Y\):

              \(F = {\mathbf f} \cdot X = {\mathbf f} \cdot (O - \mathbf{x} \, \mathcal{I})\)

                  \(= {\mathbf f} \cdot (O - \mathbf{y} \, \mathcal{I}) +  {\mathbf f} \cdot \big( (\mathbf{y}-\mathbf{x}) \, \mathcal{I} \big) \)

                  \( = {\mathbf f} \cdot Y +  \big((\mathbf{y}-\mathbf{x}) \times {\mathbf f}\big) \wedge\mathsf{e}\)    

                  force at \(Y\)               torque at \(Y\)

Force and torque are unified in \(F\), how you experience them depends on where you are. No need for parallel axis theorem!


Let us call this element of physical geometry: forque.

(Yes, \(F\) is like a wrench from screw theory)


Momentum and Forques: Both Screw Lines

With both total momentum and total forque in the same format of \((d-1)\)-vectors, we are ready to work with Newton/Euler in a geometric, coordinate-free way, in any dimension.


There is a slight (and necessary) subtlety: a sum of lines is not a line but a screw line.





4. Differentiating Motors

M = e^{-B t/2}
X = M \, X_0 \, M^{-1}

Motors in World Frame or Body Frame

We can represent a given motor \(M\) (with initial state \(M_0\)) either in a world frame:

   \(M\) = \(e^{-B_wt/2}\) \(M_0\),

or in the body frame:

  \(M\) = \(M_0\) \(e^{-B_bt/2}\).


We then get a left or right bivector differential equation for \(M\):


\(\frac{d}{dt}M \equiv \dot{M}\) = \(-\frac{1}{2} B_w M\) = \(-\frac{1}{2} M B_b\). 


Use either to solve \(M\) given \(B\), it is a choice of convenience.


Differentiating a Moving Element

When an element is moved with a time-dependent motor \(M(t) = e^{-B t/2}\), we have

               \(\partial_t X(t)\) \( = \partial_t \big(M(t) X_0 M(t)^{-1}\big) \)

                           \(= - \frac{B}{2} \, X(t) +  X(t) \, \frac{B}{2}\)

                           \(= X(t) \times B\)

employing the commutator product: \(A \times B \equiv \frac{1}{2}(A\,B-B\,A).\)


Differential motions are thus determined by commutators with the bivectors of their motors.


This incorporates the Lie algebra of motions into GA.


Coupling Forque to Motion

Finally, some physics! Newton/Euler states that

the total forque gives the change of total momentum:

\[F = \dot{P}\]

and this fully determines the motion.


We thus need the time derivative of the momentum:

\[ \dot{P} = \partial_t {I}[B] = I[B] \times\!B + I[\dot{B}]\]

Masses move by \(M\), so inertia changes by  \(\times B\)  ...

... but \(B\) also changes with time.


5. Unified  Dynamics

Done: All in One

From \(F = \dot{P} = \partial_t {I}[B] = I[B] \times B + I[\dot{B}]\) and the motor differentiation, we have (in the body frame):

\dot{B} = I^{-1}[F - I[B] \times B] \\ \dot{M} = -\frac{1}{2} \, M B

This is all of Newton/Euler dynamics, both linear and angular. 


These equations can easily be integrated by numeric methods (and in some situations by hand).


Demo Time!


nDHooke for cube

3D Hooke for block

More demos in talks 5&6: A New Hope

Demo Time!


nDHooke for cube

3D Hooke for block

More demos in talks 5&6: A New Hope

Kinematics and Dynamics in PGA


\dot{B} = I^{-1}[F - I[B] \times B] \\ \dot{M} = -\frac{1}{2} \, M B

Elements of 3D PGA

In 3D lines and hyperlines look very similar, in coordinates.

This confusion may have hampered integrated CM representation.


6. PGA Embedding of 3D Classical Mechanics 

Two for the Price of One

  • PGA needs only 4 quantities to do all, CM takes 8
  • PGA is coordinate-free: no descriptive basis needed
  • CM is a pre-split version of PGA, hiding the location
  • Conversion: name location \(.X\), use infinity \(\wedge {\sf e}\), simply add.


Screw Theory & Spatial Vectors


  • Neither employ bivectors, which complicates their math (some special products, in two dual spaces).
  • Neither contain geometric elements, to act on directly.
  • Perhaps because of that, they have remained specialized skills for too many years.
  • They are specific for 3D; in PGA it's just as easy to be \(d\)-D.

There are two other 6D frameworks also combining linear and angular aspects for 3D, both also correct:

  • screw theory (Ball, Study, 19th century)
  • spatial algebra (Featherstone, 20th century)


7. Ganja Coffeeshop Time!

For all your Geometric Products, visit


Copy of PGAeasy1

By Steven De Keninck

Copy of PGAeasy1

  • 319