maedhros777

06-17-2010, 12:33 PM

Hi, I'm pretty new to quaternions and I've been reading Game Programming Gems (http://www.amazon.com/GAME-PROGRAMMING-GEMS-Mark-DeLoura/dp/1584500492). One of the sections is an introduction to quaternions, and it's established that if quaternion q represents a rotation of angle a around vector A, q = (cos(a/2), sin(a/2) * A). It also says that the result of vector p's rotation in such a manner is equal to qpq*, where q is normalized and q* is q's conjugate.

The book skips the explanation of why this works, but says "consider rotating the vector P by an angle a; about an axis A. Using geometry, you can work through the math, expanding everything out until eventually some terms in cos^2(a) and sin^2(a) turn up. These can be turned into cos(2a) and sin(2a) terms, and very soon you end up with a formula that looks a lot like the quaternion multiplication worked through previously."

Can anyone please explain how this property of quaternions can be proved? Because I've tried looking at the problem in various ways and I've never come up with anything involving cos^2(a) or sin^2(a), or any other reasoning, for that matter. Thank you for your help, in advance.

EDIT: I changed all the theta symbols to a, because the forum wasn't displaying it correctly.

The book skips the explanation of why this works, but says "consider rotating the vector P by an angle a; about an axis A. Using geometry, you can work through the math, expanding everything out until eventually some terms in cos^2(a) and sin^2(a) turn up. These can be turned into cos(2a) and sin(2a) terms, and very soon you end up with a formula that looks a lot like the quaternion multiplication worked through previously."

Can anyone please explain how this property of quaternions can be proved? Because I've tried looking at the problem in various ways and I've never come up with anything involving cos^2(a) or sin^2(a), or any other reasoning, for that matter. Thank you for your help, in advance.

EDIT: I changed all the theta symbols to a, because the forum wasn't displaying it correctly.