Vector3 rotate(double angle, {Vector3 axis = OUT}) { //Use quaternions...because why not var quat = quaternionFromAngleAxis(angle, axis); return applyQuaternion(quat); }