views:

1488

answers:

6

Any good libraries for quaternion calculations in C/C++ ?

Side note: any good tutorials/examples? I've google it and been to the first few pages but maybe you have have some demos/labs from compsci or math courses you could/would share?

Thanks

+3  A: 

You could try with Boost - usually good place to start with. They have a dedicated sublibrary for that.

As for the examples look at the documentation and the unit tests that come along with Boost.

Anonymous
+3  A: 

DirectX has its own quaternion functions, as do several other 3D libraries.

In my opinion, the best way to learn how quaternions work is to plow through the math yourself. The Wikipedia page on quaternions and conversion contain all the formulas you need. I wrote my own quaternion library from that :) (It's in Haskell, so I won't bother to post it.)

ephemient
Good idea with DirectX and graphics. Learning can produce some appealing visual effects.
Anonymous
It's really not that hard to do yourself, if you can't find the libraries. I had no problem with it and my IT math training was very limited (computer science business degree, not pure science).
Brian Knoblauch
+1  A: 

For documentation on quaternions, check out 3D graphics text books. They are simply matrices that produce the effect of 3D rotation using multiplication instead of computationally expensive trigonometry.

sam
+1  A: 

I'm a fan of the Irrlicht quaternion class. It is zlib licensed and is fairly easy to extract from Irrlicht:

Jeff M
A: 

There's Eigen, a templated library of math and geometry stuff used in Blender and by KDE programs, which has a slick Quaternion class defined in a single .h file.

Info at http://eigen.tuxfamily.org/index.php?title=Main%5FPage and http://www.ohloh.net/p/5393

DarenW
A: 

If you decide to roll your own, or actually want to understand the math behind the code (useful for debugging), I highly recommend Martin Baker's website. It looks primitive, but the explanations are thorough and easy to follow, and he also provides code in places.

SuperElectric