
A Bigger Mathematical Picture for Computer Graphics [video] - adamnemecek
https://www.youtube.com/watch?v=WZApQkDBr5o
======
unao
I encountered geometric algebra only few weeks ago and it is one of the most
interesting, intriguing and elegant things I saw in my life. It almost feels
too beauty to be true. I cannot understand why GA is not more popular -
especially as it is backwards compatible with linear algebra.

There is very interesting library:
[https://github.com/enkimute/ganja.js](https://github.com/enkimute/ganja.js)

~~~
letlambda
C++ GA library.
[https://github.com/wolftype/versor](https://github.com/wolftype/versor)

The cheat sheet is awesome.
[http://versor.mat.ucsb.edu/masters_appendix.pdf](http://versor.mat.ucsb.edu/masters_appendix.pdf)

The author's thesis is worth a look:
[http://versor.mat.ucsb.edu/ArticulatingSpace.pdf](http://versor.mat.ucsb.edu/ArticulatingSpace.pdf)

~~~
grp
Nice to see Curtis Roads in the thesis!

------
tw1010
Geometric algebra seems to be a trendy subject on HN right now. Just so you
guys know, this is only the top of the iceberg. If you feel like there are
aspects to this theory that are arbitrary (e.g. things to do with
determinants) or if you have some suspicion that there's a big rich deeper
understanding which all this is pointing towards, you're right. Don't be
satisfied with just this. Go study more pure mathematics. It's a lot richer
and more satisfying than you might imagine.

------
wiz21c
Dam, I wish I knew about that before. It looks so much more "logical". The
video also says that ray/triangle intersection is safer on the rounding
error/accuracy side. Is it true ?

~~~
vanderZwan
The comment about cross and dot product just being given to you struck a chord
with me. I had a hard time grokking them when they were introduced to me
because I had no first-principle basis for making sense of why it makes sense.
The lack of pictures didn't help either.

------
eggy
I have been studying GA ever since first hearing about it 10 years ago. David
Hestenes book, "New Foundations for Classical Mechanics" was my first foray
followed by "Geometric Algebra for Physicists" by Doran and Lasenby, however
lately I have been focusing a on GA for computer graphics instead of physics.
I am working through Euclid's Elements in parallel. I love the work of Pablo
Colapinto (wolftype) [1]. He created a C++ library for GA, and somebody made
the library for JS. His academic papers are inspiring and clear. He also has
some really good Vimeo videos showcasing his work under Wolftype.

The history of GA is a solid example of how it is not always the best idea
that takes hold. Gibbs and vectors and quaternions became the way.

    
    
      [1]  http://versor.mat.ucsb.edu/

------
stephengillie
This is an hour long video. It's there a summary of key points?

~~~
Const-me
In mathematics, there’re more general operators besides cross and dot
products. Wedge product = exterior product, the symbol is ^. And anti-wedge
product = interior product, the symbol is ⨼. When applied to vectors, they
produce not just vectors but various more interesting things.

In 3D space, vector ^ vector makes a bi-vector. In 3D, it contains 3 scalar
components just like a vector, but the meaning is different (can be
interpreted as an oriented area), and multiplication by matrix has different
formula. That different formula’s the reason why normals need different
formula to transform by a matrix.

In 4D homogenous space things become even more interesting. vector ^ vector
produces a bi-vector. In 4D space, that thing has 6 scalar components, and its
projection to W=1.0 3D space is a directed infinite line. Bi-vector ^ vector =
a tri-vector, that thing has 4 scalar components, and its projection to W=1.0
3D space is an infinite oriented plane. Then, anti-wedge product can be used
to find intersection of these things, tri-vector ⨼ tri-vector = bi-vector =
the line intersecting two planes, tri-vector ⨼ bi-vector = vector = the point
where line intersected a plane, and so on.

Mathematically, these operators are quite simple and therefore fast to
compute, e.g. for 3D vectors ^ is same as cross product.

[https://en.wikipedia.org/wiki/Exterior_algebra](https://en.wikipedia.org/wiki/Exterior_algebra)

~~~
improbable22
This is correct.

Another common terminology is that a vector is a 1-form, and a bi-vector a
2-form. The wedge of an n-form and an m-form is an (n+m) form, which
generalises the cross product.

To define the dot product you need the notion of a Hodge star, which maps an
n-form to a (D-n)-form where D is the dimension of the ambient space.

If you learned linear algebra, or especially vector calculus, without learning
these things then you were cheated out of the best bits, and I encourage you
to rectify this! The general picture is actually clearer than the 2D or 3D one
usually taught, in which some things happen to co-incide.

[https://en.wikipedia.org/wiki/Differential_form](https://en.wikipedia.org/wiki/Differential_form)
isn't amazing but will give you an idea what to google.

~~~
vanderZwan
We should get 3blue1brown to do a series on this!

------
c517402
The Geometric Algebra version of Kramer's rule is one of coolest most
insightful things I've seen. Good examples can be found in the opening
chapters of "Geometric Algebra for Computer Science" by Dorst, Fontijne, &
Mann.

------
Ryudas
I'm still just a student, but I keep finding myself humbled and amazed at how
much deeper any field I come across truly is... Even though most of this goes
over my head for now, I'm sure, with more practice and study, I'll come to a
greater understanding of it.

