Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export class matrix {
- public vals : number[];
- constructor() {
- this.vals = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
- }
- }
- export function mul(a: any, b:any) {
- var a00 = a[0 * 4 + 0];
- var a01 = a[0 * 4 + 1];
- var a02 = a[0 * 4 + 2];
- var a03 = a[0 * 4 + 3];
- var a10 = a[1 * 4 + 0];
- var a11 = a[1 * 4 + 1];
- var a12 = a[1 * 4 + 2];
- var a13 = a[1 * 4 + 3];
- var a20 = a[2 * 4 + 0];
- var a21 = a[2 * 4 + 1];
- var a22 = a[2 * 4 + 2];
- var a23 = a[2 * 4 + 3];
- var a30 = a[3 * 4 + 0];
- var a31 = a[3 * 4 + 1];
- var a32 = a[3 * 4 + 2];
- var a33 = a[3 * 4 + 3];
- var b00 = b[0 * 4 + 0];
- var b01 = b[0 * 4 + 1];
- var b02 = b[0 * 4 + 2];
- var b03 = b[0 * 4 + 3];
- var b10 = b[1 * 4 + 0];
- var b11 = b[1 * 4 + 1];
- var b12 = b[1 * 4 + 2];
- var b13 = b[1 * 4 + 3];
- var b20 = b[2 * 4 + 0];
- var b21 = b[2 * 4 + 1];
- var b22 = b[2 * 4 + 2];
- var b23 = b[2 * 4 + 3];
- var b30 = b[3 * 4 + 0];
- var b31 = b[3 * 4 + 1];
- var b32 = b[3 * 4 + 2];
- var b33 = b[3 * 4 + 3];
- return [
- b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
- b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
- b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
- b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
- b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
- b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
- b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
- b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
- b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
- b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
- b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
- b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
- b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
- b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
- b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
- b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33,
- ];
- }
- export function project(h:number,w:number,d:number) {
- console.log("w " + w);
- console.log("h " + h);
- console.log("d " + d);
- return [
- 2 / w, 0, 0, 0,
- 0, -2 / h, 0, 0,
- 0, 0, 2 / d, 0,
- -1, 1, 0, 1,
- ];
- }
- export function scale(sx:number, sy:number, sz:number ) {
- return [
- sx, 0, 0, 0,
- 0, sy, 0, 0,
- 0, 0, sz, 0,
- 0, 0, 0, 1,
- ];
- }
- export function xRotation(angleInRadians:number) {
- var c = Math.cos(angleInRadians);
- var s = Math.sin(angleInRadians);
- console.log([ 1, 0, 0, 0,
- 0, c, s, 0,
- 0, -s, c, 0,
- 0, 0, 0, 1,]);
- return [
- 1, 0, 0, 0,
- 0, c, s, 0,
- 0, -s, c, 0,
- 0, 0, 0, 1,
- ];
- }
- export function yRotation(angleInRadians:number) {
- var c = Math.cos(angleInRadians);
- var s = Math.sin(angleInRadians);
- return [
- c, 0, -s, 0,
- 0, 1, 0, 0,
- s, 0, c, 0,
- 0, 0, 0, 1,
- ];
- }
- export function zRotation(angleInRadians:number) {
- var c = Math.cos(angleInRadians);
- var s = Math.sin(angleInRadians);
- return [
- c, s, 0, 0,
- -s, c, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1,
- ];
- }
- export function translation(tx:number, ty:number, tz:number) {
- return [
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- tx, ty, tz, 1,
- ];
- }
- export function translate(x:number,y:number,z:number) {
- var d = x,
- e = y,
- b = z;
- var a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
- a[12] = a[0] * d + a[4] * e + a[8] * b + a[12];
- a[13] = a[1] * d + a[5] * e + a[9] * b + a[13];
- a[14] = a[2] * d + a[6] * e + a[10] * b + a[14];
- a[15] = a[3] * d + a[7] * e + a[11] * b + a[15];
- return a;
- }
- export function perspective(a:number ,b: number, c: number ,d: number){
- a = c*Math.tan(a*Math.PI/360);
- b = b*a;
- return frustum(-b,b,-a,a,c,d)
- }
- export function frustum(a: number , b: number, c: number, d: number, e: number ,g: number){
- var gg = new matrix();
- var f = gg.vals;
- var h=b-a;
- var i=d-c;
- var j=g-e;
- f[0]=2*e/h;
- f[1]=0;
- f[2]=0;
- f[3]=0;
- f[4]=0;
- f[5]=2*e/i;
- f[6]=0;
- f[7]=0;
- f[8]=(b+a)/h;
- f[9]=(d+c)/i;
- f[10]=-(g+e)/j;
- f[11]=-1;
- f[12]=0;
- f[13]=0;
- f[14]=-(2*g*e)/j;
- f[15]=0;
- return f;
- }
- export function inverse(a:number[]){
- var b =a;
- var c=a[0],d=a[1],e=a[2],g=a[3],f=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],n=a[10],o=a[11],m=a[12],p=a[13],r=a[14],s=a[15];
- var A=c*h-d*f, B=c*i-e*f, t=c*j-g*f, u=d*i-e*h, v=d*j-g*h, w=e*j-g*i, x=k*p-l*m, y=k*r-n*m, z=k*s-o*m;
- var C=l*r-n*p, D=l*s-o*p, E=n*s-o*r, q=A*E-B*D+t*C+u*z-v*y+w*x;
- if(!q)return null;
- q=1/q;
- b[0]=(h*E-i*D+j*C)*q;
- b[1]=(-d*E+e*D-g*C)*q;
- b[2]=(p*w-r*v+s*u)*q;
- b[3]=(-l*w+n*v-o*u)*q;
- b[4]=(-f*E+i*z-j*y)*q;
- b[5]=(c*E-e*z+g*y)*q;
- b[6]=(-m*w+r*t-s*B)*q;
- b[7]=(k*w-n*t+o*B)*q;
- b[8]=(f*D-h*z+j*x)*q;
- b[9]=(-c*D+d*z-g*x)*q;
- b[10]=(m*v-p*t+s*A)*q;
- b[11]=(-k*v+l*t-o*A)*q;
- b[12]=(-f*C+h*y-i*x)*q;
- b[13]=(c*C-d*y+e*x)*q;
- b[14]=(-m*u+p*B-r*A)*q;
- b[15]=(k*u-l*B+n*A)*q;
- return b;
- }
- export function transpose(a:number[]){
- var c=a[1],d=a[2],e=a[3],g=a[6],f=a[7],h=a[11];
- a[1]=a[4];
- a[2]=a[8];
- a[3]=a[12];
- a[4]=c;
- a[6]=a[9];
- a[7]=a[13];
- a[8]=d;
- a[9]=g;
- a[11]=a[14];
- a[12]=e;
- a[13]=f;
- a[14]=h;
- return a;
- };
Advertisement
Add Comment
Please, Sign In to add comment