DUAL QUATERNIONS DEMYSTIFIED
Today :
DUAL QUATERNIONS DEMYSTIFIED
Popular in Computer Graphics for solving the 'candy wrapping' artefact.
Can't blend matrices
Can blend dual quaternions
DUAL QUATERNIONS DEMYSTIFIED
Popular in Mechanics, Robotics, for unifying translation and rotation.
3x3 Matrices
vectors
Dual Quaternions
Treat translation/rotation separately
One formula for both rotations and translations
translation
rotation
DUAL QUATERNIONS DEMYSTIFIED
Typically introduced algebraically, using one of many options ..
Multiplication Table
Tensor Product
\(\mathbb H \otimes \mathbb D\)
Quaternions
Dual Numbers
.. not very insightful or intuitive ..
explanations talk about 4D spheres .. that is just cruel.
DUAL QUATERNIONS DEMYSTIFIED
Why are they so hard to understand?
They are only half of the picture. The dual quaternions
are the even subalgebra of a geometric algebra called PGA.
\(\mathbb R_{3,0,1}\)
DUAL QUATERNIONS DEMYSTIFIED
Same as opening but now in PGA - implementation is shorter than function names !
no coordinates - no chirality - no gimbal lock - no conversions
point
direction
position
rotation
matrix
quaternion
// construct transformations -> motors, not matrices !
translate (x,y,z) = E**(x*e01+y*e02+z*e03)
rotate_euler (h,p,b) = E**(b*e12)*E**(p*e23)*E**(h*e13)
rotate_axis_angle (x,y,z,a) = E**(a*x*e23+a*y*e13+a*z*e12)
look_at (from,too,pole) = (1 + (e1-from)*(to-from))
// apply transformations -> note : all the same..
transform_point (M, p) = M*p*~M
transform_direction (M, d) = M*d*~M
transform_line (M, l) = M*l*~M
transform_plane (M, P) = M*P*~M
line
plane
// construct lines
line_from_points (p1, p2) = p1&p2
line_from_points_and_dir (p, d) = p&(p+d)
// construct planes
plane_from_points (p1,p2,p3) = p1&p2&p3
plane_from_point_and_dirs (p,d1,d2) = p&(p+d1)&(p+d2)
plane_from_points_and_dir (p1,p2,d) = p1&p2&(p1+d)
plane_from_point_and_line (p,l) = p&l
plane_from_equation (a,b,c,d) = ae1+be2+ce3-de0
// construct transformations
quat_from_euler (h, p, b)
quat_from_axis_angle (x, y, z, a)
quat_look_at (from, too, pole)
quat_from_matrix (M)
quat_to_matrix (Q)
// apply transformations
transform_point (Q, p)
transform_line (Q, l)
transform_plane (Q, P)
// Intersections
intersect_line_plane (l, P) = l^P
intersect_plane_plane (P1, P2) = P1^P2
intersect_planes (P1, P2, P3) = P1^P2^P3
// Projections
project_point_plane (p, P) = P|p*P
project_line_plane (l, P) = P|l*P
project_point_line (p, l) = l|p*l
DUAL QUATERNIONS DEMYSTIFIED
DUAL QUATERNIONS DEMYSTIFIED
\({\mathbf e_-}^2=-1\)
\({\mathbf e_+}^2=1\)
\({\mathbf e_0}^2=0\)
CONTROVERSIAL: vectors are Planes, trivectors are Points
we understand the controversy, it is caused by how we are used to formalize geometry ...
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
DUAL QUATERNIONS DEMYSTIFIED
Euclid's first attempts at preserving his ideas and formalising geometry had difficultties.
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^3\)
Euclid's first attempts at preserving his ideas and formalising geometry had difficultties.
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^3\)
vectors \(\mathbb R^3\)
Points
Directions
Lines
Planes
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^3\)
vectors \(\mathbb R^3\)
matrices \(\mathbb R^{3\times3}\)
Points
Directions
Translations
Rotations
Lines
Planes
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^3\)
vectors \(\mathbb R^3\)
matrices \(\mathbb R^{3\times3}\)
Points
Directions
Translations
Rotations
\([M_{ab},V_{ab}] = [M_aM_b,M_aV_b+V_a]\)
Lines
Planes
\(a = [M_a,V_a]\)
DUAL QUATERNIONS DEMYSTIFIED
not unique
one element,
two meanings.
not covariant
two elements,
one meaning.
\(M\)
\(M^{-T}\)
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^3\)
vectors \(\mathbb R^3\)
matrices \(\mathbb R^{3\times3}\)
Points
Directions
Translations
Rotations
Lines
Planes
\([M_{ab},V_{ab}] = [M_aM_b,M_aV_b+V_a]\)
\([M_{ab},V_{ab}] = [M_aM_b,M_aV_b+V_a]\)
not included
no elements in algebra.
too big
elements w/o meaning
\(a = [M_a,V_a]\)
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^4\)
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^4\)
vectors \(\mathbb R^4\)
Points
\((x,y,z,1)\)
Directions
\((x,y,z,0)\)
Lines
Planes
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^4\)
vectors \(\mathbb R^4\)
matrices \(\mathbb R^{4\times4}\)
Points
\((x,y,z,1)\)
Directions
\((x,y,z,0)\)
Translations
Rotations
Lines
Planes
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^4\)
vectors \(\mathbb R^4\)
matrices \(\mathbb R^{4\times4}\)
Points
\((x,y,z,1)\)
Directions
\((x,y,z,0)\)
Translations
Rotations
Lines
Planes
\(M_{ab} = M_aM_b\)
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R^4\)
vectors \(\mathbb R^4\)
matrices \(\mathbb R^{4\times4}\)
Translations
Rotations
Lines
Planes
\(M_{ab} = M_aM_b\)
not covariant
two elements,
one meaning.
\(M\)
\(M^{-T}\)
not included
no elements in algebra.
Points
\((x,y,z,1)\)
Directions
\((x,y,z,0)\)
too big
elements w/o meaning/use
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
Lines
Points
(infinite points=directions)
Planes
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
Rotations
Lines
Points
(infinite points=directions)
Planes
Translations
(rotations around infinite lines)
+Reflections +Point reflections.
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
Rotations
Lines
\(M_{ab} = M_aM_b\)
Points
(infinite points=directions)
Planes
Translations
(rotations around infinite lines)
+Reflections +Point reflections.
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
Rotations
Lines
\(M_{ab} = M_aM_b\)
Points
(infinite points=directions)
Planes
✓ all elements included
✓ covariant transforms
✓ just the right size
Translations
(rotations around infinite lines)
+Reflections +Point reflections.
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
Rotations
Lines
\(M_{ab} = M_aM_b\)
Points
(infinite points=directions)
Planes
Easy to work out if planes are vectors, no new products needed.
Translations
(rotations around infinite lines)
+Reflections +Point reflections.
✓ all elements included
✓ covariant transforms
✓ just the right size
You're doing things upside down!!
Why must vectors be planes ?
Can't we just invent an anti-product, anti-exponential, anti-logarithm, anti- ... ?
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
\(\mathbb R_{3,0,1}\)
Rotations
Lines
\(M_{ab} = M_aM_b\)
Points
(infinite points=directions)
Planes
Easy to work out if planes are vectors, no new products needed.
You're doing things upside down!!
Why must vectors be planes ?
Can't we just invent an anti-product, anti-exponential, anti-logarithm, anti- ... ?
Translations
(rotations around infinite lines)
+Reflections +Point reflections.
✓ all elements included
✓ covariant transforms
✓ just the right size
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
You're doing things upside down!!
Why must vectors be planes ?
To show we're not doing things upside down, lets do things in reverse (and inside-out) ..
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
You're doing things upside down!!
Why must vectors be planes ?
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
DUAL QUATERNIONS DEMYSTIFIED
How do we formalize geometry ?
We need a way to move from drawings in the sand to (computer) calculations.
Without an object representation, we can't define transformations, and without transformations we can not define composition..
Or can we? Time for life hack 1 ..
DUAL QUATERNIONS DEMYSTIFIED
Turn 30 degrees clockwise:
if we can't describe or transform our objects ..
DUAL QUATERNIONS DEMYSTIFIED
Turn 30 degrees clockwise:
we'll simply
transform our space ..
if we can't describe or transform our objects ..
DUAL QUATERNIONS DEMYSTIFIED
Transform space
Free Covariance !!!!
Turn 30 degrees clockwise:
DUAL QUATERNIONS DEMYSTIFIED
Transform space
How do we formalize geometry ?
We start with an empty bag, and fill it with transformations.
Let's try for the 2D (projective) plane.
Which transformations ?
Transformations that do not stretch, tear or bend the space.
(aka the Euclidean or distance preserving transformations)
DUAL QUATERNIONS DEMYSTIFIED
Our notion of symmetry is based on our notion of equal distances
and/or magnitudes of angles
\( \lVert x, y \rVert = \lVert f(x), f(y) \rVert \)
So we start by looking at the isometries of the projective plane.
That is all maps \(f\) that preserve distances and relative angles.
The bag with all possible \(f\) is called \({E}(2)\), the Euclidean Group in two dimensions.
Transformations of space are also called symmetries.
SYMMETRIES - The Identity
The first symmetry we consider, is the trivial isometry, the Identity map.
If we don't do anything - everything stay the same.
We put the identity in our bag:
1
SYMMETRIES - The Reflection
One of the first things we think of when we say symmetry is a mirror. The second isometry we consider is the reflection. A mirror preserves distances and angles.
SYMMETRIES - The Rotation
Another isometry is the rotation. Rotating the plane (or space) also leaves
distances and angles unchanged.
SYMMETRIES - The Translation
Another isometry is the translation. Translating the plane (or space) also leaves
distances and angles unchanged. Does it have fixed, invariant points ?
SYMMETRIES - Composition
There are still other isometries that we have not included yet.
One example is the glide reflection or transflexion,
New - but clearly a combination of a translation and a reflection.
SYMMETRIES - Composition
Applying two or more isometries allows us to combine our existing isometries into new ones. We will write this using juxtaposition, so that applying isometry \(a\), followed by applying isometry \(b\) is written :
\(c=ba\)
Now we can use the composition of these isometries as building blocks to construct new ones.
Our bag of transformations now has the identy, reflections, rotations, translations and their combinations. Do we now have all isometries?
SYMMETRIES - Composition
Do we now have all isometries ?
a
a
SYMMETRIES - Composition
Do we now have all isometries ?
Translation \(t\)
a
a
SYMMETRIES - Composition
Do we now have all isometries ?
Translation \(t\)
\( \boldsymbol \circlearrowleft\)
Rotation \(r\)
SYMMETRIES - Composition
Do we now have all isometries ?
Translation \(t\)
\( \boldsymbol \circlearrowleft\)
Rotation \(r\)
Reflection \(m\)
So yes - we can now use reflections, rotations, translations and composition to build all of the possible isometries.
SYMMETRIES - Composition
Can we also break them down?
Maybe some of our elements already are compositions?
Are translations, rotations and reflections all truly fundamental? To find out lets study the composition of two reflections.
SYMMETRIES - Two Reflections
We combine two reflections \(a\) and \(b\) and study the result
SYMMETRIES - Two Reflections
We combine two reflections \(a\) and \(b\) and study the result
SYMMETRIES - Two Reflections
We combine two reflections \(a\) and \(b\) and study the result
The reflection is our basic building block for Euclidean transformations !
Rotations and Translations are just compositions of reflections
SYMMETRIES - Reflections all the way down.
The reflection is our basic building block for Euclidean transformations !
All Euclidean transformations can be constructed from reflections.
It's reflections all the way down, but how far up does it go?
SYMMETRIES - Closure
Cartan-Dieudonne :
Every orthogonal transformation in an n-dimensional symmetric bilinear space can be described as the composition of at most n reflections.
SYMMETRIES - The Euclidean Group
Identity
Reflections
Rotations/Translations
Roto/Glide Reflections
\(1\)
\(a,b,c\)
\(ab, ac, bc\)
\(abc\)
\( {E}(2)\)
Euclidean Group
The Euclidean Group contains all isometries, all distance-preserving transformations.
In many real world problems, we only consider the direct isometries.
These form a sub group of the Euclidean group, called the Special Euclidean Group.
Intuition: Any product of an even number of reflections is even.
SYMMETRIES - The Euclidean Group
Identity
Reflections
Rotations/Translations
Roto/Glide Reflections
\(1\)
\(a,b,c\)
\(ab, ac, bc\)
\(abc\)
\( {E}(2)\)
Euclidean Group
\(1\)
\(ab, ac, bc\)
Identity
Rotations/Translations
\( {SE}(2)\)
Special Euclidean Group
The Special Euclidean Group still contains all rotations for all points.
if \(ab\) rotates \(1\degree\), then \((ab)^2\) rotates \(2\degree\) and \((ab)^x=e^{\ln(ab)x}\) rotates \(x\degree\)
With the exponential map, we can make a bag with one rotation for all points
This (linear = we can scale and add angles) bag is called the Lie Algebra
SYMMETRIES - The Euclidean Group
Identity
Reflections
Rotations/Translations
Roto/Glide Reflections
\(1\)
\(a,b,c\)
\(ab, ac, bc\)
\(abc\)
\({E}(2)\)
Euclidean Group
\(ab, ac, bc\)
only combinations of 2 orthogonal reflections
\(\mathfrak {se}(2)\)
Special Euclidean Algebra
Considering only one rotation per point. (reconstruct others with exponential map)
\(1\)
\(ab, ac, bc\)
Identity
Rotations/Translations
\({SE}(2)\)
Special Euclidean Group
in GA, these are pure bivectors.
Considering only the direct isometries. (GA: even subalgebra, LA: +1 determinant)
SYMMETRIES - Recap.
Identity
Reflections
Rotations/Translations
Roto/Glide Reflections
\(1\)
\(a,b,c\)
\(ab, ac, bc\)
\(abc\)
\(M_{ab} = M_aM_b\)
How do we formalize geometry ?
So we're looking for points, lines and planes..
Searching for Geometry.
# Reflections
0
1
2
3
2D Invariant
plane
line
point
3D Invariant
volume
plane
line
point
Transformations of \( \mathfrak E(n)\) already strong link with geometric elements !
Searching for Geometry.
2D Invariant
plane
line
point
3D Invariant
volume
plane
line
point
Transformations of \( E(n)\) already strong link with geometric elements !
Use a reflection to represent a line (2D) and a plane (3D). (easy 1-to-1 map)
We simply identify the geometry with the invariants of the symmetries.
# Reflections
0
1
2
3
Searching for Geometry.
# Reflections
0
1
2
3
2D Invariant
plane
line
point
3D Invariant
volume
plane
line
point
Transformations of \( E(n)\) already strong link with geometric elements !
Many rotations keep the same point/line invariant, pick the orthogonal one.
We simply identify the geometry with the invariants of the symmetries.
Use a reflection to represent a line (2D) and a plane (3D). (easy 1-to-1 map)
An algebra of symmetries.
# Reflections
0
1
2
3
4
2D Invariant
plane
line
point
line
3D Invariant
volume
plane
line
point
screw axis
2D transform
identity
reflect
rotate translate
roto/glide refl.
3D transform
identity
reflect
rotate translate
point reflect
screw motion
Every product of reflections is both a transformation and an element of the geometry.
Every element is an eigen-element w.r.t. the transformation it represents.
This produces a very elegant algebra, that is coordinate free, dimension-independent, with expressions that are easy to reason about.
An algebra of symmetries.
Every product of reflections is both a transformation and an element of the geometry.
for 3D PGA :
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
\(M_{ab} = M_aM_b\)
Group Composition.
Group Action.
How do we transform the elements?
The Sandwich Hack
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
To rotate the red line \(\ell\)
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Sandwich Hack
To rotate the red line \(\ell\)
We first rotate the space with rotation \(ab\)
\(ab\)
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Sandwich Hack
To rotate the red line \(\ell\)
We first rotate the space with rotation \(ab\)
\(ab\)\(\ell\)
Then we combine with the line \(\ell\)
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Sandwich Hack
To rotate the red line \(\ell\)
We first rotate the space with rotation \(ab\)
\(ab\)\(\ell\)\(ba\)
Then we combine with the line \(\ell\)
Then we rotate back with rotation \(ba\)
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Sandwich Hack
To rotate the red line \(\ell\)
\(ab\)\(\ell\)\(ba\)
The sandwich product can transform all elements because it doesn't transform any element.
It is double-sided because we are transforming the space before and after.
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Sandwich Hack
To rotate the red line \(\ell\)
\(ab\)\(\ell\)\(ba\)
The sandwich product can transform all elements because it doesn't transform any element.
It is double-sided because we are transforming the space before and after.
How do we transform the elements?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Sandwich Hack
But how do we write these reflections down with numbers ?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
\({\mathbf e_-}^2=-1\)
\({\mathbf e_+}^2=1\)
\({\mathbf e_0}^2=0\)
But how do we write these reflections down with numbers ?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
\({\mathbf e_-}^2=-1\)
\({\mathbf e_+}^2=1\)
\({\mathbf e_0}^2=0\)
But how do we write these reflections down with numbers ?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
\({\mathbf e_+}^2=1\)
\({\mathbf e_0}^2=0\)
But how do we write these reflections down with numbers ?
\({\mathbf e_-}^2=-1\)
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
But how do we write these reflections down with numbers ?
Write homogeneous linear equations as linear combinations of three Euclidean mirrors \(\mathbf e_1, \mathbf e_2, \mathbf e_3\) and one mirror at infinity \(\mathbf e_0\)
\({\mathbf e_i}^2=1\)
\({\mathbf e_0}^2=0\)
\(\mathbf e_i\mathbf e_j=-\mathbf e_j\mathbf e_i\)
\(a\mathbf x + b\mathbf y + c\mathbf z + d = 0\)
\(a\mathbf e_1 + b\mathbf e_2 + c\mathbf e_3 + d\mathbf e_0\)
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
\(a\mathbf e_1 + b\mathbf e_2 + c\mathbf e_0\)
ok this clearly works to represent a line - does it now also work as reflection ?
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
ok this clearly works to represent a line - does it now also work as reflection ?
\(\mathbf x + \mathbf y + 1 = 0 \rightarrow \mathbf e_1 + \mathbf e_2 + \mathbf e_0\)
a line \(\ell = \mathbf e_1 + \mathbf e_2 + \mathbf e_0 \)
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
ok this clearly works to represent a line - does it now also work as reflection ?
\(\mathbf x + \mathbf y + 1 = 0 \rightarrow \mathbf e_1 + \mathbf e_2 + \mathbf e_0\)
\(x = 0 \rightarrow \mathbf e_1\)
a line \(\ell = \mathbf e_1 + \mathbf e_2 + \mathbf e_0 \)
and a mirror \(\mathbf e_1\)
Identity 1
Reflections a,b,c,d
Rotations/Translations ab,ac,ad,bc,bd,cd
point reflections abc,abd,acd,bcd
screws abcd
planes
lines
points
The Euclidean Algebra
product = composition
sandwich = action
a line \(\ell = \mathbf e_1 + \mathbf e_2 + \mathbf e_0 \)
and a mirror \(\mathbf e_1\)
\(\color{blue}\mathbf e_1\color{black}(\color{red}\mathbf e_1 + \mathbf e_2 + \mathbf e_0\color{black})\color{blue}\mathbf e_1\)
\(= (1 + \mathbf e_{12} - \mathbf e_{01})\mathbf e_1\)
\(= \color{magenta}\mathbf e_1 - \mathbf e_2 - \mathbf e_0\)
Identity
Reflections
Rotations/Translations
point reflections
screws
planes
lines
points
PGA - Projective Geometric Algebra
geometric product = composition
sandwich = action
\(x\mathbf e_{032} + y\mathbf e_{013} + z\mathbf e_{021} + \mathbf e_{123}\)
With the geometric product and planes as vectors - you get an algebra that naturally generates the Euclidean Group!
\(a\mathbf e_1 + b\mathbf e_2 + c\mathbf e_3 + d\mathbf e_0\)
\(d_x\mathbf e_{01}+d_y\mathbf e_{02}+d_z\mathbf e_{03}+x\mathbf e_{23}+y\mathbf e_{31}+z\mathbf e_{12}\)
Identity
Reflections
Rotations/Translations
point reflections
screws
planes
lines
points
PGA - Projective Geometric Algebra
geometric product = composition
sandwich = action
\(x\mathbf e_{032} + y\mathbf e_{013} + z\mathbf e_{021} + \mathbf e_{123}\)
With the geometric product and planes as vectors - you get an algebra that naturally generates the Euclidean Group!
\(a\mathbf e_1 + b\mathbf e_2 + c\mathbf e_3 + d\mathbf e_0\)
\(d_x\mathbf e_{01}+d_y\mathbf e_{02}+d_z\mathbf e_{03}+x\mathbf e_{23}+y\mathbf e_{31}+z\mathbf e_{12}\)
Homogeneous Linear Equation
Plucker Coordinates
Homogeneous Point
Visualizing PGA
Visualizing PGA
not the ideal view for PGA.
We want to visualize :
Visualizing PGA : The Elements
Vectors = Lines
\(a\mathbf e_1 + b\mathbf e_2 +c\mathbf e_0\)
Bivectors = Points
\(x\mathbf e_{02} + y\mathbf e_{01} + w\mathbf e_{12}\)
Rotations
\(e^{\frac \alpha 2 (x\mathbf e_{02} + y\mathbf e_{01} + w\mathbf e_{12})}\)
Translations
\(e^{\frac d 2 (x\mathbf e_{02} + y\mathbf e_{01})}\)
Line = Vector
Point = Bivector
Translation
Rotation
Visualizing PGA : The Elements
Line = Vector
Point = Bivector
Translation
Rotation
Vectors = Reflections = Lines
\(a\mathbf e_1 + b\mathbf e_2 +c\mathbf e_0\)
Bivectors = \(\perp\) Reflections = Points
\(x\mathbf e_{02} + y\mathbf e_{01} + w\mathbf e_{12}\)
Intersecting Reflections = Rotations
\(e^{\frac \alpha 2 (x\mathbf e_{02} + y\mathbf e_{01} + w\mathbf e_{12})}\)
Parallel Reflections = Translations
\(e^{\frac d 2 (x\mathbf e_{02} + y\mathbf e_{01})}\)
Visualizing PGA : The Geometric Product
Visualizing PGA : The Inner Product
Visualizing PGA : The Join / regressive Product
The Geometric Product eliminates identical reflections.
The Inner Product retains
orthogonal reflections.
The Join retains
identical reflections
Visualizing PGA : The Meet / Outer Product
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Allows you to reason about these products !!
Visualizing PGA : The Projection Operator
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Allows you to reason about these products !!
Visualizing PGA : Cartan–Dieudonné
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Cartan-Dieudonne :
Every orthogonal transformation in an n-dimensional symmetric bilinear space can be described as the composition of at most n reflections.
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Infinity!
Visualizing PGA : Cartan–Dieudonné
Cartan-Dieudonne :
Every orthogonal transformation in an n-dimensional symmetric bilinear space can be described as the composition of at most n reflections.
Visualizing PGA : Reflection of a Point
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Associativity!
Infinity!
Allows you to reason about these products !!
Visualizing PGA : 3D Geometric Product
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Allows you to reason about these products !!
Visualizing PGA : 3D Geometric Product
The Geometric Product eliminates identical reflections.
The Join retains
identical reflections
The Meet identifies
orthogonal reflections
The Inner Product retains
orthogonal reflections.
Next:
The Brutal Violation of PGA
The Brutal Violation of PGA
Identity
Reflections
Rotations/Translations
point reflections
screws
planes
lines
points
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}\)
The Brutal Violation of PGA
Identity
Reflections
Rotations/Translations
point reflections
screws
planes
lines
points
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}\)
The Brutal Violation of PGA
Identity
Rotations/Translations
screws
lines
1
\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03},\mathbf e_{12},\mathbf e_{31},\mathbf e_{23}\)
\(\mathbf e_{0123}\)
No longer a representation for planes and points.
Patch : Lines have 3 coefficients that transform like points, and 3 that transform like directions.
The Dual Quaternions
1
\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03},\mathbf e_{12},\mathbf e_{31},\mathbf e_{23}\)
\(\mathbf e_{0123}\)
No longer a representation for planes and points.
Patch : Lines have 3 coefficients that transform like points, and 3 that transform like directions.
\(1\)
\(\mathbf e_{12}\)
\(\mathbf e_{31}\)
\(\mathbf e_{23}\)
\(\mathbf e_{01}\)
\(\mathbf e_{02}\)
\(\mathbf e_{03}\)
\(\mathbf e_{0123}\)
Still obviously a combination of an even number of reflections.
Very suitable for carving.
Will take 100 years to decode.
The Dual Quaternions
1
\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03},\mathbf e_{12},\mathbf e_{31},\mathbf e_{23}\)
\(\mathbf e_{0123}\)
No longer a representation for planes and points.
Patch : Lines have 3 coefficients that transform like points, and 3 that transform like directions.
\(1\)
\(\mathbf e_{12}\)
\(\mathbf e_{31}\)
\(\mathbf e_{23}\)
\(\mathbf e_{01}\)
\(\mathbf e_{02}\)
\(\mathbf e_{03}\)
\(\mathbf e_{0123}\)
Still obviously a combination of an even number of reflections.
Patch : Rename to hide the internal structure completely.
\(1\)
\(\mathbf i\)
\(\mathbf j\)
\(\mathbf k\)
\(\mathbf {\epsilon i}\)
\(\mathbf {\epsilon j}\)
\(\mathbf {\epsilon k}\)
\(\mathbf {\epsilon}\)
Very suitable for carving.
Will take 100 years to decode.
The Dual Quaternions
1
\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03},\mathbf e_{12},\mathbf e_{31},\mathbf e_{23}\)
\(\mathbf e_{0123}\)
No longer a representation for planes and points.
Patch : Lines have 3 coefficients that transform like points, and 3 that transform like directions.
\(1\)
\(\mathbf e_{12}\)
\(\mathbf e_{31}\)
\(\mathbf e_{23}\)
\(\mathbf e_{01}\)
\(\mathbf e_{02}\)
\(\mathbf e_{03}\)
\(\mathbf e_{0123}\)
Still obviously a combination of an even number of reflections.
Patch : Rename to hide the internal structure completely.
\(1\)
\(\mathbf i\)
\(\mathbf j\)
\(\mathbf k\)
\(\mathbf {\epsilon i}\)
\(\mathbf {\epsilon j}\)
\(\mathbf {\epsilon k}\)
\(\mathbf {\epsilon}\)
Very suitable for carving.
Will take 100 years to decode.
The Dual Quaternions
1
\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03},\mathbf e_{12},\mathbf e_{31},\mathbf e_{23}\)
\(\mathbf e_{0123}\)
Patch : Lines have 3 coefficients that transform like points, and 3 that transform like directions.
\(1\)
\(\mathbf e_{23}\)
\(\mathbf e_{31}\)
\(\mathbf e_{12}\)
\(\mathbf e_{01}\)
\(\mathbf e_{02}\)
\(\mathbf e_{03}\)
\(\mathbf e_{0123}\)
Patch : Rename to hide the internal structure completely.
\(1\)
\(-\mathbf k\)
\(-\mathbf j\)
\(-\mathbf i\)
\(\mathbf {\epsilon i}\)
\(\mathbf {\epsilon j}\)
\(\mathbf {\epsilon k}\)
\(-\mathbf {\epsilon}\)
Unpatch: Rename to reveal the internal structure.
Unpatch: Use PGA lines to create dquats
}
}
The Dual Quaternions
1
\(\mathbf e_{01},\mathbf e_{02},\mathbf e_{03},\mathbf e_{12},\mathbf e_{31},\mathbf e_{23}\)
\(\mathbf e_{0123}\)
Patch : Lines have 3 coefficients that transform like points, and 3 that transform like directions.
Patch : Rename to hide the internal structure completely.
Unpatch: Rename to reveal the internal structure.
}
}
}
\(\mathbb H\)
}
\(\mathbb C\)
\(1\)
\(\mathbf e_{23}\)
\(\mathbf e_{31}\)
\(\mathbf e_{12}\)
\(\mathbf e_{01}\)
\(\mathbf e_{02}\)
\(\mathbf e_{03}\)
\(\mathbf e_{0123}\)
\(1\)
\(-\mathbf k\)
\(-\mathbf j\)
\(-\mathbf i\)
\(\mathbf {\epsilon i}\)
\(\mathbf {\epsilon j}\)
\(\mathbf {\epsilon k}\)
\(-\mathbf {\epsilon}\)
Unpatch: Use PGA lines to create dquats
Recap.
Several important symmetry groups have direct Clifford representations.
Each of these has a natural, invariant association with geometry.
\( E(2)\)
\( E(3)\)
Reflections, Rotations, Translations, Rotoreflections, screws
Planes, Lines, Points
Planar Quaternions
Dual Quaternions
\(\mathbb R_{2,0,1}\)
\(\mathbb R_{3,0,1}\)
\( SE(2)\)
\( SE(3)\)
Recap.
Several important symmetry groups have direct Clifford representations.
Each of these has a natural, invariant association with geometry.
\( O(2)\)
\( O(3)\)
\( E(2)\)
\( E(3)\)
Reflections,
Rotations
through origin.
Reflections, Rotations, Translations, Rotoreflections, screws
Planes and Lines through origin + origin.
Planes, Lines, Points
\( SO(2)\)
\( SO(3)\)
\( SE(2)\)
\( SE(3)\)
complex numbers
Quaternions
Planar Quaternions
Dual Quaternions
\(\mathbb R_2\)
\(\mathbb R_3\)
\(\mathbb R_{2,0,1}\)
\(\mathbb R_{3,0,1}\)
Recap.
Several important symmetry groups have direct Clifford representations.
Each of these has a natural, invariant association with geometry.
\( O(2)\)
\( O(3)\)
\( E(2)\)
\( E(3)\)
Reflections,
Rotations
through origin.
Reflections, Rotations, Translations, Rotoreflections, screws
Planes and Lines through origin + origin.
Planes, Lines, Points
\( SO(2)\)
\( SO(3)\)
\( SE(2)\)
\( SE(3)\)
complex numbers
Quaternions
Planar Quaternions
Dual Quaternions
\(\mathbb R_2\)
\(\mathbb R_3\)
\(\mathbb R_{2,0,1}\)
\(\mathbb R_{3,0,1}\)
\(\mathbb R_{3,1}\)
conformal(2)
conformal(3)
\(\mathbb R_{4,1}\)
Inversions,
All conformal Transformations.
Planes, Spheres, Lines, Circles, Point Pairs, Points
\(\mathbb R_{1,3}\)
Lorentz
Refl., Rot., Tran, Boosts
Conformal Geometric Algebra
Works exactly the same way, we simply replace our reflections in lines/planes with reflections in circles/spheres (inversions).
Circle/Sphere with zero radius = point !!
Circle/Sphere with \(\infty\) radius = line/plane !!
Even #reflections = All direct conformal transformations !
Conformal Geometric Algebra
Works exactly the same way, we simply replace our reflections in lines/planes with reflections in circles/spheres (inversions).
Circle/Sphere with zero radius = point !!
Circle/Sphere with \(\infty\) radius = line/plane !!
Even #reflections = All direct conformal transformations !
Can I use this in my game engine ?
YES !
Jeremy Ong's Klein library is an SSE 4.2 optimized production ready C++ PGA implementation that beats the dquat implementations in GLM and similar ..
Thank You !
There is a short break and follow-up workshop for questions ..
Be sure to join the talks of Dr Dorst on the links with linear algebra this afternoon.
(and those tomorrow and Friday - even if not your field of expertise,
experience what a unified language really means ..)