easytensor-0.3.1.0: src-ghcjs/Numeric/Matrix/Mat44.js
function h$easytensor_m4fromHom(v) {
'use strict';
var r = v.slice(0,3), t = v[3];
if (t !== 0) {
r[0] /= t; r[1] /= t; r[2] /= t;
}
return r;
}
function h$easytensor_m4translate(v) {
'use strict';
var m = new v.constructor(16);
m.set(v, 12);
m[0] = 1;
m[5] = 1;
m[10] = 1;
m[15] = 1;
return m;
}
function h$easytensor_m4rotateX(a) {
'use strict';
var c = Math.cos(a), s = Math.sin(a);
return [ 1, 0, 0, 0
, 0, c, s, 0
, 0,-s, c, 0
, 0, 0, 0, 1];
}
function h$easytensor_m4rotateY(a) {
'use strict';
var c = Math.cos(a), s = Math.sin(a);
return [ c, 0,-s, 0
, 0, 1, 0, 0
, s, 0, c, 0
, 0, 0, 0, 1];
}
function h$easytensor_m4rotateZ(a) {
'use strict';
var c = Math.cos(a), s = Math.sin(a);
return [ c, s, 0, 0
,-s, c, 0, 0
, 0, 0, 1, 0
, 0, 0, 0, 1];
}
function h$easytensor_m4rotate(vec, a) {
'use strict';
var c = Math.cos(a);
var s = Math.sin(a);
var c1 = 1 - c;
var x = vec[0], y = vec[1], z = vec[2];
return [ c + c1*x*x, c1*x*y + s*z, c1*x*z - s*y, 0
, c1*x*y - s*z, c + c1*y*y, c1*y*z + s*x, 0
, c1*x*z + s*y, c1*y*z - s*x, c + c1*z*z, 0
, 0, 0, 0, 1];
}
function h$easytensor_m4rotateEuler(x, y, z) {
'use strict';
var cx = Math.cos(x), sx = Math.sin(x), cy = Math.cos(y), sy = Math.sin(y), cz = Math.cos(z), sz = Math.sin(z);
return [ cy*cz, -cy*sz, sy, 0
, cx*sz + sx*sy*cz, cx*cz - sx*sy*sz, -sx*cy, 0
, sx*sz - cx*sy*cz, sx*cz + cx*sy*sz, cx*cy, 0
, 0, 0, 0, 1];
}
function h$easytensor_m4lookAt(up,camera,point) {
'use strict';
var zDir = [ camera[0] - point[0], camera[1] - point[1], camera[2] - point[2] ];
var t = Math.hypot.apply(null,zDir);
zDir = zDir.map(function (e){return e / t;});
var xDir = h$easytensor_cross(up,zDir);
t = Math.hypot.apply(null,xDir);
xDir = xDir.map(function (e){return e / t;});
var yDir = h$easytensor_cross(zDir,xDir);
return [ xDir[0], yDir[0], zDir[0], 0
, xDir[1], yDir[1], zDir[1], 0
, xDir[2], yDir[2], zDir[2], 0
, - h$easytensor_dot(xDir,camera), - h$easytensor_dot(yDir,camera), - h$easytensor_dot(zDir,camera), 1
];
}
function h$easytensor_m4perspective(n, f, fovy, aspect) {
'use strict';
var h2 = n*Math.tan(fovy/2);
var w2 = aspect*h2;
return [ n/w2, 0, 0, 0
, 0, n/h2, 0, 0
, 0, 0, (n+f)/(n-f),-1
, 0, 0, 2*n*f/(n-f), 0 ];
}
function h$easytensor_m4orthogonal(n, f, w, h) {
'use strict';
return [ 2/w, 0, 0, 0
, 0, 2/h, 0, 0
, 0, 0, 2/(n-f), 0
, 0, 0, (n+f)/(n-f), 1 ];
}