Live data from Hacker News

Let's remove Quaternions from every 3D Engine

marctenbosch.com

181–184 of 184 posts

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

#181
post #151

Earlier quoted context omitted.

This is closely related to the exterior algebra, which is where bivectors live. But I don't know much about Clifford algebras either. I didn't know that they are more directly connected to Quaternions. Thanks!

The 'geometric product' mentioned in the article is just Clifford's product. The 'geometric algebra' is the same thing as the Clifford algebra induced by the scalar product.

Ah got it. Thanks. Feels like I should have known that.

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

#182

Earlier quoted context omitted.

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,…

> 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. At some point, people will have t…

Yeah but here's the thing: if your math skills are good enough to write and maintain a 3D engine, quaternions are not the problem. They are super easy to work with, and material that explains how to use them is readily available.

Is "what they do" unintuitive? Sure, but I couldn't care less about whether someone can conceptualise _why_ they do what they do, I care about _that_ they do what they do, and that I can trust them to do that. If someone can't understand what geometric operation an non-geometric transformation might map to "in between the start state and the end state" then that someone is focussing on the wrong thing twice:

1. quaternion maths is not geometry, it's algebra. It has some nice geometric analogies when performing specific operations, but trying to understand them _as_ geometry and expecting them to make sense across the board is ridiculous, and 2. if you feel you need to understand the "intermediary" results of a 4 dimensional algebra before you're willing to write or maintain code that uses it, maybe you're putting your foot down in the wrong spot: this is a 3D engine. It's not "easy code that we over-complicated by using quaternions", it's stupidly complex code that we simplified by working with quaternions.

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

#183
post #166

Earlier quoted context omitted.

Can I ask you (and keldaris) what precisely you mean by geometric algebra, and how you would propose to teach it? I'm a math professor. To me "geometric algebra" refers to any use of geometry in mathematics to illuminate algebraic principles. There are very very many of these -- this article illustrates one good example. I try to incorporate intuition from geometry into my teaching whenever possible. It seems that th…

Geometric algebra has a definition that is more specific than any use of geometry to teach Elementary Algebra on real numbers. https://en.m.wikipedia.org/wiki/Geometric_algebra https://en.m.wikipedia.org/wiki/Clifford_algebra For teaching geometric algebra, there are curricula and textbooks available... http://geometry.mrao.cam.ac.uk/home/introduction-to-ga/ https://arxiv.org/abs/1205.5935v1 http://www.faculty.luther…

Thanks, I'll have a look!

This looks a bit too high-level to inform my undergraduate teaching, but certainly I could learn something from this.

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

#184
Excerpt: "It is strange because multiplying two vectors together gives the sum of two different things: a scalar and a bivector. However this is similar to how a complex number is the sum of a scalar and an "imaginary" number, so you might be used to it already. Here the bivector part corresponds to the "imaginary" part of the complex number. Except it is not "imaginary," it’s just a bivector, which we have a concrete picture of!"
Post reply on HN