quaternion.js
function(v) {

      // [0, v'] = Q * [0, v] * Q'

      // Q
      var w1 = this['w'];
      var x1 = this['x'];
      var y1 = this['y'];
      var z1 = this['z'];

      // [0, v]
      var w2 = 0;
      var x2 = v[0];
      var y2 = v[1];
      var z2 = v[2];

      // Q * [0, v]
      var w3 = /*w1 * w2*/ -x1 * x2 - y1 * y2 - z1 * z2;
      var x3 = w1 * x2 + /*x1 * w2 +*/ y1 * z2 - z1 * y2;
      var y3 = w1 * y2 + /*y1 * w2 +*/ z1 * x2 - x1 * z2;
      var z3 = w1 * z2 + /*z1 * w2 +*/ x1 * y2 - y1 * x2;

      var w4 = w3 * w1 + x3 * x1 + y3 * y1 + z3 * z1;
      var x4 = x3 * w1 - w3 * x1 - y3 * z1 + z3 * y1;
      var y4 = y3 * w1 - w3 * y1 - z3 * x1 + x3 * z1;
      var z4 = z3 * w1 - w3 * z1 - x3 * y1 + y3 * x1;

      return [x4, y4, z4];
    }
function(v) {

      // [0, v'] = Q * [0, v] * Q'

      // Q
      var w1 = this['w'];
      var x1 = this['x'];
      var y1 = this['y'];
      var z1 = this['z'];

      // [0, v]
      var w2 = 0;
      var x2 = v[0];
      var y2 = v[1];
      var z2 = v[2];

      // Q * [0, v]
      var w3 = /*w1 * w2*/ -x1 * x2 - y1 * y2 - z1 * z2;
      var x3 = w1 * x2 + /*x1 * w2 +*/ y1 * z2 - z1 * y2;
      var y3 = w1 * y2 + /*y1 * w2 +*/ z1 * x2 - x1 * z2;
      var z3 = w1 * z2 + /*z1 * w2 +*/ x1 * y2 - y1 * x2;

      var w4 = w3 * w1 + x3 * x1 + y3 * y1 + z3 * z1;
      var x4 = x3 * w1 - w3 * x1 - y3 * z1 + z3 * y1;
      var y4 = y3 * w1 - w3 * y1 - z3 * x1 + x3 * z1;
      var z4 = z3 * w1 - w3 * z1 - x3 * y1 + y3 * x1;

      return [x4, y4, z4];
    }
function ( v ) { // [0, v'] = Q * [0, v] * Q' // Q var w1 = this [ 'w' ] ; var x1 = this [ 'x' ] ; var y1 = this [ 'y' ] ; var z1 = this [ 'z' ] ; // [0, v] var w2 = 0 ; var x2 = v [ 0 ] ; var y2 = v [ 1 ] ; var z2 = v [ 2 ] ; // Q * [0, v] var w3 = /*w1 * w2*/ - x1 * x2 - y1 * y2 - z1 * z2 ; var x3 = w1 * x2 + /*x1 * w2 +*/ y1 * z2 - z1 * y2 ; var y3 = w1 * y2 + /*y1 * w2 +*/ z1 * x2 - x1 * z2 ; var z3 = w1 * z2 + /*z1 * w2 +*/ x1 * y2 - y1 * x2 ; var w4 = w3 * w1 + x3 * x1 + y3 * y1 + z3 * z1 ; var x4 = x3 * w1 - w3 * x1 - y3 * z1 + z3 * y1 ; var y4 = y3 * w1 - w3 * y1 - z3 * x1 + x3 * z1 ; var z4 = z3 * w1 - w3 * z1 - x3 * y1 + y3 * x1 ; return [ x4 , y4 , z4 ] ; }
Rotates a vector according to the current quaternion

@param {Array} v The vector to be rotated
@returns {Array}
Rotates a vector according to the current quaternion