5 ms·
Original author here, it is absolutely my goal that the library should be usable without needing to understand the ins and outs of GA. To this end, I've started
by ninepoints 7y ago
Original author here, it is absolutely my goal that the library should be usable without needing to understand the ins and outs of GA. To this end, I've started adding a bunch of "helper" functions that do tasks like projecting a point onto a plane, or identifying the line through a pointer parallel to another line, etc.
I've been (slowly) working on additional documentation in the meantime and didn't expect to see the animation article hit the frontpage :). That said, in the meantime, there is a GREAT cheatsheet for all the relevant formulae here: https://bivector.net/tools.html https://bivector.net/tools.html (scroll down to the bottom). You can get the PDF version here: https://bivector.net/3DPGA.pdf https://bivector.net/3DPGA.pdf
- auggierose 7y agoI was wondering, once you've abstracted from the GA bits enough, is there any point of using GA at all? I like GA as well, just wondering what it gives you once you've abstracted it away. Or in other words, are there aspects of GA that cannot be abstracted away like that?
- amelius 7y agoI guess you can abstract away a lot, but there will always be questions that require you to go back to the math. For example: a use would be to set up a transformation that projects points onto a plane and a library could cover that. But consider the question of having a bunch of points and (paired with them) projected points and given the task of computing the original projection transform. If the library doesn't contain that operation you'd have to do it yourself.
- modeless 7y agoThe main benefit I see is the generality of the formulas with no special cases for things like parallel lines. That should still work.
- ninepoints 7y agoYes actually :) It took me a long time to actually decide to invest in GA because the sentiment I had was "it just replaces what I already know" and what I knew at the time was matrices, quaternions, and dual quaternions. It turns out, I was pretty wrong in that respect. For example, in the current predominant formulism, it's awkward to rotate a line with a quaternion, then identify the dual quaternion that maps that line to yet another line, then apply that dual quaternion to a point. In GA, this just works (mind exploding gif). Or, I can construct a line between two points, then find the quaternion that maps a different line to that one, and convert it to a matrix to do "look at" transforms in a shader. Also just works. I think the more I use GA, the more elegant I find it, and it takes me well past the formulism I used to know (which is still useful from time to time, but far less expressive). While I could provide helpers for all the common operations, the operators in GA will always have their use because... there's just so much you can do with it. At some point, the library will just because unwieldy/large. I haven't necessarily found the sweet spot yet for size/convenience, but I hope to converge there over time. Provide enough to be usable for most people, while at the same time being a launchpad for learning more about the abstraction itself. From an implementation point of view, I've found a number of optimizations that were made easier (or even possible) with GA that I hadn't identified despite working with quaternions for years before.
- auggierose 7y agoOk, thank you, very helpful. So I guess your opinion on this is, if you know enough GA, then GA becomes the best library you could think of.
- ninepoints 7y agoYup, now that I've "swallowed the red pill" so to speak, I can't even look at quats/dual-quats in the same way. They are very much a small cross-section of something much bigger (more expressive/powerful/etc).
- modeless 7y agoYes, something like that cheat sheet but with code instead of formulas. And more helper functions would be great.