fix a bug in quaternion