code: function(axis, theta) {
          var x, y, z, s, c, t, tx, ty;
          x = axis.x;
          y = axis.y;
          z = axis.z;
          s = Math.sin(theta);
          c = Math.cos(theta);
          t = 1 - c;
          tx = t * x;
          ty = t * y;
  		_TEMP.set(
  			tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z,
  			ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x,
  			t * z * z + c, 0, 0, 0, 0, 1
  		);
          return this.multiplySelf(_TEMP);
      }
docs: Applies rotation about arbitrary axis to matrix
  
  @param axis
  @param theta
  @return rotation applied to this matrix