Hacker News new | past | comments | ask | show | jobs | submit login

Having written professionally about quaternions and GA, and having implemented them multiple times in professional engines, GA is simply slower and worse to use (until you replace them in the special case and put back quaternions).

I recommend every 3D engine keep quaternions - they work well for their task.

Here's [1] one example from the godfather of GA demonstrating how poorly GA performs

[1] https://webspace.science.uu.nl/~kreve101/asci/GAraytracer.pd...




It seems like leaning into support from the type system of modern, static-typed languages like C++ could get us the conceptual advantage of GA with the performance of ordinary 3D linear algrebra, by representing knowledge of zero elements in such a way that operations with them shake out.

It is another trick to map this to SIMD operations with vector units or GPUs in modern CPUs, but that should be no harder than doing the same thing with quaternions.


>could get us the conceptual advantage of GA with the performance of ordinary 3D linear algrebra

People have tried this for well over 20 years, and it has never once panned out. It's simply not possible, since the representation required for Clifford Algebras is simply larger than for a quat. C++ static typed engines with all the template magic, or even super optimized hand rolled GA engines, are simply not performant compared to the same effort on a traditional linear algebra one.

Look over the writings of the authors in the paper I linked - they're gods in the GA field, and they've tried for decades to get it to work, as have many others (I worked on it 20ish years ago too..).

Go ahead and reinvent it all. I suspect you'll eventually reach the same conclusion many have before.


I doubt any recent additions to C++ would make it any easier. So, I am ready to give up on it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: