Hacker News new | ask | show | jobs
by rowanG077 713 days ago
I didn't think quaternions are even exotic and have used the extensively to represent rotations. I'm not familiar with video games but it seems a pretty natural fit to the problem. What is the alternative that is so much better?
2 comments

In 3D space, rotors are quaternions with different labels. If rotors are better, then the only conclusion we can draw is that people don’t like the name “quaternion”.
They do sound weird.

I propose we call them fanciful numbers.

I mean if you're in highschool and poking under the hood of Roblox or whatever to write your first mod, rotor is a better name for the thing that manages rotations than quaternion.
I would go for something like “orientation”. Or “rotation”. Ordinary English words that represent what are, more or less, ordinary, familiar concepts.

The fact that it’s a “quaternion” or a “rotor” is kind of an implementation detail.

Of these four terms, Quaternion is the most precisely correct. The reason is that rotors are, by definition, constrained. Quaternions can take any value. Due to floating-point precision problems, your rotor will not always be exactly a rotor, but may some multivector which is not a rotor.

This is kind of like representing a point on a sphere using (x,y,z) coordinates. You can call it PointOnSphere or Vector. I would rather call it Vector, because PointOnSphere implies a constraint which won’t be exactly satisfied, and I want to be reminded of that fact. The type name (Vector here, and Quaternion above) represents the object’s structure and the constraints which are actually enforced by the underlying representation.

From your link: "We can notice that 3D Rotors look a lot like Quaternions". "In fact the code/math is basically the same!"
Yeah, why remove quaternions if the math is the same as with rotors? They also have their own value, without applications to geometry. The article is good, though.

BTW, it's easy to understand the relations between i,j,k if you're familiar with Pauli matrices.

The article itself says they are the same in 3D space. Not very convincing that they are actually better. In fact a rotor is a unit quaternion...
Thank you for this link.

I just dabbled in webgl/threejs and tried creating a small movement engine and was confused from beginning to end. Quaternions as a black box is pretty accurate.

To add to what the other guy said, rotors (by extension Clifford Algebra) is better. A fatal issue with Quaternions is that while they handle rotations perfectly, things like the norm or cross product of two vectors is messy.

This is unsurprising when several of your coordinates become -1 when multiplied. That's why historically Gibbs Heaviside (dot and cross product) became the dominant vector algebra over quaternions.

Clifford Algebra is the better than both, as you can seamlessly do dot, cross (wedge in CA) and can also embed quaternions within the system. I've heard that it can also accommodate some of the nonmetrical aspects that make differential forms appealing for manifold integration, but that's currently outside of my range of knowledge.