Rect = function(a, b, width, height) {
            if (arguments.length === 2) {
              //then it should've been 2 Vec2D's
              if (!internals.has.XY(a)) {
                throw new Error("Rect received incorrect parameters");
              } else {
                this.x = a.x;
                this.y = a.y;
                this.width = b.x - this.x;
                this.height = b.y - this.y;
              }
            } else if (arguments.length == 4) {
              this.x = a;
              this.y = b;
              this.width = width;
              this.height = height;
            } else if (arguments.length === 1) {
              //object literal with x,y,width,height
              var o = arguments[0];
              if (internals.has.XYWidthHeight(o)) {
                this.x = o.x;
                this.y = o.y;
                this.width = o.width;
                this.height = o.height;
              }
            } else if (arguments.length > 0) {
              throw new Error("Rect received incorrect parameters");
            }
          }
@class
@member toxi
@param {Number} [x]
@param {Number} [y]
@param {Number} [width]
@param {Number} [height]