code: function _Quaternion(x, y, z, w) {
    if(!x || !util.isNumber(x)) x = 0;
    if(!y || !util.isNumber(y)) y = 0;
    if(!z || !util.isNumber(z)) z = 0;
    if(w === undefined || !util.isNumber(w)) w = 1;
  
    var unitCoordinates = _normalizedCoordinates(x, y, z, w);
    x = unitCoordinates.x;
    y = unitCoordinates.y;
    z = unitCoordinates.z;
    w = unitCoordinates.w;
  
    readonly(this, "x", x);
    readonly(this, "y", y);
    readonly(this, "z", z);
    readonly(this, "w", w);
    readonly(this, "eulerAngles", _getEulerAngles(this));
    readonly(this, "angleAxis", _getAngleAxis(this));
  }
docs: @class
  Creates a unit quaternion according to the given x, y, z, w values
  
  @param {Number} x, y, z, w
  @returns {Quaternion} unit quaternion