
Siggraph2019 Geometric Algebra (2019) [video] - lelf
https://www.youtube.com/watch?v=tX4H_ctggYo
======
ivan_ah
Here are some direct links to some of the PGA (Projective Geometric Algebra)
resources mentioned in the talk:

1\. The 2D and 3D cheat sheets are here:
[https://bivector.net/doc.html](https://bivector.net/doc.html)

2\. The talk is also available in "paper form" on the arXiv:
[https://arxiv.org/abs/1901.05873](https://arxiv.org/abs/1901.05873)

3\. Ganja.js repo
[https://github.com/enkimute/ganja.js](https://github.com/enkimute/ganja.js)
and the associated demos in the Ganja coffee shop
[https://enkimute.github.io/ganja.js/examples/coffeeshop.html](https://enkimute.github.io/ganja.js/examples/coffeeshop.html)

____

For more background about the concepts like quaternions, projective geometry,
and exterior algebra, etc. that are all united in PGA, you can check this nice
book by Jean Gallier and Jocelyn Quaintance:
[https://www.cis.upenn.edu/~jean/gbooks/geomath.html](https://www.cis.upenn.edu/~jean/gbooks/geomath.html)
direct link [https://www.cis.upenn.edu/~jean/math-
deep.pdf](https://www.cis.upenn.edu/~jean/math-deep.pdf) I haven't read, but
sampled it on several topics and found the explanations to be very good.

(edit) first-added links specific to PGA, and typo fix s/external/exterior/

~~~
skydog23
As the author of the arxiv preprint referred to above, I would like to point
out a newer, expanded version written for the Siggraph 2019 course. It's
available here:
[https://www.researchgate.net/publication/334397782_Course_no...](https://www.researchgate.net/publication/334397782_Course_notes_Geometric_Algebra_for_Computer_Graphics_SIGGRAPH_2019)

------
carapace
FWIW, "Geometric Algebra for Electrical and Electronic Engineers" is short and
sweet:
[https://ieeexplore.ieee.org/document/6876131?arnumber=687613...](https://ieeexplore.ieee.org/document/6876131?arnumber=6876131)

> This tutorial paper provides a short introduction to geometric algebra,
> starting with its history and then presenting its benefits and exploring its
> applications.

------
bananabiscuit
Here is an informative critique of this video along with an improved
application of geometric algebra to computer geometry:

[http://terathon.com/blog/projective-geometric-algebra-
done-r...](http://terathon.com/blog/projective-geometric-algebra-done-right/)

~~~
ivan_ah
Thanks for sharing this blog post and the cheat sheet
[http://terathon.com/pga_lengyel.pdf](http://terathon.com/pga_lengyel.pdf)

I agree the representation chosen in the SIGGRAPH lecture and the associated
docs seems somewhat unnatural and counter-intuitive (why are points being
represented as trivectors?).

Have you reached out to C. Gunn or S. De Keninck to ask what they think about
the representation you propose in that blog post and the geometric product ⟑
and antiproduct ⟇ ? If the representations are equivalent and one is closer to
concepts people already understand (e.g. points being (x,y,z,w), with w=1),
then maybe adopting the simpler representation would lead to wider adoption of
the ideas.

Alternatively, maybe they will point out some other reasons why points-as-
trivectors representation is preferable.

~~~
jnfinity
Your welcome, ivah_ah.

I approached the SIGGRAPH presenters immediately after their talk last year to
try to explain that the whole thing could be done without swapping the
geometrical meanings of vectors and trivectors. They were very dismissive at
the time, but I think they have now accepted the formulation I've introduced
leads to exactly the same mathematics with the only differences being in
naming and numbering.

I don't see the math as one algebra with the geometric product and a "dual"
algebra with the geometric antiproduct. I see it as a single algebra with two
products existing simultaneously. It's important to understand that there are
lots of symmetries in geometric algebra, and for each one, both sides of the
symmetry are equally significant, and the universe doesn't prefer one over the
other. The most fundamental symmetry is that each basis element can
_simultaneously_ be viewed as containing some "full" dimensions and some
"empty" dimensions. In 4D space, you can think of this as a 4-bit quantity
where 1 means full and 0 means empty. (These are what the black and white bars
represent on my poster.) Four bits means 16 different basis elements can be
formed by selecting which dimensions are full. Scalars have no full
dimensions, vector basis elements have one full dimension, bivector basis
elements have two full dimensions, trivector basis elements have three full
dimensions, and antiscalars (which are 4D volume elements or quadrivectors)
have all four full dimensions. At the same time, you can view these from the
opposite perspective and say that scalars have all four empty dimensions,
vectors have three empty dimensions, bivectors have two empty dimensions,
trivectors have one empty dimension, and antiscalars have no empty dimensions.
The important thing to understand about the relationship between the geometric
product and the geometric antiproduct is that the first one performs
operations on full dimensions, and the other one performs exactly the same
operations on empty dimensions. With regard to the degenerate metric, anything
containing a full w-dimension (corresponding to e4 in my work) squares to zero
under the geometric product, and anything containing an empty w-dimension
squares to zero under the geometric antiproduct.

Since the two approaches (the SIGGRAPH approach and my approach) are both
valid and produce the same mathematics, I prefer to stick with the approach
that keeps points = 4D vectors, lines = 4D bivectors, and planes = 4D
trivectors because we're simply adding one projective dimension to everything.
This is an extension of the concept of homogeneous coordinates that has long
been established in computer graphics. Here, the dimensionality of a
projective geometric object corresponds directly to the grade of the
associated element in the algebra, which counts the number of _full_
dimensions. In the SIGGRAPH approach, the dimensionality of a projective
geometric object corresponds to the grade subtracted from four, which counts
the number of _empty_ dimensions. It's a mirror image. Like I said earlier,
the universe doesn't care which approach you use, and to claim that one is a
more natural choice than the other is erroneous. The only thing we can do is
choose one to be the agreed-upon convention and stick to it in the same sense
that everybody agrees to use the right-hand rule for cross products instead of
an equally valid left-hand rule.

I'll be giving a talk about all of this at the GDC 2020 Math Summit on March
17.

~~~
PrototypeNM1
Does your GDC talk have a name yet? I'd like to keep an eye out for it.

~~~
jnfinity
It's called "Projective Geometric Algebra and Dual Quaternions", and it's on
Tuesday, March 17 at 1:20 pm.

[https://schedule.gdconf.com/session/math-in-game-
development...](https://schedule.gdconf.com/session/math-in-game-development-
summit-projective-geometric-algebra-and-dual-quaternions-/874154)

~~~
PrototypeNM1
Given GDC is postponed are you planning to wait out and see if it's
successfully rescheduled or otherwise? I've been on a bit of a GA binge
recently and am especially curious what arguments might be presented for
adoption in the context of game development.

------
enkimute
For those interested - In a few weeks, 26-27-28 February, there is a (free)
workshop featuring talks and workshops from Leo Dorst, Anthony Lasenby,
Charles Gunn, Steven De Keninck (the lecturer from this vid - disclaimer -
thats me), Vincent Nozick, Dietmar Hldenbrand, Hugo Hadfield and Eric Wieser.

They'll be talking about their research on applications of GA in robotics, AI,
CS, physics, graphics.

more info :
[https://bivector.net/game2020.html](https://bivector.net/game2020.html)

Everyone welcome !

~~~
skwog
Near the end of your Siggraph 2019 talk (excellent, thanks), an audience
member mentions an IEEE Spectrum article "Geometric Algebra for Electrical and
Electronic Engineers". What is the author's surname that you mention?

Peter Yolks? Jolts? Holt? Oates?

For me, multiple searches have yielded no results for a similar author name so
far.

Specifically, there does not appear to be any such article on IEEE Spectrum
[1], but there is one on Proceedings of the IEEE [2] whose listed authors do
not include anyone named Peter.

Curious because you go on to state that his work is readily available. That
caught my attention, so I became interesting in finding out more.

[1]
[https://spectrum.ieee.org/searchContent?query=Geometric+Alge...](https://spectrum.ieee.org/searchContent?query=Geometric+Algebra&max=10&page=0&types=Article&q=Geometric+Algebra)

[2] [https://proceedingsoftheieee.ieee.org/most-
downloaded/geomet...](https://proceedingsoftheieee.ieee.org/most-
downloaded/geometric-algebra-for-electrical-and-electronic-engineers/)

------
crubier
This video is the best thing I watched in the past few years. Last time I
loved something that much was Geoffrey Hintons course about deep learning back
in 2015.

It is eye opening, just like in the beginning of mainstream deep learning, it
made me wonder “why didn’t we discover this before?” It elegantly solves so
many annoyances about geometry, maths and physics.

I’ve been evangelizing Geometric Algebra like crazy since I found this video,
including in hacker news comments.

~~~
alexkcd
Agreed. Besides Geometric Algebra, dual numbers also play a huge role in
automatic differentiation -- the core building block of modern machine
learning frameworks.

I really like the analogy in this talk about how Al-Khwarizmi's six quadratic
equations simplify to just one, once we learn about negative numbers and zero.

In a lot of ways, geometric algebra (and dual numbers) are our discovery of
"negative numbers and zero", but for the 21st century.

~~~
moralestapia
>also play a huge role in automatic differentiation

Could you extend more on how GA plays a role in this? I wish to learn more but
don't know where to start. Any leads would be appreciated greatly.

~~~
spacedome
In the video they present it as an algebraic framework where you can "add" to
a number system elements x such that x^2 = -1, x^2 = 0, or x^2 = 1. Adding the
element x^2 = -1 to the real numbers gives you the complex numbers, with x =
i. Adding the element x^2 = 0 to the real numbers gives you the dual numbers
with x = epsilon, which is what can be used for automatic differentiation. The
case of x^2 = 1 is more complicated.

------
nimish
Great article from the same presenter here:
[https://www.groundai.com/project/projective-geometric-
algebr...](https://www.groundai.com/project/projective-geometric-algebra-a-
new-framework-for-doing-euclidean-geometry/1)

And for those who know conformal GA, see
[https://www.researchgate.net/publication/290437718_Geometric...](https://www.researchgate.net/publication/290437718_Geometric_Algebras_for_Euclidean_Geometry)

------
DreamScatter
Check out my geometric algebra software

[https://grassmann.crucialflow.com](https://grassmann.crucialflow.com)

------
adamnemecek
If this interests you, you should check out the bivector community
[https://bivector.net/](https://bivector.net/) which is ran by the presenter
of this lecture.

Join the discord [https://discord.gg/vGY6pPk](https://discord.gg/vGY6pPk).

Check out a demo [https://observablehq.com/@enkimute/animated-
orbits](https://observablehq.com/@enkimute/animated-orbits)

------
banachtarski
Highly recommended. Absolutely eye opening talk and set of resources.

------
amelius
Does this solve the problem of consistency in computational geometry? I.e.
point lies inside a polygon, but due to rounding errors, the point seems to
lie outside the polygon, which might trigger e.g. a program crash.

~~~
garmaine
No, but there are other ways of solving that. Setting rounding modes and bias
values appropriately would prevent what you describe.

~~~
nwallin
You mean dynamically setting rounding modes depending on what operation you're
doing? How do you do this performantly while staring down the barrel of
context switching, third party dependencies, programmers who are at least as
dumb as I am...?

My general rule of thumb is that if your code might fail if someone swaps out
IEEE 754 floating point semantics for some other representation that's at most
as goofy as IEEE 754, your code is probably wrong.

~~~
garmaine
Context switching preserves fpu modes. You set these inside inner loops where
you aren’t calling out to third party dependencies. Good libraries make this
easy to work with.

This is exactly how IEEE 754 was designed to work, and is what all the major
numerical libraries do.

------
msla
A good introduction:

[https://www.av8n.com/physics/clifford-
intro.htm](https://www.av8n.com/physics/clifford-intro.htm)

Previous discussion on this topic:

[https://news.ycombinator.com/item?id=22200260](https://news.ycombinator.com/item?id=22200260)

------
deepaksurti
A recent discussion on HN related to GA in the context of removing
quaternions:
[https://news.ycombinator.com/item?id=22200260](https://news.ycombinator.com/item?id=22200260)

