6 ms·
I've played with GA for a while, bought a couple of books, enjoyed the math, experimented with writing my own library. But, as TTProgram's comment, I've yet to
by sago 11y ago
I've played with GA for a while, bought a couple of books, enjoyed the math, experimented with writing my own library. But, as TTProgram's comment, I've yet to find an application where it clearly improves on high-school vectors.
I'm aware that Geomerics purportedly used it for doing global illumination calculations, but there was scant specifics (understandably) about the actual implementation. So we don't know in what capacity it was used.
I've heard it praised for physics applications, but I haven't seen anyone walk through, say, a simple rigid body simulator and show its improvement.
I've heard it spoken of as the future of ray tracing, but again I've not seen anyone willing to put an implementation (even a toy) up against a ray tracer that you could write in an hour with Gibb's vectors.
On the contrary, when I've tried to use it, the complexity of GA just makes it impractical. The problem with 4 or 5 dimensional GA for doing work in 3D, is that we end up dealing with 16 or 32 values per object (if you unify vectors, bivectors, etc), or else having five or six specialised forms of object plus their combinations (if you keep them separate), with potentially hundreds of specialisations of basic operation. This isn't just me, the GA libraries around have this bloat. I've just not found an application in which that massive increase in storage, computation and implementation complexity is worth it.
Which makes sense. In a regular vector based system, we might use vectors and quaternions (2 things) to model rigid bodies. We can do a lot with those. But it isn't clear what thing is difficult or inelegant to model with them, that a trivector/scalar would be the right tool for. So that extra flexibility to be able to store such exotic mathematical objects is a waste for computer and programmer.
I came to the conclusion that GA-advocacy at the moment is mostly a true-believer type thing. True believers will tell you over and over how important it is to modelling 3d space, but rarely show you a worked example of it being easier. I am not cynical enough to think it has no killer applications, but I've yet to find them. And I would dearly love to.
- jacobolus 11y agoThe real problem is that it takes quite a bit of practical problem-solving experience to get used to a mathematical language, months or years of work, to really become fluent with it. The same is equally true of trigonometry, vectors, complex analysis, quaternions, calculus, matrices, spinors, group theory, differential forms, manifolds, etc. etc. But with a mainstream bit of technology, you can go to any good university math department and sign up for a course on the subject. You can take your pick of 100 textbooks. You can read resources aimed at applying specific tools to any number of concrete practical uses. You can often assume that people with a math, science, or engineering degree are already familiar with the technology and understand how it works. You can go find open source implementations of tools built using that technology. Etc. As a result, we don’t remember how hard all those tools were to learn, and how much work went into building up the conceptual ecosystem. With a non-mainstream bit of technology, you get to choose from a small handful of resources, often aimed at an audience you aren’t properly a member of or aimed at uses you don’t care about and missing parts that you need. Often best approaches for solving particular problems haven’t been worked out yet. From one source to another, notation conventions and choices of model details can vary, making it hard to compare sources, notice errors, or communicate ideas. Concrete code implementations have seen little scrutiny and so are likely to be incomplete, inefficient, and buggy. This is a problem with any difficult new bit of technology. Sometimes it takes decades or even centuries for a piece of mathematical technology to go from introduction to wide adoption. Sometimes they don’t make it or sit abandoned on the shelf for a while. As far as I can tell mathematicians haven’t adopted Geometric Algebra for a simple reason: Mathematicians make their living proving new theorems, and GA is equally/less powerful (in a theoretical sense) than existing abstractions they have, so as a result isn’t particularly useful for their proofs. Its advantages are as a sort of “refactoring” of a bunch of existing technology, and it’s usually a career limiting move in any field to spend too much of your time refactoring, however advantageous it might be for humanity in the long run. If you’re interested in physics applications, you should check out Hestenes’s book New Foundations for Classical Mechanics, which is pretty good. I’m particularly impressed with the completeness of the treatment of rotations and rigid body mechanics in chapters 5 and 7. General relativity is a field where Geometric Algebra already sees a fair amount of use in the academic literature. Hestenes has also written papers which sketch promising approaches to electrodynamics, quantum mechanics, etc., and the guys at Cambridge have been working on those a bit, but it’ll probably take a large group of others to really flesh it out. > On the contrary, when I've tried to use it, the complexity of GA just makes it impractical. The problem with 4 or 5 dimensional GA for doing work in 3D, is that we end up dealing with 16 or 32 values per object (if you unify vectors, bivectors, etc), or else having five or six specialised forms of object plus their combinations (if you keep them separate), with potentially hundreds of specialisations of basic operation. This isn't just me, the GA libraries around have this bloat. This is two tricky problems: (1) In most cases Geometric Algebra solutions to problems don’t essentially require more computation than other approaches, but figuring out how to write efficient practical implementations (especially against our current hardware and software which is heavily optimized for solving matrix problems) is non-trivial and hasn’t really seen that much work yet. (2) Existing programming languages really aren’t optimized syntactically for interacting with multidimensional objects in a natural way. Trying to cram a GA system into C++ or Java (e.g.) is just asking for a bloated and confusing syntactic nightmare. You see the same problem with trying to write code for doing matrix algebra in those languages, but at least we have a lot of experience with the domain and there are languages like Matlab or Julia or libraries like NumPy that make things much nicer. Nothing like those exist for Geometric Algebra, and it’s a non-trivial problem to solve.
- sago 11y agoI agree on all fronts. I think GA is a poor choice for practical programming for the same reasons you identify: nobody knows how to do it well, tools / architectures are not made for it, and nobody has publicly demonstrated its utility on a practical problem in my domain yet (I intended to, and failed). The second issue, about performance, makes me slightly skeptical of the 'made with GA' claims of Geomeric's engine. I don't doubt there's a GA system in there doing something, but I wonder how much of the actual hard problems in global illumination it is handling, given that global illumination is primarily compute-bound. As I said, I'd like to be proven wrong. The math does have nice features in the abstract (as you point out).
- jacobolus 11y agoBy the way, it’s totally off topic (I’d email but you don’t have an email listed in your HN profile), but on the subject of new mathematical technologies with practical application, I’ve really been enjoying learning about this thing for the last month or two: http://www.chebfun.org http://www.chebfun.org Here are a couple of hour-long lecture videos https://www.youtube.com/watch?v=cQp-kB9EOQs https://www.youtube.com/watch?v=cQp-kB9EOQs http://downloads.sms.cam.ac.uk/1160831/1160835.mp4 http://downloads.sms.cam.ac.uk/1160831/1160835.mp4 and the first 6 chapters of a book explaining the basics of the underlying theory are freely available online (the rest of the book is great too) http://www.chebfun.org/ATAP/ http://www.chebfun.org/ATAP/ Basic concept is to approximate functions as high-degree polynomials, to within machine precision, and then do operations on those approximations instead of on the original functions, at each step chucking out any coefficients which are smaller than machine precision. This in many cases provides a dramatic speed boost over existing methods for taking integrals/derivatives, finding roots, solving differential equations, convolution, etc. etc., while staying extremely accurate, much better than discrete solutions. It’s not universally applicable to all functions (for obvious reasons) or all problems, but the team responsible has really done an incredible amount of solid work on the project. Apparently it’s 10+ years old now, but nobody I’ve asked has ever heard of it before. Which is kind of surprising, because it seems amazing to me so far. Unfortunately stuck as a Matlab library for the moment (there are partial ports to NumPy and Julia but they are very feature poor compared to the Matlab version).
- reagency 11y agoGA is for comprehension, not computation. It is like a high level functional language, compared to Fortran. Compare how hard it is to compute complicated matrix arithmetic in haskell vs fortran, vs describing symmetries in same.
- reagency 11y agoGA is for comprehension, not computation. It is like a high level functional language, compared to Fortran. Compare how hard it is to compute complicated matrix arithmetic in haskell vs fortran, vs describing symmetries in same.
- jules 11y agoI do agree that GA is overhyped, but it's definitely not useless. GA brings many separate concepts into a common framework. He's a couple of things that are just ugly: - Cross product only works in 3d - Why is it that the cross product seems mysteriously related to determinants? - Multivariate calculus as typically taught is very ugly - Complex numbers for 2d, quaternions for 3d, then what? - Rotations/reflections using linear algebra - Cauchy's integral formula, Stokes' theorem, Helmholz decomposition, etc. - Etcetera GA just makes all of that much nicer and brings it together into a coherent framework. Here's a simple problem that illustrates why GA is nice: given 3 points A,B,C in 2-d space with integer coordinates, determine whether B is on the line segment AC. Now do it in 3-d, and then in n-d.