rem: rotateNormalized: rotateNormalized, projection: projection, repair: repair 
add: objAdd: objAdd, objRm: objRm, init: init, resize: resize, render: render, obj_list: obj_list, camera: camera, camera3: camera3, math: math, config: config 
context:     math = (function() {      //front-vector : va      //rotation-vector: vb      //all ortogonal      function rotateNormalized(va, vb, theta) {        var tmp = vec4.clone(va);        vec4.scaleAndAdd(va, va, va, Math.cos(theta)-1);        vec4.scaleAndAdd(va, va, vb, -Math.sin(theta));        vec4.scaleAndAdd(vb, vb, vb, Math.cos(theta)-1);        vec4.scaleAndAdd(vb, vb, tmp, Math.sin(theta));      }      //gets projection of va over vb      function projection(out,va,vb) {        vec4.scale(out, vb, vec4.dot(va,vb)/vec4.length(va));      }      //will reorthogonalize vectors      function repair(vx, vy, vz, vw) {        var length,          projection = new vec4.create();        //repair vx        projection(projection, vx, vy);        vec4.sub(vx,vx, projection);        projection(projection, vx, vz);        vec4.sub(vx,vx, projection);        projection(projection, vx, vw);        vec4.sub(vx,vx, projection);        vec4.normalize(vx, vx);        projection(projection, vy, vz);        vec4.sub(vy,vy, projection);        projection(projection, vy, vw);        vec4.sub(vy,vy, projection);        vec4.normalize(vy,vy);        projection(projection, vz, vw);        vec4.sub(vz,vz, projection);        vec4.normalize(vz,vz);        vec4.normalize(vw,vw);      }      return {        rotateNormalized: rotateNormalized,        projection: projection,        repair: repair      };    })();
meta: 5665	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5665/0f8ba5d109269d49d72be1d776721a5a867dd729/NEngine.js/clean/lib/NEngine.js