Live data from Hacker News

Let's remove Quaternions from every 3D Engine

marctenbosch.com

111–120 of 184 posts

Re: Let's remove Quaternions from every 3D Engine

#113
post #53

Earlier quoted context omitted.

It's very cool that the geometric product of any orthonormal basis for R^2 gives i as a "pseudoscalar". Let {e1,e2} be an orthonormal basis for R^2. Let i = e1e2. Then i^2 = e1e2e1e2 = -e1e1e2e2 (anticommutivity) = -(1)(1) = -1. Personally that alone is enough to justify learning more about geometric algebra.

That is true of the wedge product also, though. That's my point. The geometric product gives very little power over the wedge product, and when it does, it's massively non-intuitive how it works.

The wedge product of a bivector with itself is 0. To get your bivector to square to –1, you need to be using the geometric product.

Re: Let's remove Quaternions from every 3D Engine

#114
post #39

Texts on GA seem to start out saying "we're going to replace vector analysis with something intuitive and natural and eloquent and..." and then immediately introduce the "geometric product", which is neither intuitive, eloquent, or, as far as I can tell, natural. Its properties are found via formula-wrangling, and the results you get from it seem to just magically work, rather than being intuitive. Bivectors in gener…

By the way, the determinant of a matrix is just the outermorphism of the associated linear transformation applied to a unit pseudoscalar.

The outermorphism of a linear transformation is a useful and convenient (but sometimes tricky) concept. It gives you not only determinants, but also the application of your linear transformation to arbitrary multivectors.

Re: Let's remove Quaternions from every 3D Engine

#115
post #39

Texts on GA seem to start out saying "we're going to replace vector analysis with something intuitive and natural and eloquent and..." and then immediately introduce the "geometric product", which is neither intuitive, eloquent, or, as far as I can tell, natural. Its properties are found via formula-wrangling, and the results you get from it seem to just magically work, rather than being intuitive. Bivectors in gener…

By the way, the determinant of a matrix is just the outermorphism of the associated linear transformation applied to a unit pseudoscalar. The outermorphism of a linear transformation is a useful and convenient (but sometimes tricky) concept. It gives you not only determinants, but also the application of your linear transformation to arbitrary multivectors.

No the determinant is the isomorphism of the third latent moment of the orthonorm. Duh.

Re: Let's remove Quaternions from every 3D Engine

#116

Earlier quoted context omitted.

Yes, it does, because it is an identical representation to quaternions. Except it actually explains all the weirdness in quaternions without resorting to 4-space. This is because quaternions are a subalgebra of geometric algebra in 3-space.

there is nothing weird about 4-space, what do you mean?

Re-read what you are replying to - they didn't say 4D-space is weird but rather that quaternions are weird:

> all the weirdness in quaternions without resorting to 4-space

Re: Let's remove Quaternions from every 3D Engine

#117
post #21

I read through a bunch of this, and one part seems poorly explained. There’s a clear definition of the product of two vectors, but the result isn’t a vector — it’s a scalar plus a bivector. Then, by magic, three vectors get multiplied! But what does that even mean? Somehow a vector gets multiplied by a bivector, and the result is somehow still a vector. What’s going on?

The [Aside] section of "The Reflection Formula (Geometric Product Version) " http://marctenbosch.com/quaternions/#h_13 has the answer you seek ;)

I read that a couple times. I found it unsatisfying because you are dropping terms that happen to have a coefficient of zero without a clear explanation of how those terms are even well formed in the first place.

I suppose this could be answered if you explicitly stated what set the geometric product acted on. As a guess, and from skimming Wikipedia, it’s the direct sum of scalars, vectors, bivectors, etc, up through n-vectors. So 2 + x∧y + 3x∧y∧z is a valid output. And it’s probably straightforward to show that the geometric product is actually defined on this space.

(Hi Marc!)

Re: Let's remove Quaternions from every 3D Engine

#118

I'm no game developer. But wouldn't it be important for game engines to use the most performant approach. Is there a difference in performance when using rotors instead of quaternions?

No difference in the actual math used, just differences in how you approach understanding of the problem.

Re: Let's remove Quaternions from every 3D Engine

#119

Earlier 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.

I believe you. I work in code all day. I have a lot of code that works. I’d love to see code that also works but is easier to understand. If someone wants to remove something from every 3d engine then I’m going to need to see what the replacement looks like. In actual code.

I don't believe him.

I got a C- in Linear Algebra in college... I remember my Linear Algebra prof saying "maybe I'm being pedantic" when explaining a concept and I was like "wtf are you even talking about?"

I avoid all Math - and I think black boxes are great. The few times I've used functions with quaternions in game programming (I'm not a game programmer) they seemed really easy to use. I'm skeptical that a concept that is easy to understand for people with a Math background is easier to use in code for people like me.

Re: Let's remove Quaternions from every 3D Engine

#120

Tangential: Back in 2000 there was some debate about dropping quaternions in favor of a set of equivalent operations on plain matrices. https://www.gamedev.net/articles/programming/math-and-physic... The debate petered out when the proponents finished optimizing their implementation and found they had produced exactly the same code as the existing quaternion implementations. The only difference was the approach used…

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 valid now than it ever has been, but it's kind of interesting to think about why quaternions in particular draw so much fire when, honestly, I found matrices to be equally challenging at first. Is it just an education thing, since matrices are generally taught much earlier? Or is there some intuition in matrices that isn't present in quaternions? Both of them seem to be just 'do this math, then magic happens' unless you think about them a fair bit, and that was pretty challenging for both the first time round imo.

Post reply on HN