Earlier quoted context omitted.
From the sounds of it, I think you'd be much more happy working with differential forms! Differential forms use only the wedge product and a duality mapping known as the hodge dual (It's the GA equivalent of multiplying by the psuedoscalar). Differnetial forms easily supply 90% of the nice things in GA, so if you're unhappy with the geomtric product, I'd say that differnetial forms are perfect. Geometric algebra will…
I learned about differential forms in my physics degree, and then later discovered that the exterior algebra made a lot more sense if you introduced it separately. Basically it seems like the exterior algebra is useful in many settings, and differential-forms are just one rather confusing application of it. My current opinion is that exterior algebra should, someday, be taught first (around the time of linear algebra…
Let's remove Quaternions from every 3D Engine
131–140 of 184 posts
Re: Let's remove Quaternions from every 3D Engine
#132Quats can be represented with (x, y, z, w). Rotors require a vector, bivector and angle (vec_x, vec_y, vec_z, bivec_x, bivec_y, bivec_z, theta). If you are storing or transmitting a quaternion it consumes less space and in 3D simulations or games a quaternion is therefore advantageous. 3D file formats would explode in size if rotors were used. And, more network packet fragments would be needed to encapsulate a world…
Re: Let's remove Quaternions from every 3D Engine
#133Earlier quoted context omitted.
I’d love to see a small GitHub repo that contains Rotators and Quaternions with compared results.
The results are going to be the same. The arithmetic involved is literally identical. The real power of the GA version is that you can more clearly geometrically explain what is going on, and you can generalize everything to pseudo-Euclidean spaces or to lower or higher dimensions. GA gives you some more algebraic tools to work with, so when you are trying to write your proofs they are clearer and more concise.
Things like the ability to "generalize everything to pseudo-Euclidean spaces or to lower or higher dimensions", algebraic tools and writing proofs are not relevant to the needs that a 3D engine serves - 3D engines are written to fulfil requirements of engine users (not even engine writers), who won't be doing such things, that's below the abstraction level that's handled by the engine. So from that perspective we're comparing GA-filled black box with a quaternion-filled black box, and either (a) the GA box has better performance; or (b) the GA box has different results that are arguably more correct; or (c) the GA box has a substantially easier API; or (d) the GA box is useless.
It seems to me that you might be aiming at the (c) benefit with all the arguments that this math is easier to understand, but I'm not entirely convinced based on the article; perhaps an illustration of the expected code differences in using a non-quaternion GA-based engine (are there any?) would be helpful. If we can have an engine/API that's easier to understand for beginners and that makes all the basic tutorials simpler, then that would be a nice thing to have.
Re: Let's remove Quaternions from every 3D Engine
#134Earlier quoted context omitted.
Thank you for posting this, I found it both very enlightening and a pretty fun internet-drama read :D Interesting that the original complaint of that article/thread and this one are both the same - ie. quaternions are 'too hard to understand', and people 'use them without knowing how they work'. With this being posted so soon after https://news.ycombinator.com/item?id=18310788 , I feel like that complaint is less val…
I think matrices are easier for people to visualize because they can think about them as a vector frame and coordinate transformations. Quaternions are seen as this abstract 4D space somehow containing 3D space transformations, and people have a much harder time visualizing 4D space. I do not think spending a lot of time trying to visualize this 4D space, like this video does, is the right way to go. Rotors make that…
Thinking about a scalar + bivector as the quotient of two vectors or as the composition of two reflections is easy enough. But that still doesn’t yield a solid understanding of how rotation works – 3D rotation is subtle and tricky, even for people who have pretty good spatial reasoning and a lot of experience working with solid geometry / 3D design.
I have been thinking about the best interactive diagram(s) for giving people a good intuition about that for a long time, and I have some ideas but I still haven’t implemented anything and I’m not sure how well it will work.
Re: Let's remove Quaternions from every 3D Engine
#135So what is the equivalent structure I'd use with trivectors to combine arbitrary 3D transformatinos into a single operation, like every 3D engine needs?
The linked Versor library was also not very helpful -- it has the rotate operation on a vector, but I found no 'make rotation' and 'make translation' and 'make frustrum' and 'apply transformation' and 'concatenate transformation' operations.
Re: Let's remove Quaternions from every 3D Engine
#136There should be a way to write a library that translates geometric algebra notations into their corresponding quaternion ones, and reciprocally.
Re: Let's remove Quaternions from every 3D Engine
#137Earlier quoted context omitted.
The results are going to be the same. The arithmetic involved is literally identical. The real power of the GA version is that you can more clearly geometrically explain what is going on, and you can generalize everything to pseudo-Euclidean spaces or to lower or higher dimensions. GA gives you some more algebraic tools to work with, so when you are trying to write your proofs they are clearer and more concise.
If the results are going to be the same, then what's the possible benefit for any user of a 3D engine? Things like the ability to "generalize everything to pseudo-Euclidean spaces or to lower or higher dimensions", algebraic tools and writing proofs are not relevant to the needs that a 3D engine serves - 3D engines are written to fulfil requirements of engine users (not even engine writers), who won't be doing such t…
If it is going to be compiled down to the same binary code, what's the possible benefit of any higher level language?
Re: Let's remove Quaternions from every 3D Engine
#138Earlier quoted context omitted.
I think that last point really needs to start with a thorough reform of basic mathematical education (starting from undergrad calculus) to have any chance of real success. The present mish-mash of notations, however disjointed, lends itself very well to teaching people who don't know much beyond basic real analysis and differential equations. You can't just throw them in a GA-based E&M class without completely changi…
I should be clear here that my longing for a physics community that embraces GA should not be confused with any level of optimism that it'll actually happen. I agree its a monstrously difficult task and our current formalisms are more or less good enough. A man can dream though! One advantage I see in the GA treatment of E&M is in radiation. If one takes the Faraday bivector for a stationary charge (ie. the Coulumb f…
To get radiation fields, you need Maxwell's equations and boundary conditions. When you have those, what is the use of GA?
Re: Let's remove Quaternions from every 3D Engine
#139Earlier quoted context omitted.
I'd argue that this geoemtric algebra presented in the article is much more comprehensible than quaternions and also more useful!
But if the argument is "let's replace quaternions in 3D engines!" then the question is really more "Okay, so do they outperform quaternions, then??" because if you're writing the 3D engine, the underlying code only matters insofar as that it has to do what it's supposed to do. You don't need to understand why it works, just that known operations will lead to known intended results. And if you're _using_ a 3D engine,…
At some point, people will have to write and maintain these 3D engines. Having easier to grok maths at that point is a Good Thing.
Re: Let's remove Quaternions from every 3D Engine
#140Why not use Screw Theory?