Quaternion are a very useful tool in 3D, but also one that is unintuitive and difficult to get a natural feeling about. The talk Jim Van Verth, of EssentialMath, gave earlier at GDC2013 explains some facts about quaternions and how they work, by looking back at their discovery: Understand Quaternions.

**Update**: on a side note, here is a trick for faster quaternion – vector multiplication.

I optimized the quaternion rotation formula for a vector P and came up with this formula. Where v is the vector part of the quaternion and w is the scalar part. It runs about 15% faster than the formula that you posted here.

p’ = (v*v.dot(p) + v.cross(p)*(w))*2 + p*(w*w – v.dot(v))