function Quat() {
      var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Float32Array([0, 0, 0, 1]);
      var axisOrder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "XYZ";

      _classCallCheck(this, Quat);

      this.type = "Quat";
      this.elements = elements; // rotation axis order

      this.axisOrder = axisOrder;
    }
Here we create a Quat class object
   This is a really basic Quaternion class used for rotation calculations
   Highly based on https://github.com/mrdoob/three.js/blob/dev/src/math/Quaternion.js
     params :
   @elements (Float32Array of length 4): our quaternion array. Default to identity quaternion.
     returns :
   @this: our Quat class object
*