library quaternion