MarkCC has a post about quaternions and the fact that they can be used for rotation, so I thought I’d chime in with exactly how they represent rotations.

A 2D rotation by an angle θ can be represented by the complex number on the unit circle

cos θ + i sin θ

Then multiplying complex numbers is the same as multiplying rotations.

A 3D rotation by an angle θ about a line defined by a unit vector (b,c,d) can be represented by the quaternion on the unit hypersphere

cos θ/2 + sin θ/2(bi + cj + dk)

Then multiplying quaternions is the same as multiplying rotations.

But why is it θ/2 instead of θ?

Well, in 3D, in some sense you have to rotate through 720° to really get back where you started from. There’s a nice animation of the Dirac Belt Trick that shows how you can remove a 720° twist from a belt without moving the ends. However, you can’t remove a 360° twist. The quaternions q and -q are different but both represent the same 3D rotation.

Andrew Hanson has some demonstration programs that show how quaternions do rotations. These accompany his book Visualizing Quaternions.


  1. #1 Greg Bakker
    August 8, 2006

    Jack Kuipers’ “Quaternions and Rotation Sequences” is also good. It’s applications based, very readable and diagrammatic.

    I don’t think it mentions the belt trick though.

  2. #2 Aidan
    August 8, 2006

    I use quaternions in my Monte Carlo simulations of real molecular systems. For what I do they are superior to rotation matrices because of their numerical stability.

    For the things I do it is necessary to have rotoinversion (improper rotation) as well. I do this by carrying along a flag in my code which tells me if this is a proper or improper rotation.

    I remember asking my mate (Theoretical Physicist) about quaternions when I first looked into them and he said “What do you want with them? Noone uses them anymore …”. Heh.

  3. #3 ben
    August 9, 2006

    Quaternions are fine, but I find that anytime you’re working in SO(3) or SE(3) it involves a lot of scribbling and crumpled up paper, no matter the framework. 😛

  4. #4 Matt McIrvin
    August 15, 2006

    The theoretical physicist probably didn’t know that unit quaternions and SU(2) are basically the same thing.

  5. #5 Ivan
    July 22, 2007

    Nice article. I stumbled upon this post while looking for 3-D rotation calculations in PHP. No PHP code but a very clear explanation. So thank you. I’ll make this site one of my regulars…


New comments have been temporarily disabled. Please check back soon.