Understanding Quaternions | 3D Game Engine Programming