A Bigger Mathematical Picture for Computer Graphics [video]
youtube.com
youtube.com
There is very interesting library: https://github.com/enkimute/ganja.js
They have been around for a while: (PDF) http://www.geomerics.com/wp-content/uploads/2014/03/agacse_d...
Imagine selling this: I've got a new idea, with a mere re-education campaign for our developers, major graphics engine overhaul, and... convincing NVIDIA or AMD to implement some GA specific optimizations in hardware. We can have a much more mathematically satisfying code base!
The cheat sheet is awesome. http://versor.mat.ucsb.edu/masters_appendix.pdf
The author's thesis is worth a look: http://versor.mat.ucsb.edu/ArticulatingSpace.pdf
Geometric Algebra is all over the place in the geometry processing community within graphics.
This makes me wonder why this hasn't been used in more cases... I have been messing around with parametric 3D models using regular 3D vectors, but getting to the bottom of this might make my life a lot easier.
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/ Old school | New school
----------------------------------------|-------------------------------------
Cross product -> axial vector | Wedge product -> bivector
Dot product | Antiwedge vector / antivector
Scalar triple product | Triple wedge product
Plücker coordinates | 4D bivectors
Operations in Plücker coordinates | 4D wedge / antiwedge products
Transform normals with inverse tranpose | Transform antivectors with adjugate transposeIn 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.
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 isn't amazing but will give you an idea what to google.
GA is not more general than linear algebra... i think of it as sitting between vector algebra (which often is too limited) and linear algebra (which is often too general).
All GA expressions are in LA (though they may be much uglier), not all LA expressions are in GA.