GAME 2023

Geometric Algebra
The Prequel.

Steven De Keninck & Martin Roelfs

What is Geometric Algebra ?

An alternative to vector/matrix algebra ideal for (amongst many other things) geometry.
An algebra on a graded linear (vector) space, with an invertible product that operates on multivectors.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

What is Geometric Algebra ?

GAME 2023

We will first tackle the Algebra.

  1. New numbers : Why do we need them?
  2. New numbers : What are they ?
  3. New numbers : How do I use them ?
  4. \(k\)-vectors and Cayley Tables

GAME 2023

الكتاب المختصر في حساب الجبر والمقابلة

al-Kitāb al-Mukhtaṣar fī Ḥisāb al-Jabr wal-Muqābalah

The Compendious Book on Calculation by Completion and Balancing

1. New Numbers: why do we need them?

GAME 2023

1. New Numbers: why do we need them?

\(x^2 + 10x = 39\)

\(= 39\)

\(+ 25=64\)

\((x+5)^2 = 64\)

\(\Leftrightarrow x = 3\)

\(x\)

\(x\)

\(x^2\)

\(x\)

\(5\)

\(5x\)

\(x\)

\(5\)

\(5x\)

\(5\)

\(5\)

\(25\)

\( \begin{cases} \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \end{cases}\)

\(x+5\)

GAME 2023

1. New Numbers: why do we need them?

\(ax^2 = bx\)

\(ax^2 = c\)

\(bx = c\)

\(ax^2 + bx = c\)

\(ax^2+c = bx\)

\(bx + c = ax^2\)

Why six equations ?????

No negative numbers, no zero !!

GAME 2023

1. New Numbers: why do we need them?

Why six equations ?????

No negative numbers, no zero !!

\(x + 1 = 1\)

\(x + 1 = 0\)

zero!

negative numbers!

With 0 and negative numbers, we reduce the amount of equations from 6 to 1 !!!

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

Transform point/line/plane/direction \(b\) with rotor \(a\)

\(ab\tilde a\)

Project any point/line/plane \(a\) on any point/line/plane \(b\)

\(\frac {a\cdot b} {b}\)

Compare this to the classic vector/matrix approach ...

// just a matrix multiply
transform_point( M,  )
// similar to point .. diff. M
transform_direction( M,  )
// should be 6x6 matrix
transform_line( M,  )
// similar to direction .. diff. M
transform_plane( M,  )
// none of these are similar..
project_point_line()
project_point_plane()
project_line_point()
project_line_plane()
project_plane_point()
project_plane_line()
Lets do the same with another simple equation..
x^2 \,\,+\,\, 1\,\, =\,\, 0

e

e

e

\(\mathbf e^2 = -1\)

\(\mathbf e^2 = +1\)

\(\mathbf e^2 = 0\)

\(\mathbb R_{\color{green}p\color{white},\color{red}q\color{white},\color{cyan}r\color{white}}\)

A Geometric Algebra is defined by this p,q,r signature specifying the metric of the n generators.

GAME 2023

2. New Numbers: what are they?

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

Transform point/line/plane/direction \(b\) with rotor \(a\)

\(ab\tilde a\)

Project any point/line/plane \(a\) on any point/line/plane \(b\)

\(\frac {a\cdot b} {b}\)

\(\mathbb R_{\color{green}p\color{white},\color{red}q\color{white},\color{cyan}r\color{white}}\)

A Geometric Algebra is defined by this p,q,r signature specifying the metric of the n generators.

GAME 2023

  • \(\mathbb R_3 \)

\(\mathbf e_1, \mathbf e_2, \mathbf e_3 \), all square to \(+1\)

  • \(\mathbb R_{1,3} \)

\(\mathbf e_1\) squares to \(+1\), \(\mathbf e_2, \mathbf e_3, \mathbf e_4\), all square to \(-1\)

  • \(\mathbb R_{3,0,1} \)

\(\mathbf e_0\) squares to \(0\), \(\mathbf e_1, \mathbf e_2 ,\mathbf e_3\), all square to \(+1\)

We will use these generators to model vectors, points, circles, lines, planes, translations, boosts, rotations, screws, spheres, ...

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

2. New Numbers: what are they?

GAME 2023

3. New Numbers: how do I use them?

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(x^2 \in \mathbb R\)

\((\alpha \mathbf e_1 + \beta \mathbf e_2)^2 \in \mathbb R\)

\(\alpha^2 \mathbf {e_1}^2 + \alpha\beta\color{lightgreen}\mathbf e_1\mathbf e_2\color{white} + \alpha\beta\color{lightgreen}\mathbf e_2\mathbf e_1 \color{white} + \beta^2 {\mathbf e_2}^2 \in \mathbb R\)

\( \color{lightgreen} \mathbf e_1\mathbf e_2 + \mathbf e_2\mathbf e_1 \color{white} = 0\)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \color{white} \)

\(\mathbf e_1\)

\(\mathbf e_2\)

\(x = \alpha \mathbf e_1 + \beta \mathbf e_2\)

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

What is this new \(\mathbf e_1 \mathbf e_2 = \mathbf e_{12}\) element?

\(\alpha\mathbf e_1 + \beta\mathbf e_2\)

\(\alpha\mathbf e_{12}\)

\(\alpha\mathbf e_{12}\)

\(\alpha\mathbf e_{123}\)

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

\((\mathbf e_1 - \mathbf e_2)\mathbf e_1 = \)

\({\mathbf e_{12}}^2 = \)

\(\mathbf e_{123}\mathbf e_1 =\)

\(\frac 1 2 (\mathbf e_1 + \mathbf e_2)  (\mathbf e_2 - \mathbf e_1) = \)

some exercises, with positive basis vectors.

\(\bf \frac 1 2 (e_{12} - 1 + 1 -e_{21} ) = e_{12}\)

\(\curvearrowleft\)

\(\bf e_{1231} = -e_{1213} = e_{1123} = e_{23}\)

\(\curvearrowleft\)

\(\curvearrowleft\)

\(\bf e_1e_1 - e_2e_1 = 1 + e_{12}\)

\(\curvearrowleft\)

\(\curvearrowleft\)

\(\bf e_{12} e_{12} = e_{1212} = - e_{1221} = -1\)

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

The geometric product of two 3 dimensional vectors

\(v_1v_2 = (\color{lightblue}x_1\color{white}\color{lightgreen}x_2\color{white}+\color{lightblue}y_1\color{white}\color{lightgreen}y_2\color{white}+\color{lightblue}z_1\color{white}\color{lightgreen}z_2\color{white}) + (\color{lightblue}x_1\color{white}\color{lightgreen}y_2\color{white}-\color{lightblue}y_1\color{white}\color{lightgreen}x_2\color{white})\mathbf e_{12} + (-\color{lightblue}x_1\color{white}\color{lightgreen}z_2\color{white}+\color{lightblue}z_1\color{white}\color{lightgreen}x_2\color{white})\mathbf e_{31} + (\color{lightblue}y_1\color{white}\color{lightgreen}z_2\color{white}-\color{lightblue}z_1\color{white}\color{lightgreen}y_2\color{white})\mathbf e_{23}\)

\(\vec v_1 = \begin{bmatrix}\color{lightblue}x_1 \\ \color{lightblue} y_1 \\ \color{lightblue} z_1  \color{white} \end{bmatrix} \quad \vec v_2 = \begin{bmatrix}\color{lightgreen}x_2 \\ \color{lightgreen} y_2 \\ \color{lightgreen} z_2  \color{white} \end{bmatrix}\)

 

\( \underbrace{\qquad \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad}\)

\( \cong \vec v_1 \times \vec v_2 \)

Cross Product !

\( \underbrace{\qquad \qquad\qquad\qquad}\)

\( \cong \vec v_1 \cdot \vec v_2 \)

Dot Product !

\(v_1 = (\color{lightblue}x_1\color{white}\mathbf e_{1} + \color{lightblue}y_1\color{white}\mathbf e_{2} + \color{lightblue}z_1\color{white}\mathbf e_{3} )\)

\(v_2 = ( \color{lightgreen}x_2\color{white}\mathbf e_{1} + \color{lightgreen}y_2\color{white}\mathbf e_{2} + \color{lightgreen}z_2\color{white}\mathbf e_{3})\)

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

The geometric product of two 3 dimensional vectors

\(v_1v_2 = (\color{lightblue}x_1\color{white}\color{lightgreen}x_2\color{white}+\color{lightblue}y_1\color{white}\color{lightgreen}y_2\color{white}+\color{lightblue}z_1\color{white}\color{lightgreen}z_2\color{white}) + (\color{lightblue}x_1\color{white}\color{lightgreen}y_2\color{white}-\color{lightblue}y_1\color{white}\color{lightgreen}x_2\color{white})\mathbf e_{12} + (-\color{lightblue}x_1\color{white}\color{lightgreen}z_2\color{white}+\color{lightblue}z_1\color{white}\color{lightgreen}x_2\color{white})\mathbf e_{31} + (\color{lightblue}y_1\color{white}\color{lightgreen}z_2\color{white}-\color{lightblue}z_1\color{white}\color{lightgreen}y_2\color{white})\mathbf e_{23}\)

\( \underbrace{\qquad \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad}\)

\( \cong \vec v_1 \times \vec v_2 \)

Cross Product !

\( \underbrace{\qquad \qquad\qquad\qquad}\)

\( \cong \vec v_1 \cdot \vec v_2 \)

Dot Product !

only scalar. 'Grade 0'.

\(v_1 \cdot v_2 = \langle v_1v_2 \rangle_0\)

only bivector. 'Grade 2'.

\(v_1 \wedge v_2 = \langle v_1v_2 \rangle_2\)

Note : One scalar and three imaginary parts. The geometric product of two vectors in \(\mathbb R_3\) is a quaternion!

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

The geometric product of two 3 dimensional vectors

\(v_1v_2 = (\color{lightblue}x_1\color{white}\color{lightgreen}x_2\color{white}+\color{lightblue}y_1\color{white}\color{lightgreen}y_2\color{white}+\color{lightblue}z_1\color{white}\color{lightgreen}z_2\color{white}) + (\color{lightblue}x_1\color{white}\color{lightgreen}y_2\color{white}-\color{lightblue}y_1\color{white}\color{lightgreen}x_2\color{white})\mathbf e_{12} + (-\color{lightblue}x_1\color{white}\color{lightgreen}z_2\color{white}+\color{lightblue}z_1\color{white}\color{lightgreen}x_2\color{white})\mathbf e_{31} + (\color{lightblue}y_1\color{white}\color{lightgreen}z_2\color{white}-\color{lightblue}z_1\color{white}\color{lightgreen}y_2\color{white})\mathbf e_{23}\)

only scalar. 'Grade 0'.

\(v_1 \cdot v_2 = \langle v_1v_2 \rangle_0\)

only bivector. 'Grade 2'.

\(v_1 \wedge v_2 = \langle v_1v_2 \rangle_2\)

\(v_1v_2 = v_1 \cdot v_2 + v_1 \wedge v_2 \)

*famous, but be careful! only if \(v_1\) or \(v_2\) is vector!

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

\(v_1v_2 = v_1 \cdot v_2 + v_1 \wedge v_2 \)

In general, the geometric product between a grade \(s\) multivector \(\bf a\) and a grade \(t\) multivector \(\bf b\) has grades from \(|s-t|\) to \(s+t\) in steps of 2.

The highest and lowest grade parts are often useful and are called the wedge and dot products respectively.

\( \langle a \rangle_s \cdot \langle b \rangle_t = \langle ab \rangle_{|s-t|}\)

\( \langle a \rangle_s \wedge \langle b \rangle_t = \langle ab \rangle_{s+t}\)

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

3. New Numbers: how do I use them?

There are even more products from other branches of mathematics and physics

that map to some combination of or grade selection of the geometric product!

\( \langle a \rangle_s \cdot \langle b \rangle_t = \langle ab \rangle_{|s-t|}\)

\( \langle a \rangle_s \wedge \langle b \rangle_t = \langle ab \rangle_{s+t}\)

\(( a \vee b)^* = a^* \wedge b^*\)

\( a \times b = \frac 1 2 (ab - ba)\)

The Geometric Product

The Wedge Product

The Dot Product

The Vee Product

The Commutator Product

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

4. Cayley Tables !

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

4. SpaceTime Algebra!

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

The geometric numbers allow us to mix and match to create a number of interesting geometric algebras

\(\mathbb R_{1,3}  \)

Spacetime Algebra or STA

  • 1 'timelike' dimension, 3 'spacelike' dimensions. 
  • \(e_i\) correspond to the Dirac Gamma matrices \(\gamma_i\)
  • \(e_{ij}\) correspond to the Pauli matrices \(\sigma_i\)
  • rotors model the full Lorentz group of rotations and boosts.

physicist favorite!

\(\begin{aligned} \gamma_0 &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} \ \gamma_1 &= \begin{bmatrix} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & -1 & 0 & 0 \\ -1 & 0 & 0 & 0 \end{bmatrix} \ \\ \gamma_2 &= \begin{bmatrix} 0 & 0 & 0 & -i \\ 0 & 0 & i & 0 \\ 0 & i & 0 & 0 \\ -i & 0 & 0 & 0 \end{bmatrix} \ \gamma_3 &= \begin{bmatrix} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \\ -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix} \end{aligned}\)

\(\sigma_1 = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \ \sigma_2 = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} \ \sigma_3 = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}\)

\(\gamma_0 = \mathbf e_0\,\, \gamma_1 = \mathbf e_1\,\, \gamma_2 = \mathbf e_2\,\, \gamma_3 = \mathbf e_3 \)

\(\sigma_i = \gamma_i \gamma_0 \implies \newline \sigma_1 = \mathbf e_{10},\,\,\,\sigma_2 = \mathbf e_{20},\,\,\,\sigma_3 = \mathbf e_{30} \)

\(I = \gamma_0 \gamma_1 \gamma_2 \gamma_3 = \sigma_1 \sigma_2 \sigma_3\)

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

The geometric numbers allow us to mix and match to create a number of interesting geometric algebras

\(\mathbb R_{1,3}  \)

Spacetime Algebra or STA

  • 1 'timelike' dimension, 3 'spacelike' dimensions. 
  • \(e_i\) correspond to the Dirac Gamma matrices \(\gamma_i\)
  • \(e_{ij}\) correspond to the Pauli matrices \(\sigma_i\)
  • rotors model the full Lorentz group of rotations and boosts.

physicist favorite!

\(\begin{aligned} \gamma_0 &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} \to \mathbf{e}_1, \quad \gamma_1 &= \begin{bmatrix} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & -1 & 0 & 0 \\ -1 & 0 & 0 & 0 \end{bmatrix} \to \mathbf{e}_2 \\ \gamma_2 &= \begin{bmatrix} 0 & 0 & 0 & -i \\ 0 & 0 & i & 0 \\ 0 & i & 0 & 0 \\ -i & 0 & 0 & 0 \end{bmatrix} \to \mathbf{e}_3, \quad \gamma_3 &= \begin{bmatrix} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \\ -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix} \to \mathbf{e}_4\end{aligned}\)

\(\sigma_1 = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}, \quad \sigma_2 = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}, \quad \sigma_3 = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}\)

\(\sigma_i = \gamma_i \gamma_0  \)

\(\mathbb R_{3} \cong   \mathbb R_{1,3}^+ \)

4. SpaceTime Algebra!

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

The spacetime split is a mapping between 3D space and STA using \(\sigma_i = \gamma_i \gamma_0  \).

4. SpaceTime Algebra!

4. SpaceTime Algebra!

\gamma_0
\gamma_1
\sigma_1 = \gamma_1 \gamma_0

time

space

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

The spacetime split is a mapping between 3D space and STA using \(\sigma_i = \gamma_i \gamma_0  \).

The definitive example of the power of the spacetimeis the singular Maxwell equation:

$$ \partial F = J \quad \implies \quad \partial \cdot F = J \quad \partial \wedge F = 0 $$

where \(\partial = \gamma^\mu \partial_\mu\) is the gradient operator, \(J = \gamma^\mu J_\mu\) is the source term, and \( F = \mathbf{E} + I \mathbf{B} \) is the field strength bivector. To prove that this indeed reproduces the familiar Maxwell equations, we use the spacetime split:

$$ \begin{aligned} J \gamma_0 &= J \cdot \gamma_0 + J \wedge \gamma_0 = \rho + \mathbf{J} \\ \partial \gamma_0 &= \partial \cdot \gamma_0 + \partial \wedge \gamma_0 = \partial_t + \nabla \end{aligned} $$

\partial F = J \implies \gamma_0 \partial F = \gamma_0 J \implies (\partial_t + \nabla)(\mathbf{E} + I \mathbf{B}) = \rho - \mathbf{J}
\partial_t \mathbf{E} + \nabla \mathbf{E} + I \partial_t \mathbf{B} + I \nabla \mathbf{B} = \rho - \mathbf{J}
\partial_t \mathbf{E} + \nabla \cdot \mathbf{E} + \nabla \wedge \mathbf{E} + I \partial_t \mathbf{B} + I \nabla \cdot \mathbf{B} + I \nabla \wedge \mathbf{B} = \rho - \mathbf{J}
\partial_t \mathbf{E} + \nabla \wedge \mathbf{E} + I\partial_t \mathbf{B} + I \nabla \cdot \mathbf{B} + I \nabla \wedge \mathbf{B} = - \mathbf{J} \quad \begin{cases} \nabla \cdot \mathbf{E} = \rho & \text{scalar} \end{cases}
\nabla \wedge \mathbf{E} + I \partial_t \mathbf{B} + I \nabla \cdot \mathbf{B} = 0 \quad \begin{cases} \nabla \cdot \mathbf{E} = \rho & \text{scalar}\\ \partial_t \mathbf{E} + I \nabla \wedge \mathbf{B} = - \mathbf{J} & \text{vector} \end{cases}
I \nabla \cdot \mathbf{B} = 0 \quad \begin{cases} \nabla \cdot \mathbf{E} = \rho & \text{scalar}\\ \partial_t \mathbf{E} + I \nabla \wedge \mathbf{B} = - \mathbf{J} & \text{vector} \\ I \partial_t \mathbf{B} + \nabla \wedge \mathbf{E} = 0 & \text{bivector} \\ \end{cases}
\begin{cases} \nabla \cdot \mathbf{E} = \rho & \text{(G) scalar}\\ \partial_t \mathbf{E} + I \nabla \wedge \mathbf{B} = - \mathbf{J} & \text{(A) vector} \\ I \partial_t \mathbf{B} + \nabla \wedge \mathbf{E} = 0 & \text{(F) bivector} \\ I \nabla \cdot \mathbf{B} = 0 & \text{(G) pseudoscalar} \end{cases}

Most compact form of the Maxwell equations!

\(\partial \cdot F = J \leftrightarrow \partial_\alpha F^{\alpha \beta} = J^\beta\)

\(\partial \wedge F = 0 \leftrightarrow \partial_\alpha (\tfrac{1}{2} \epsilon^{\alpha\beta\gamma\delta}F_{\gamma\delta}) = 0\)

4. SpaceTime Algebra!

4. SpaceTime Algebra!

GAME 2023

Projective or 'Plane-based' Geometric Algebra uses an extra basis vector to model elements at infinity. This enables a unification of rotations and translations, exception-free incidence, covariant transformations and more!

4. PGA - Projective Geometric Algebra

\(\mathbb R_{3,0,1}\)

\(\mathbb R_{4}\)

\(\mathbb R_{3,1}\)

FLAT

SPHERICAL

HYPERBOLIC

Felix Klein - Erlangen Program

\( ab \)

compose any a,b

\( a\wedge b \)

intersect any a,b

\( a\vee b \)

join any a,b

\( (a\cdot b)b^{-1} \)

project any a onto/into b

for any point/line/plane a,b

GAME 2023

Projective or 'Plane-based' Geometric Algebra uses an extra basis vector to model elements at infinity. This enables a unification of rotations and translations, exception-free incidence, covariant transformations and more!

4. PGA - Projective Geometric Algebra

\(\mathbb R_{n,0,1}\)

\(\mathbb R_{n+1}\)

\(\mathbb R_{n,1}\)

FLAT

SPHERICAL

HYPERBOLIC

\( ab \)

compose any a,b

\( a\wedge b \)

intersect any a,b

\( a\vee b \)

join any a,b

\( (a\cdot b)b^{-1} \)

project any a onto/into b

for any point/line/plane a,b

  1. Transformations are modeled as compositions of reflections.
  2. Elements are the invariants of these transformations.

 

 

A very natural language to describe the geometry of points, lines and planes.

(can be bent into the conformal group and the geometry of spheres, circles and point-pairs)

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

Prequel : Recap!

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{0,1,-1\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

\( \langle a \rangle_s \cdot \langle b \rangle_t = \langle ab \rangle_{|s-t|}\)

\( \langle a \rangle_s \wedge \langle b \rangle_t = \langle ab \rangle_{s+t}\)

\(( a \vee b)^* = a^* \wedge b^*\)

\( a \times b = \frac 1 2 (ab - ba)\)

Geometric Product

Wedge

Dot

Vee

Commutator

  • Linear                  not just for arrows, but everything linear!
  • Graded                all elements are combinations of up to \(n\) generators
  • Bivectors           oriented 'area'
  • Trivectors          oriented 'volume'
  • Quadvectors    oriented ???
  • +  

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

GAME 2023

Prequel : Recap!

Congratulations! You are now ready for geometry.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

Transform point/line/plane/direction \(b\) with rotor \(a\)

\(ab\tilde a\)

Project any point/line/plane \(a\) on any point/line/plane \(b\)

\(\frac {a\cdot b} {b}\)

GAME 2023

1. New Numbers: what are they?

The Key? Geometric Numbers.
x^2 \,\,+\,\, 1\,\, =\,\, 0

e

e

e

\(\mathbb R_{\color{green}p\color{white},\color{red}q\color{white},\color{cyan}r\color{white}}\)

The set we work with is generated by the real numbers, p positive, q negative and r null basis elements, conveniently called \(\mathbf e_i\)

\(\mathbf e^2 = -1\)

\(\mathbf e^2 = +1\)

\(\mathbf e^2 = 0\)

In PGA these new numbers e represent reflections

Euclidean geometry is the geometry of the Euclidean group Felix Klein

All transformations and elements in PGA are build by composing reflections.

GAME 2023

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Chirality agnostic
  • Reduces formulas and code

\(\mathbf e^2 = -1\)

\(\mathbf e^2 = +1\)

\(\mathbf e^2 = 0\)

In PGA these new numbers e represent reflections

Euclidean geometry is the geometry of the Euclidean group Felix Klein

All transformations and elements in PGA are build by composing reflections.

Parallel Bireflection

Identical Bireflection

Intersecting Bireflection

Translation

Identity

Rotation

Bireflections have a gauge degree of freedom.

We study the composition of two reflections called a bireflection

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Chirality agnostic
  • Reduces formulas and code

When we combine \(3\) reflections, we get glide-reflections, and can always gauge it into a translation+reflection.

We can now gauge to make all mirrors orthogonal

So each trireflection is a translation and reflection along/in the same line.

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Chirality agnostic
  • Reduces formulas and code

When we combine \(k\) reflections, we get \(k-1\) of these geometric gauges.

We can now gauge to make the grey mirrors overlap.

Identical mirrors vanish.

This happens automatically during composition.

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Chirality agnostic
  • Reduces formulas and code

When we combine \(k\) reflections, we get \(k-1\) of these geometric gauges.

We can now gauge to make the grey mirrors overlap.

Identical mirrors vanish.

This happens automatically during composition.

  • All isometries are compositions of reflections
  • in \(n\)-d Euclidean space you can do at most \(n+1\) reflections.

 

 

 

 

 

 

0 identity
1 reflection
2 translation/rotation
3 glide reflection
4 ⟶2

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Chirality agnostic
  • Reduces formulas and code

When we combine \(k\) reflections, we get \(k-1\) of these geometric gauges.

0 identity
1 reflection      
2 translation 
3 ⟶1

Visualizing 1D PGA

in 1D the situation is simple. We only have    point reflections · and translations ·   ·

  •  Points represent point-reflections
  • The composition of two point reflections is a translation • •

We want to have the same meaning for these elements in arbitrary dimensions, so we can use 1D techniques for any 1D subspace in nD

All elements in 1D PGA are visualized with at most 2 points.

••

SIBGRAPI 2021

Plane-based Geometric Algebra

Visualizing 2D PGA

  •  Points represent point-reflections
  • The composition of two point reflections is a translation • •
0 identity
1 reflection
2 translation/rotation
3 glide reflection
4 ⟶2

lines

points

translations

rotations

  • Lines represent line-reflections /
  • Orthogonal lines represent point-reflections + =
  • The composition of parallel lines is a translation  // = •• = ++ 
  • The composition of intersecting lines is a rotation  X

/

// X

//  /

All elements of 2D PGA can be visualized as lines

1D

SIBGRAPI 2021

Plane-based Geometric Algebra

Visualizing 3D PGA

  • Lines represent line-reflections /
  • Orthogonal lines represent point-reflections + =
  • The composition of parallel lines is a translation  // = •• = ++
  • The composition of intersecting lines is a rotation  X

planes \

lines +

points

translations \\

rotations X

0 identity
1 ​reflection
2 ​translation/rotation
3 ​glide/roto reflection
4 ​screw motion
5 ​⟶3

\

\\  X

\X

\\X

  • Planes represent plane-reflections  \
  • 2 ortho planes represent line-reflections  + = /
  • 3 ortho planes represent point-reflections   = + = 
  • 2 parallel planes represent a translation  \\ = // = •• = ⚹⚹
  • 2 intersecting planes represent a rotation  X = X 
  •  Points represent point-reflections
  • The composition of two point reflections is a translation • •

1D

2D

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Planes represent plane-reflections  \
  • 2 ortho planes represent line-reflections  + = /
  • 3 ortho planes represent point-reflections   = + = 
  • 2 parallel planes represent a translation  \\ = // = •• = ⚹⚹
  • 2 intersecting planes represent a rotation  X = X 

By design, ideas from n-d are transplanted to work in (n+1)-d. 

The structure of n-d PGA is exactly correct to get dimension-independent operators! 

  • Lines represent line-reflections /
  • Orthogonal lines represent point-reflections + =
  • The composition of parallel lines is a translation  // = •• = ++
  • The composition of intersecting lines is a rotation  X
  •  Points represent point-reflections
  • The composition of two point reflections is a translation • •

1D

2D

3D

SIBGRAPI 2021

Plane-based Geometric Algebra

The structure of n-d PGA is exactly correct to get dimension-independent operators! 

There is one plane for each plane reflection, one line for each line reflection, one point for each point reflection.

  • Planes represent plane-reflections  \
  • 2 ortho planes represent line-reflections  + = /
  • 3 ortho planes represent point-reflections   = + = 
  • 2 parallel planes represent a translation  \\ = // = •• = ⚹⚹
  • 2 intersecting planes represent a rotation  X = X 
  • Lines represent line-reflections /
  • Orthogonal lines represent point-reflections + =
  • The composition of parallel lines is a translation  // = •• = ++
  • The composition of intersecting lines is a rotation  X
  •  Points represent point-reflections
  • The composition of two point reflections is a translation • •

1D

2D

3D

SIBGRAPI 2021

Plane-based Geometric Algebra

The elements and transformations of nD PGA are all k-reflections!

points = point-reflections

lines = line-reflections

planes = plane-reflections

These elements all are their own inverse .. they are all geometric numbers (\(a^2 = \pm1\)).

\( aa \tilde a = \pm a \)

all these elements are invariant under their associated transormations.

  • Planes represent plane-reflections  \
  • 2 ortho planes represent line-reflections  + = /
  • 3 ortho planes represent point-reflections   = + = 
  • 2 parallel planes represent a translation  \\ = // = •• = ⚹⚹
  • 2 intersecting planes represent a rotation  X = X 

3D

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Planes represent plane-reflections  \
  • 2 ortho planes represent line-reflections  + = /
  • 3 ortho planes represent point-reflections   = + = 
  • 2 parallel planes represent a translation  \\ = // = •• = ⚹⚹
  • 2 intersecting planes represent a rotation  X = X 

3D

The elements and transformations of nD PGA are all k-reflections!

points = point-reflections

lines = line-reflections

planes = plane-reflections

These elements all are their own inverse .. they are all geometric numbers (\(a^2 = \pm1\)).

\( aa \tilde a = \pm a \)

all these elements are invariant under their associated transormations.

This makes it easy to find transformations that relate elements, using nothing but composition.

PP = translation

ll = rotation/translation/screw

pp = rotation/translation

But they produce twice the transformation we need - so we need a way to take square roots (\(\sqrt{x}=x^{\frac 1 2}\)), and with general powers we can generate general rotations/translations

\( \sqrt{ab} = \overline{1+ab} \)

\( (ab)^{\alpha} = e^{\alpha \log{ab}}  \)

SIBGRAPI 2021

Plane-based Geometric Algebra

Lets look at a classic - gluLookAt

void GLAPIENTRY
gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,
      GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy,
      GLdouble upz)
{
    float forward[3], side[3], up[3];
    GLfloat m[4][4];

    forward[0] = centerx - eyex;
    forward[1] = centery - eyey;
    forward[2] = centerz - eyez;

    up[0] = upx;
    up[1] = upy;
    up[2] = upz;

    normalize(forward);

    /* Side = forward x up */
    cross(forward, up, side);
    normalize(side);

    /* Recompute up as: up = side x forward */
    cross(side, forward, up);

    __gluMakeIdentityf(&m[0][0]);
    m[0][0] = side[0];
    m[1][0] = side[1];
    m[2][0] = side[2];

    m[0][1] = up[0];
    m[1][1] = up[1];
    m[2][1] = up[2];

    m[0][2] = -forward[0];
    m[1][2] = -forward[1];
    m[2][2] = -forward[2];

    glMultMatrixf(&m[0][0]);
    glTranslated(-eyex, -eyey, -eyez);
}

Inputs

  • \(e = \) PGA point 'eye'
  • \(c = \) PGA point 'center'
  • \(u = \) PGA \(\infty\) point up

Output

  • \( T = \sqrt{ cc_0 } \)
  • \(R = \sqrt{ (c \vee e)T(c_0 \vee e_0)\tilde T} \,T \)
  • \(L = \sqrt{(c \vee e \vee u)R(c_0 \vee e_0 \vee u_0)\tilde R}\,R \)

SIBGRAPI 2021

Plane-based Geometric Algebra

Lets look at a classic - gluLookAt

void GLAPIENTRY
gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,
      GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy,
      GLdouble upz)
{
    float forward[3], side[3], up[3];
    GLfloat m[4][4];

    forward[0] = centerx - eyex;
    forward[1] = centery - eyey;
    forward[2] = centerz - eyez;

    up[0] = upx;
    up[1] = upy;
    up[2] = upz;

    normalize(forward);

    /* Side = forward x up */
    cross(forward, up, side);
    normalize(side);

    /* Recompute up as: up = side x forward */
    cross(side, forward, up);

    __gluMakeIdentityf(&m[0][0]);
    m[0][0] = side[0];
    m[1][0] = side[1];
    m[2][0] = side[2];

    m[0][1] = up[0];
    m[1][1] = up[1];
    m[2][1] = up[2];

    m[0][2] = -forward[0];
    m[1][2] = -forward[1];
    m[2][2] = -forward[2];

    glMultMatrixf(&m[0][0]);
    glTranslated(-eyex, -eyey, -eyez);
}

Inputs

  • \(e = \) PGA point 'eye'
  • \(c = \) PGA point 'center'
  • \(u = \) PGA \(\infty\) point up

Output

  • \( T = \sqrt{ c\color{red}c_0\color{white} } \)
  • \(R = \sqrt{ (c \vee e)T(\color{red}c_0 \vee e_0\color{white})\tilde T} \,T \)
  • \(L = \sqrt{(c \vee e \vee u)R(\color{red}c_0 \vee e_0 \vee u_0\color{white})\tilde R}\,R \)
  • works in any # dimensions
  • each \(p_i\) can be Euclidean (point) or Infinite (direction)
  • general applicability now clear (i.e. align any set of points/directions to a reference set)

\(r_1\)

\(r_2\)

\(r_3\)

\( M = 1, P = 1^* \)

\(P = \overline{P \vee p_i}\)

\( M = \sqrt{PMr_i\tilde M} M \)

\(p_1\)

\(p_2\)

\(p_3\)

SIBGRAPI 2021

Plane-based Geometric Algebra

Lets look at a classic - gluLookAt

// input  : p = array of euclidean/infinite points
// output : motor that aligns the reference frame to p

function align(p) {
  var M=1, P=!1;
  for (var i=0; i<p.length; ++i) {
    P = (P & p[i]).Normalized;
    M = sqrt(P * (M >>> r[i])) * M;
  }
  return M
}

\( M = 1, P = 1^* \)

\(P = \overline{P \vee p_i}\)

\( M = \sqrt{PMr_i\tilde M} M \)

SIBGRAPI 2021

Plane-based Geometric Algebra

Thank you.

https://bivector.net

SIBGRAPI 2021

Plane-based Geometric Algebra

PGA

A

B

C

Motivation + intuition

Steven                       

Algebraic foundation

Leo                         

Applications: IK + RBD

Steven                     

A B A B C C

SIBGRAPI 2021

Plane-based Geometric Algebra

Episode 1 : The Reflection Menace
Episode 2 : Attack of the Mirrors
Episode 3 : Revenge of Infinity
Episode 4 : The Forque Awakens
Episode 5 : A New Hope I
Episode 6 : A New Hope II

 

SIBGRAPI 2021

Plane-based Geometric Algebra

What is Geometric Algebra ?

An alternative to vector/matrix algebra ideal for (computer) geometry.
An algebra on a graded linear (vector) space, with an invertible product that operates on multivectors.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

  • Coordinate free
  • Chirality agnostic (handedness)
  • Dimension independent
  • Exception free incidence (intersections)
  • Unifies transformations and elements
  • Reduces formulas and code

Transform any point/line/plane/... \(b\) with any rotor \(a\)

\(ab\tilde a\)

Project any point/line/plane \(a\) on any point/line/plane \(b\)

\(\frac {a\cdot b} {b}\)

SIBGRAPI 2021

Plane-based Geometric Algebra

What is Geometric Algebra ?

An alternative to vector/matrix algebra ideal for (computer) geometry.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

  • Coordinate agnostic
  • Chirality agnostic
  • Dimension agnostic
  • Exception free incidence
  • Unifies transformations and elements
  • Reduces formulas and code

Transform point/line/plane/direction \(b\) with rotor \(a\)

\(ab\tilde a\)

Project any point/line/plane \(a\) on any point/line/plane \(b\)

\(\frac {a\cdot b} {b}\)

Compare this to the classic vector/matrix approach ...

// just a matrix multiply
transform_point( M,  )
// similar to point .. diff. M
transform_direction( M,  )
// should be 6x6 matrix
transform_line( M,  )
// similar to direction .. diff. M
transform_plane( M,  )
// none of these are similar..
project_point_line()
project_point_plane()
project_line_point()
project_line_plane()
project_plane_point()
project_plane_line()

SIBGRAPI 2021

Plane-based Geometric Algebra

  • Chirality agnostic
  • Reduces formulas and code

Coordinate free and Dimension agnostic.

We do not commonly expect to be able to download e.g. a 2D physics engine and change the number of dimensions to 3.

Constructions and products that are only valid in 3D are commonly used in the description of geometry and physics. (e.g. the cross product)

Can we do better? 

on a need to know basis

SIBGRAPI 2021

Plane-based Geometric Algebra

What is Geometric Algebra ?

An alternative to vector/matrix algebra ideal for (computer) geometry.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

  • Coordinate agnostic
  • Chirality agnostic
  • Dimension agnostic
  • Exception free incidence
  • Unifies transformations and elements
  • Reduces formulas and code

this is not a vector.

ceci n'est pas un vecteur

this is a vector.

how many dimensions ?

does it have an orientation ?

\( x^2 = \lVert x \rVert^2 \)

only its length is well defined.

Coordinate free and Dimension agnostic.

SIBGRAPI 2021

Plane-based Geometric Algebra

What is Geometric Algebra ?

An alternative to vector/matrix algebra ideal for (computer) geometry.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

  • Coordinate agnostic
  • Chirality agnostic
  • Dimension agnostic
  • Exception free incidence
  • Unifies transformations and elements
  • Reduces formulas and code

\( x^2 = \lVert x \rVert^2 \)

When a second non colinear vector is added

  • we can measure two lengths
  • we can measure one angle
  • we know our space is >= 2D

There is more to being dimension agnostic, but not having an origin and coordinate axes is a good starting point. Logic with points, lines, planes should work independent of the dimensionality of the space! 

Coordinate free and Dimension agnostic.

SIBGRAPI 2021

Plane-based Geometric Algebra

What is Geometric Algebra ?

An alternative to vector/matrix algebra ideal for (computer) geometry.

\(\oplus\)

\(\oplus\)

\(\circlearrowleft\)

\(\oplus\)

\(\oplus\)

\(\mathbb R\)

...

PSS

scalars

vectors

bivectors

pseudo scalar

  • Coordinate agnostic
  • Chirality agnostic
  • Dimension agnostic
  • Exception free incidence
  • Unifies transformations and elements
  • Reduces formulas and code

There is more to being dimension agnostic, but not having an origin and coordinate axes is a good starting point. Logic with points, lines, planes should work independent of the dimensionality of the space! 

Coordinate free and Dimension agnostic.

\(a\)

\(b\)

Expressions that involve \(a,b,c\) should not depend on the # of coefficients used to describe them :

\(c\)

  • translation between a and b
  • projection of b onto c
  • distance between a and c
  • rotation around a that puts b onto c
  • line through b \(\perp\) to c

GAME 2023

The First Postulate

Steven De Keninck

GAME 2023

The First Postulate

In this talk:

  • quick recap of the algebra and geometry of arrows.
  • move from the geometry of arrows to that of points, lines and planes.
  • determine what makes operators and elements geometric.
  • build a toolbag of operators that meet our requirements.
  • implement those operators using our geometric numbers.
  • build intuition for working with geometric gauges.

GAME 2023

The First Postulate

\(\mathbb R_{3,0,1}\)

\(3\) basis vectors \(\mathbf e_1, \mathbf e_2, \mathbf e_3\)

\(1\) null basis vector \(\mathbf e_0\)

\( \mathbf e_i \notin \mathbb R \qquad {\mathbf e_i}^2 \in \{1,-1,0\} \)

\(  \mathbf e_1\mathbf e_2 = - \mathbf e_2\mathbf e_1 \)

\(\mathbf e_0, \mathbf e_1, \mathbf e_2, \mathbf e_3\)

\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03}, \mathbf e_{12}, \mathbf e_{31}, \mathbf e_{23}\)

\(\mathbf e_{021},\mathbf e_{013},\mathbf e_{032}, \mathbf e_{123}\)

\( \mathbf e_{0123}\)

\( \mathbf 1\)

→ scalar

→ vector

→ bivector

→ trivector
→ pseudo-scalar

vector = linear comb of generators

\(\begin{bmatrix}x \\ y \\ z \\ w \end{bmatrix} \rightarrow x\mathbf e_1 + y\mathbf e_2 + z\mathbf e_3 + w\mathbf e_0\)

bivectors \(e_{ij}\), trivectors \(e_{ijk}\), ...

multivector = sum of k-vectors

\(\vec a \vec b = \vec a \cdot \vec b + \vec a \wedge \vec b\)

\(\langle a\rangle_k\) selects grade \(k\) of \(a\)

skipping many aspects here:  reverses, inverses, dualization, exponentials and logarithms, natural inclusion of (dual) quaternions, Lie algebras, etc ...

\( \langle a \rangle_s \langle b \rangle_t = \langle ab \rangle_{|s-t|}+ ... + \langle ab \rangle_{s+t}\)

The Geometric Product

\( \langle a \rangle_s \wedge \langle b \rangle_t = \langle ab \rangle_{s+t}\)

The Wedge Product

\( \langle a \rangle_s \cdot \langle b \rangle_t = \langle ab \rangle_{|s-t|}\)

The Dot Product

\(( a \vee b)^* = a^* \wedge b^*\)

The Vee Product

\(-1^{st} \langle a \rangle_s \langle b \rangle_t \widetilde{\langle a \rangle_s}\)

The Sandwich Product

GAME 2023

The First Postulate

So how will we use all this to do geometry?

what is geometry even?

set of elements + distance function

set of transformations + invariants

ex. 'Geometry of Arrows'  : the set of arrows, and the angle between them.

ex. 'Geometry of Arrows'  : the set of orthonormal transformations.

ex. 'Geometry of family'  : the set of family members and the parental distance between them.

parent

you

sibling

ex. 'Geometry of Points/Lines/Planes ..'  : the set of Euclidean transformations.

the one we want for CG!

GAME 2023

The First Postulate

First, let us review the geometry of arrows, and the vector algebra operators.

but does this still work if we use arrows to represent points?

For the geometry of arrows, these operations are all well defined. Given just the orange inputs, you can reconstruct the green output.

Two points define a line. AND NOTHING ELSE!

⇒ EVERY binary operation between two points is a one dimensional operation!

GAME 2023

The First Postulate

Two points define a line. AND NOTHING ELSE!

⇒ EVERY binary operation between two points is a one dimensional operation!

so, for points \(A,B\), all operations \(A+B, A-B, AB, A \wedge B, A \vee B, ...\) must produce a result on the line between \(A\) and \(B\) (or zero). In general, the types of elements determine exactly the set of geometrically plausible outputs.

Can we set things up so that all operators always produce geometrically valid outcomes?

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

A

A+A ?

AA ?

The result must be a point again, and it can only be at that position!

⟶ every 'algebra of geometry' MUST be homogeneous!

⟶ A+A = 2A still A, but twice as happy.

If you only have one point, then any transformation is the identity!

⟶ AA \(\cong\) 1 , the transformation that takes A to A.

⟶ if AA is identity, then A is an involutory transformation. A is a reflection!

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

A

A+B ?

The result must be a point,  for equally happy A,B it will be halfway.

B

A+B

AB ?

With A and B point reflections (and points), AB is a translation (try it!)

ABA ?

The point B reflected in A. 

BAB ?

The point A reflected in B. 

ABA

BAB

AB

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

A

A+B ?

B

A+B

AB ?

ABA ?

BAB ?

\(x=1 \iff x-1=0\)

\(\mathbf e_1 - \mathbf e_0\)

\(\mathbf e_1 - 2\mathbf e_0\)

\((\mathbf e_1 - \mathbf e_0) + (\mathbf e_1 - 2\mathbf e_0) = \mathbf 2e_1 - \mathbf 3e_0 \)         \(\iff 2x - 3 = 0 \iff x = 1.5\)

\((\mathbf e_1 - \mathbf e_0) (\mathbf e_1 - 2\mathbf e_0) = 1 - 2\mathbf e_{10} - \mathbf e_{01} = 1 + \mathbf e_{01} \)

\((\mathbf e_1 - \mathbf e_0) (\mathbf e_1 - 2\mathbf e_0)  (\mathbf e_1 - \mathbf e_0)= \mathbf e_1\)                            \(\iff x = 0\)

\((\mathbf e_1 - \mathbf e_0) (\mathbf e_1 - 2\mathbf e_0)  (\mathbf e_1 - \mathbf e_0)= \mathbf e_1 - 3\mathbf e_0\)               \(\iff x = 3\)

ABA

BAB

\(x=2 \iff x-2=0\)

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

What if we move to a new viewpoint?

It is possible our points weren't points at all! This however can not change the behavior we saw from our original point of view!

The equivalence principle : if you can make it look like a duck, it'll quack.

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

The equivalence principle : if you can make it look like a duck, it'll quack.

  • If points are point reflections, lines must be line reflections!
  • The product of parallel lines must be a translation!
  • Our reflection formula works for points and lines!

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

Now that we know lines must be line reflections we can check bi-reflections easily ..

Rotation

Translation

Point Reflection

Bireflections have a gauge degree of freedom.

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

A

A

\(\mathbf e_1 + \mathbf e_0\)

\(\mathbf e_{12} + \mathbf e_{02}\)

\(\rightarrow x = -1\)

same meaning, different geometry!

still the same point reflection!

\(\mathbf e_{12} + \mathbf e_{02} = (\mathbf e_1 + \mathbf e_0)\mathbf e_2\)

\( x = -1\)

\( y = 0\)

\(\rightarrow\) Product of two orthogonal vectors is a pure bivector. Reflecting in two orthogonal mirrors is a point reflection in their intersection point.

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

A+B

A-B

The sum of two elements is their bisector, the element halfway in between.

The difference of two elements is the other bisector, for parallel elements, it is at infinity!

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

Points A,B

 Parallel Lines A,B

Parallel Planes A,B

 

 Intersecting Lines A,B

Intersecting Planes A,B

Bisector 1

 

 

 

Bisector 1

Bisector 2

@infinity

 

 

Bisector 2

Translation

 

 

 

Rotation

A+B

A-B

AB

remember, the geometric product is the core product, with all others deriving from it.

GAME 2023

The First Postulate

Can we set things up so that all operators always produce geometrically valid outcomes?

At this point, we have an actual algebra of geometry. Our set of elements are the point(reflection)s, line(reflection)s, plane(reflection)s, ... multiplication with scalars, addition and multiplication between elements all are always geometrically valid!

But, we are not done yet - to get an intuitive understanding we still need a way to visualize all the different products - and for that the Geometric Gauges are key!

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

reflection/line

reflection/point

rotation

translation

when combining reflections, only the relative position matters.

 

e.g. any set of orthogonal line-reflections through a point produces the same point-reflection.

 

this gives us a 'geometric gauge' degree of freedom, which we can use to understand all the different products.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

The geometric product eliminates identical mirrors.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

The geometric product eliminates identical mirrors.

The dot product eliminates parallel mirrors.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

The geometric product eliminates identical mirrors.

The dot product eliminates parallel mirrors.

The regressive product keeps identical mirrors.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

The geometric product eliminates identical mirrors.

The dot product eliminates parallel mirrors.

The regressive product keeps identical mirrors.

The outer product finds orthogonal mirrors.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

The geometric product eliminates identical mirrors.

The dot product eliminates parallel mirrors.

The regressive product keeps identical mirrors.

The outer product finds orthogonal mirrors.

GAME 2023

The First Postulate

After picking the viewpoint where things look most simple, we will use the gauges to understand exactly what all of the products do geometrically.

The geometric product eliminates identical mirrors.

The dot product eliminates parallel mirrors.

The regressive product keeps identical mirrors.

The outer product finds orthogonal mirrors.

Cartan-Dieudonne :

Every orthogonal transformation in an n-dimensional symmetric bilinear space can be described as the composition of at most n reflections.

GAME 2023

The First Postulate

Tackling geometric problems :

  1. for each binary operator find the simplest view.
  2. factor the smallest argument in terms of the other. (i.e. think of a point as two orthogonal lines, or a line as two orthogonal planes etc ..).
  3. use the geometric gauges to conceptualize the different products and geometric operations
  4. write the geometry down verbatim.

GAME 2023

The First Postulate

\(ab\)       Geometric Product composes reflections

\(a\wedge b\)   Outer Product Intersects elements

\(a\vee b\)   Regressive Product joins elements

\(a\cdot b\)     Dot Product rejects elements

GAME 2023

The First Postulate

GAME 2023

The First Postulate

Now, lets see it in action!

\(d_i = \big ( \frac 1 f - \frac 1 {d_0} \big )^{-1}\qquad h_i=-\frac {d_i} {d_0} h_0\)

GAME 2023

The First Postulate

\(d_i = \big ( \frac 1 f - \frac 1 {d_0} \big )^{-1}\qquad h_i=-\frac {d_i} {d_0} h_0\)

The paraxial approximation of the thin lens equation

GAME 2023

The First Postulate

\(d_i = \big ( \frac 1 f - \frac 1 {d_0} \big )^{-1}\qquad h_i=-\frac {d_i} {d_0} h_0\)

The paraxial approximation of the thin lens equation

\(\vec a = \overline {\vec c - \vec f}\)

\(\vec b= \vec c - \vec p\)

\(d_0 = \vec a \cdot \vec b\)

GAME 2023

The First Postulate

\(d_i = \big ( \frac 1 f - \frac 1 {d_0} \big )^{-1}\qquad h_i=-\frac {d_i} {d_0} h_0\)

The paraxial approximation of the thin lens equation

\((\overline {\vec c - \vec f}) \, \cdot\)

\((\vec c - \vec p)\)

\(d_0 = \)

\(h_0 = (\overline{\vec c - \vec g} )\,\cdot\,(\vec c - \vec p) \)

GAME 2023

The First Postulate

The paraxial approximation of the thin lens equation

There are no coefficients or even ratios, and the formula can be read from left to right.

GAME 2023

The First Postulate

The paraxial approximation of the thin lens equation

  • \( p \vee f \) = line through p and f
  • \((p \vee f) \wedge L\) = intersection with lens 
  • \((p \vee f) \wedge L \cdot L \) =  line orthogonal to L
  • \((p \vee f) \wedge L \cdot L  \wedge (p \vee c)\) = intersect with line through center

\(\vee\) = join         \(\wedge\) = meet           \(\bullet\) = dot

GAME 2023

The First Postulate

The paraxial approximation of the thin lens equation

GAME 2023

The First Postulate

Thanks!

Be sure to check Hamish's bonus talk - straight from GDC - with more real world examples!

There are still many things left uncovered, but they all build on the same simple ideas. 

GAME 2023

Itsy Bitsy Spinor

Steven De Keninck

Itsy Bitsy Spinor

GAME 2023

geometric product a * b
meet (intersect) a ^ b
join (span) a & b
dot product a | b
sandwich product  a >>> b
dual !a
a point at x,y,.. !(1e0 + x*1e1 + y*1e2 + ...)
a plane with eq ax + by + .. + d = 0 a*1e1 + b*1e2 + ... + d*1e0
rotate α around line L Math.E ** ( -0.5 * α * L.Normalized )

Exercises at :

https://bivector.net/game2023.html

SIBGRAPI 2021

Plane-based Geometric Algebra

Plane-based Geometric Algebra

PGA

Infinity, Duality, Orientation, Forques.

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it
Episode 3 : Revenge of Infinity

SIBGRAPI 2021

Plane-based Geometric Algebra

Infinity, Duality, Orientation, Forques.

  • \(k\)-reflections = all transformations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-blades = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it

Plane-based Geometric Algebra

PGA

SIBGRAPI 2021

Plane-based Geometric Algebra

  • planes through the origin in 3D are lines in 2D
  • the parallel plane is the infinite line
  • lines through the origin in 3D are points in 2D
  • the parallel lines in 3D are the infinite points in 2D

The homogeneous model of the Euclidean plane

Text

Parallel lines intersect in points at infinity.  This means intersection queries always have meaningful answers.

But infinite elements also enable duality

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it

SIBGRAPI 2021

Plane-based Geometric Algebra

# Euclidean Lines + 1 Infinite Line = # Euclidean Points + # Infinite Points

  • for a point \(p_a\), find its dual line \(\ell_a\)
  • for a point \(p_b\), find its dual line \(\ell_b\)
  • now the intersection of \(\ell_a, \ell_b\) is the line between \(p_a,p_b\)

{

{

3D Planes through origin

3D Lines through origin

\(a^* \wedge b^* = (a \vee b)^*\)

Same code to find intersection (meet) and span (join) !!

 

All code has two functions!

 

meet \(\leftrightarrow\) join

point \(\leftrightarrow\) line

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it

SIBGRAPI 2021

Plane-based Geometric Algebra

# Euclidean Lines + 1 Infinite Line = # Euclidean Points + # Infinite Points

\(a^* \wedge b^* = (a \vee b)^*\)

translations are rotations around infinite elements !

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it

SIBGRAPI 2021

Plane-based Geometric Algebra

  • \(k\)-reflections = all transformations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-blades = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it
  • \(\infty\) elements enable exception-free intersections.
  • \(\infty\) elements enable duality, unifying meet and join
  • \(\infty\) elements unify rotations and translations

SIBGRAPI 2021

Plane-based Geometric Algebra

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it
  • \(\infty\) elements enable exception-free intersections.
  • \(\infty\) elements enable duality, unifying meet and join
  • \(\infty\) elements unify rotations and translations

robot arm

floor plan

robot arm

Both 2D drawings have points and lines. What happens if we go from two to three dimensions?

Duality and dimension independence

SIBGRAPI 2021

Plane-based Geometric Algebra

robot arm

floor plan

robot arm

Both 2D drawings have points and lines. What happens if we go from two to three dimensions?

Duality and dimension independence

Lines defined as 1-vectors.

Points defined as 2-vectors.

\(\rightarrow\) switch types.

Lines defined as \(d\)-\(1\) vectors.

Points defined as \(d\)-vectors.

\(\rightarrow\) stay the same type.

SIBGRAPI 2021

Plane-based Geometric Algebra

Duality and dimension independence

These can be combined - picking the correct type is key to being dimension independent.

But there is more to these types .. lets talk about orientation.

\(\rightarrow\) switch types.

\(\rightarrow\) stay the same type.

SIBGRAPI 2021

Plane-based Geometric Algebra

But there is more to these types .. lets talk about orientation.

Extrinsic

Intrinsic

MEET

JOIN

These types behave differently under reflection!

SIBGRAPI 2021

Plane-based Geometric Algebra

These concepts of two types of elements and two types of orientation are key to a dimension independent, geometric treatment of dynamics.

  • a formulation of rigid body kinematics and dynamics in n-d.
  • unify rotation and translation. 
  • unify force and torque
  • unify mass and inertia
  • unify linear and angular momentum
  • unify linear and angular acceleration
  • unify linear and angular velocity

\(\infty\) elements, 2k-reflections

INERTIAL DUALITY

SIBGRAPI 2021

Plane-based Geometric Algebra

Forques unify linear force and angular torque.

Forques are join lines - in any number of dimensions

In the body frame, Forces and Accelerations are each others dual!!!

Forces are Join Lines - Accelerations are Meet Lines

In the body frame :

push at \(o\) = rotate around \(\infty\)

push at \(\infty\) = rotate around \(o\)

This is a tremendous simplification for the treatment of inertia.

 

No more need for Steiners theorem!

 

Fully geometric and intuitive!

SIBGRAPI 2021

Plane-based Geometric Algebra

The Geometric Overview of Rigid Body Dynamics.

FORQUE

ACCELERATION

MOMENTUM

VELOCITY

\(P=\int F\)

\(V = \int A\)

\(F=\dot P\)

\(A = \dot V\)

duality

duality

inertial

inertial

Join line through the contact point

Sum of join lines.

Meet line through the motion center

Sum of meet lines.

\((d-1)\)-vectors

\(2\)-vectors

POSITION

\(M = \int V\)

\(V = \dot M\)

Motor (\(2k\)-refl)

\(F=ma\quad \tau=mr \times F\)

\(P=mv\quad L=I\omega\)

\(F=A^\star\)

\(P=V^\star\)

\dot{V}^\star = F - V^\star \times V \\ \dot{M} = -\frac{1}{2} \, M V

SIBGRAPI 2021

Plane-based Geometric Algebra

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it
  • \(\infty\) elements enable exception-free intersections.
  • \(\infty\) elements enable duality, unifying meet and join
  • \(\infty\) elements unify rotations and translations

Thanks !

SIBGRAPI 2021

Plane-based Geometric Algebra

Plane-based Geometric Algebra

PGA

Infinity, Duality, Orientation, Forques.

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it
Episode 5 : A New Hope I

SIBGRAPI 2021

Plane-based Geometric Algebra

Plane-based Geometric Algebra

PGA

Infinity, Duality, Orientation, Forques.

  • \(k\)-reflections = all transormations = \(\mathcal E(n)\) 
  •  \(\perp k\)-reflections = \(k\)-vectors = invariants = elements
  • composition of elements = transformation between them
  • exponentiate element = transformation around it
Episode 5 : A new Hope I

Programming Geometric Algebra

To truly harvest the power of GA, a library that supports operator overloading is a must. (at the minimum, for prototyping)

Math Syntax

\(ab\)

\(a \wedge b\)

\(a \vee b\)

\(a \cdot b\)

\(a^*\)

\(a b \tilde a\)

Name

Geometric Product

Outer Product - Wedge

Regressive Product - Vee

Inner Product - Dot

Dual

Sandwich Product

Programming Syntax

a * b
a ^ b
a & b
a | b
!a
a >>> b

SIBGRAPI 2021

Plane-based Geometric Algebra

Infinity, Duality, Orientation, Forques.

Programming Geometric Algebra

1. Thin Lens (Paraxial Approx.)

*from phys.libretexts.org

\(d_i =  (\frac {1} {f} - \frac {1} {d_0})^{-1}\)

\(h_i = - \frac {d_i}{d_0} h_0 \)

not very geometric ..  but ..

  • thin lenzes in 2D
  • spherical thin lens in 3D
  • cylindrical thin lens in 3D

2. Inverse Kinematics

Given a thin lens, focal distance and source point calculate the position of the image point.

Given a base and target, calculate all joint orientations.

SIBGRAPI 2021

Plane-based Geometric Algebra

Infinity, Duality, Orientation, Forques.

Programming Geometric Algebra

1. Thin Lens (Paraxial Approx.)

*from phys.libretexts.org

\(d_i =  (\frac {1} {f} - \frac {1} {d_0})^{-1}\)

\(h_i = - \frac {d_i}{d_0} h_0 \)

not very geometric ..  but ..

  • thin lenzes in 2D
  • spherical thin lens in 3D
  • cylindrical thin lens in 3D

SIBGRAPI 2021

Plane-based Geometric Algebra

Plane-based Geometric Algebra

PGA

Infinity, Duality, Orientation, Forques.

Episode 6 : A New Hope II

SIBGRAPI 2021

Plane-based Geometric Algebra

Plane-based Geometric Algebra

PGA

Infinity, Duality, Orientation, Forques.

Episode 6 : A new Hope II

The Geometric Overview of Rigid Body Dynamics.

FORQUE

ACCELERATION

MOMENTUM

VELOCITY

\(P=\int F\)

\(V = \int A\)

\(F=\dot P\)

\(A = \dot V\)

duality

duality

inertial

inertial

Join line through the contact point

Sum of join lines.

Meet line through the motion center

Sum of meet lines.

\((d-1)\)-vectors

\(2\)-vectors

POSITION

\(M = \int V\)

\(V = \dot M\)

Motor (\(2k\)-refl)

\(F=ma\quad \tau=mr \times F\)

\(P=mv\quad L=I\omega\)

\(F=A^\star\)

\(P=V^\star\)

\dot{V}^\star = F - V^\star \times V \\ \dot{M} = -\frac{1}{2} \, M V

SIBGRAPI 2021

Plane-based Geometric Algebra

Infinity, Duality, Orientation, Forques.

The Geometric Overview of Rigid Body Dynamics.

FORQUE

ACCELERATION

MOMENTUM

VELOCITY

\(P=\int F\)

\(V = \int A\)

\(F=\dot P\)

\(A = \dot V\)

duality

duality

inertial

inertial

Join line through the contact point

Sum of join lines.

Meet line through the motion center

Sum of meet lines.

\((d-1)\)-vectors

\(2\)-vectors

POSITION

\(M = \int V\)

\(V = \dot M\)

Motor (\(2k\)-refl)

\(F=ma\quad \tau=mr \times F\)

\(P=mv\quad L=I\omega\)

\(F=A^\star\)

\(P=V^\star\)

\dot{V}^\star = F - V^\star \times V \\ \dot{M} = -\frac{1}{2} \, M V

PGA Rigid Body Dynamics

We want it to work in n-d, so we'll need a 'rigid body' that works in 2D and 3D. We'll keep it simple and go for a square/cube.

  • create \(2^d\) points (4 in 2D, 8 in 3D)
  • number them
  • convert to binary
  • use bits as coordinates
  • edges when 1 bit difference

0

1

2

3

00
01
10
11
0,0
0,1
1,0
1,1
(A^B)&(A^B-1) == 0  -> A,B differ 1 bit

GAME23_DeKeninck

By Steven De Keninck

GAME23_DeKeninck

A hands on introduction to Projective Geometric Algebra for Game and Graphics programmers.

  • 223