Hacker News Comments on
A Bigger Mathematical Picture for Computer Graphics
Waldir Pimenta
·
Youtube
·
149
HN points
·
2
HN comments
- This course is unranked · view top recommended courses
Hacker News Stories and Comments
All the comments and stories posted to Hacker News that reference this video.What you wrote has nothing to do with Eric's geometric antiproduct.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.
Here’s an appetizer from Eric Lengyel in the context of game development (or 3D graphics in general): https://m.youtube.com/watch?v=WZApQkDBr5oAnd here’s the in-depth stuff:
Geometric Algebra for Computer Science: http://www.geometricalgebra.net
⬐ tw1010Geometric 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.⬐ wiz21cDam, 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 ?⬐ ToJans⬐ eggy+1This 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.
⬐ vanderZwanThe 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.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/
⬐ stephengillieThis is an hour long video. It's there a summary of key points?⬐ 1wd⬐ c517402At the ~one hour mark there's a summary slide: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 transpose
⬐ Const-meIn 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.
⬐ paperworkDoes it make sense to study GA for use in data science? My linear algebra itself is rusty so I'm not clear if the more general operations of GA make it well suited to studying stats/machine learning concepts.⬐ zardo⬐ improbable22It does... If you want to develop new methods that use GA concepts, or you want more perspective on geometric notions.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.
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 isn't amazing but will give you an idea what to google.
⬐ vanderZwanWe should get 3blue1brown to do a series on this!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.⬐ RyudasI'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.⬐ unaoI 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
⬐ yeurekaThere is a company that based its business on a rendering engine that uses Geometric Algebra.They have been around for a while: (PDF) http://www.geomerics.com/wp-content/uploads/2014/03/agacse_d...
⬐ NoneNone⬐ santaclaus> I cannot understand why GA is not more popularGeometric Algebra is all over the place in the geometry processing community within graphics.
⬐ theohOne reason why GA hasn't caught fire in graphics is the complexity: for many tasks it is slower that the old way. AFAIK.⬐ letlambda⬐ letlambdaThat may be largely due to massive amount of work put into the old way. Even if GA is just fundamentally a better idea for doing graphics, it doesn't have decades of software and hardware development to back it up.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!
⬐ analognoiseThis sounds like a job for an FPGA-based graphics system as a prototype.C++ GA library. https://github.com/wolftype/versorThe 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
⬐ grpNice to see Curtis Roads in the thesis!