src/geom.js
function(out, axis, angle) {
  var sa = Math.sin(angle), ca = Math.cos(angle), x = axis[0], y = axis[1],
      z = axis[2], xx = x * x, xy = x * y, xz = x * z, yy = y * y, yz = y * z,
      zz = z * z;

  out[0] = xx + ca - xx * ca;
  out[1] = xy - ca * xy - sa * z;
  out[2] = xz - ca * xz + sa * y;
  out[3] = xy - ca * xy + sa * z;
  out[4] = yy + ca - ca * yy;
  out[5] = yz - ca * yz - sa * x;
  out[6] = xz - ca * xz - sa * y;
  out[7] = yz - ca * yz + sa * x;
  out[8] = zz + ca - ca * zz;
  return out;
}
function(out, axis, angle) {
  var sa = Math.sin(angle), ca = Math.cos(angle), x = axis[0], y = axis[1],
      z = axis[2], xx = x * x, xy = x * y, xz = x * z, yy = y * y, yz = y * z,
      zz = z * z;

  out[0] = xx + ca - xx * ca;
  out[1] = xy - ca * xy - sa * z;
  out[2] = xz - ca * xz + sa * y;
  out[3] = xy - ca * xy + sa * z;
  out[4] = yy + ca - ca * yy;
  out[5] = yz - ca * yz - sa * x;
  out[6] = xz - ca * xz - sa * y;
  out[7] = yz - ca * yz + sa * x;
  out[8] = zz + ca - ca * zz;
  return out;
}
function ( out , axis , angle ) { var sa = Math . sin ( angle ) , ca = Math . cos ( angle ) , x = axis [ 0 ] , y = axis [ 1 ] , z = axis [ 2 ] , xx = x * x , xy = x * y , xz = x * z , yy = y * y , yz = y * z , zz = z * z ; out [ 0 ] = xx + ca - xx * ca ; out [ 1 ] = xy - ca * xy - sa * z ; out [ 2 ] = xz - ca * xz + sa * y ; out [ 3 ] = xy - ca * xy + sa * z ; out [ 4 ] = yy + ca - ca * yy ; out [ 5 ] = yz - ca * yz - sa * x ; out [ 6 ] = xz - ca * xz - sa * y ; out [ 7 ] = yz - ca * yz + sa * x ; out [ 8 ] = zz + ca - ca * zz ; return out ; }
assumes that axis is normalized. don't expect  to get meaningful results when it's not
assumes that axis is normalized . don t expect to get meaningful results when it s not