Projective Geometric Algebra Done Right
terathon.com
terathon.com
It may be my lack of savvy, but I have a nagging feeling that the reason GA hasn't been picked up is that it actually isn't that great when you're out of the math theoryland. By my understanding the main "practical" branches for 3D Euclidian geometry are the "traditional" projective GA with homogeneous coordinates, which still has all the nastiness of rotation matrices etc, the "other" projective GA which was criticized here for having indeed rather bizarre basics, like a degenerate dimension (unit vector squares to zero) and points being represented as duals of planes or something, and finally there's the 5D conformal GA, which is supposed to not have all this nastiness, but it's hard to find anything resembing practical on it.
I hope my hunch is wrong. The traditional linear algebra becomes really cumbersome for many analyses and the sales pitch for GA is very alluring.
That said, I do really appreciate the "bizarro" projective GA people actually trying to make it more approachable for non-mathematicians, which seems to be a quite rare thing in maths.
Give Versor[0] a try. Implementation is fast, solid, with lots of example code. I'm no math genius, but it makes sense to me. The book Geometric Algebra for Computer Science was also helpful.
Pablo (Versor developer) has some nice videos and write-ups on it too.
That said, I totally agree that GA in general is WAY too abstract. I don't give a shit about the intricacies of the math, what I care about are access to geometric objects that behave normally, where it takes very little code to go from "this is what I want to do" to "okay, it's doing it." Make me a circle from these three points, then rotate it by this much about this line—that kind of thing. I want the simple stuff to be stupid simple, and so far, Versor has been sufficient.
Googling for that phrase turns up exactly one page :)
http://math2.org/math/paper/sect1-3.htm
(I know, right?)
Eric calls the dual vectors in a geometric algebra (or Grassmann algebra as he calls it) antivectors. See his presentation from GDC2012 around the middle:
>Instead of saying (n−1)-vector, we call these “antivectors”
http://www.terathon.com/gdc12_lengyel.pdf (also: https://youtu.be/WZApQkDBr5o?t=1673)
So e.g. in 3D bivectors would be antivectors, in 4D trivectors would be antivectors, etc. He also calls what's usually referred to as pseudoscalars antiscalars - that is, n-vectors in an n-dimensional geometric algebra.
The geometric antiproduct introduced in this article has a similar dual relationship with the geometric product: the geometric antiproduct acts on vectors the same way as the geometric product acts on antivectors. Around the end of the article he even writes that the whole algebraic structure is invariant under dualization (or "antization" :D ): you can map scalars to antiscalars, vectors to antivectors, etc. and the geometric product will be mapped to the geometric antiproduct, etc.
But yeah, traditional Linear Algebra really sucks in comparison. It seems surreal that for some tasks in LA that require solving equations - e.g. with Gauss algorithm - can be solved straight forward. Also I've read that it can be run quite efficiently due to advances in GPU computing. At the moment I'm checking Grassmann.jl, this seems quite promising in terms of performance although it's probably less intuitive than Ganja.js
Personal anecdata: I regularly do like 3–4 pages of obnoxious scratchwork in terms of coordinates, get stuck, feel like I’ve probably made some trivial errors along the way, etc., experience deja vu, and then recast everything in GA.
Then the alternative work-through ends up taking like 3–5 lines of simple algebra, with a clear geometric interpretation for every step, and way less hassle.
This has now happened maybe a dozen times over the past few years. Maybe I’ll eventually learn better and start out in GA land.
Check out the demo https://observablehq.com/@enkimute/animated-orbits
Join the discord
The meet operator is dual to the wedge product. Presumably the 'antigeometric product' in this article is along the same lines, but, like the geometric product, much harder to make sense of than the meet itself. I tried for a long time to find a good interpretation of the meet. It roughly corresponds to finding the intersection of two linear subspaces (the wedge product roughly corresponds to their linear span).
I personally think the geometric product is the source of all the bafflement, and the real interesting object is the wedge product. I hope to write up a solid argument about this someday but haven't had the wherewithal.
(I also suspect the geometric product is usually defined wrong! A product (xy) (x) should be y, not -y, the factors should cancel left to right in both terms. Afaict this simplifies a lot of formulas.)
Here's an excerpt from pages 153-154 in FGED1 (https://www.amazon.com/dp/0985811749/?tag=terathon-20) that explains my reasoning about "anti" and "pseudo" with regard to vectors, but it also applies to everything else:
In the n-dimensional Grassmann algebra, a 1-vector and its complement, which is an (n - 1)-vector, both have n components. We give the complement of a vector the special name antivector because it corresponds to all of the directions in space that are perpendicular to the vector, excluding only the one direction to which the vector corresponds. An antivector is everything that a vector is not, and vice versa. T hey are opposites of each other and stand on equal ground with perfect symmetry. Since vectors and antivectors have the same numbers of components, a clear distinction is not always made between the two in much of the existing literature, and an antivector is often called a pseudovector because its transformation properties are different from an ordinary vector. However, the prefix "pseudo" tends to induce a characterization of lower status through its meaning of "false" without adding any descriptive value to the term, whereas the prefix "anti" accurately depicts an antivector as something that "opposes" its complementary vector.
He's got a very clean way of presenting what's going on...