
Projective Geometric Algebra Done Right - erichocean
http://terathon.com/blog/projective-geometric-algebra-done-right/
======
jampekka
I've been trying to use geometric algebra for some relatively practical math
derivations for a while, and the journey has been really frustrating. Almost
all documentation is extremely theoretical, and terminology seems to change
from document to document.

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.

~~~
erichocean
> _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_

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.

[0] [http://versor.mat.ucsb.edu/](http://versor.mat.ucsb.edu/)

~~~
jampekka
Thanks for the tip. I'm working with by-hand/symbolic stuff, so Versor may not
be exacly the thing for me, but I think I'll learn about CGA a lot better by
looking at that implementation than research papers!

------
adamnemecek
Check out [http://bivector.net](http://bivector.net), a new community on
geometric algebra.

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

Join the discord

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

------
ur-whale
Wow, an entire article on projective geometry without a _single_ figure.

------
ajkjk
Some of the literature on the wedge product handles it all under a different
set of names. In oriented projective geometry the wedge product is the 'join'
operator. The antiwedge mentioned in this article is called the 'meet'. There
are some other papers (by Gian Carlo Rota and others) which treat this
operation in the exterior algebra directly, which I can find later.

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.)

------
JoeCamel
It seems the post is a response to SIGGRAPH 2019 course “Geometric Algebra for
Computer Graphics” and not a stand-alone introduction to GA. Maybe the title
suggests otherwise. That explains why there are no figures. I have a basic
knowledge of GA but everything seemed clear. I was confused a little bit by
"anti-scalar" which is usually called "pseudo-scalar".

~~~
elengyel
Right, the post was not intended to be any kind of introduction or tutorial,
but rather more of an announcement to those already familiar with the subject
that there exists another way of doing the math that doesn't require inverting
the dimensionality of points and planes. I will be writing some much longer
that introduces the material properly and goes into much more detail with
plenty of figures.

Here's an excerpt from pages 153-154 in FGED1
([https://www.amazon.com/dp/0985811749/?tag=terathon-20](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.

------
mnemonicsloth
Looks cool. Always wanted to learn something about graphics. Shame there are
no examples.

~~~
erichocean
The author's books on game programming are really solid if you're interested.
(I own both.)

He's got a very clean way of presenting what's going on...

------
banachtarski
I disagree with the author's post and will be writing a response

~~~
w0mbat
I would like to disagree with the author's post, but I couldn't understand a
word of it.

