UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 2.31 kB
import{Vec3 as t}from"./vec3.js";var a;class s{constructor(){this.data=new Float32Array(9),this.data[0]=this.data[4]=this.data[8]=1}clone(){return(new(0,this.constructor)).copy(this)}copy(t){const a=t.data,s=this.data;return s[0]=a[0],s[1]=a[1],s[2]=a[2],s[3]=a[3],s[4]=a[4],s[5]=a[5],s[6]=a[6],s[7]=a[7],s[8]=a[8],this}set(t){const a=this.data;return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],this}getX(a=new t){return a.set(this.data[0],this.data[1],this.data[2])}getY(a=new t){return a.set(this.data[3],this.data[4],this.data[5])}getZ(a=new t){return a.set(this.data[6],this.data[7],this.data[8])}equals(t){const a=this.data,s=t.data;return a[0]===s[0]&&a[1]===s[1]&&a[2]===s[2]&&a[3]===s[3]&&a[4]===s[4]&&a[5]===s[5]&&a[6]===s[6]&&a[7]===s[7]&&a[8]===s[8]}isIdentity(){const t=this.data;return 1===t[0]&&0===t[1]&&0===t[2]&&0===t[3]&&1===t[4]&&0===t[5]&&0===t[6]&&0===t[7]&&1===t[8]}setIdentity(){const t=this.data;return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,this}toString(){return`[${this.data.join(", ")}]`}transpose(t=this){const a=t.data,s=this.data;if(a===s){let t;t=a[1],s[1]=a[3],s[3]=t,t=a[2],s[2]=a[6],s[6]=t,t=a[5],s[5]=a[7],s[7]=t}else s[0]=a[0],s[1]=a[3],s[2]=a[6],s[3]=a[1],s[4]=a[4],s[5]=a[7],s[6]=a[2],s[7]=a[5],s[8]=a[8];return this}setFromMat4(t){const a=t.data,s=this.data;return s[0]=a[0],s[1]=a[1],s[2]=a[2],s[3]=a[4],s[4]=a[5],s[5]=a[6],s[6]=a[8],s[7]=a[9],s[8]=a[10],this}setFromQuat(t){const a=t.x,s=t.y,e=t.z,r=t.w,i=a+a,n=s+s,h=e+e,d=a*i,o=a*n,c=a*h,u=s*n,w=s*h,y=e*h,l=r*i,f=r*n,m=r*h,p=this.data;return p[0]=1-(u+y),p[1]=o+m,p[2]=c-f,p[3]=o-m,p[4]=1-(d+y),p[5]=w+l,p[6]=c+f,p[7]=w-l,p[8]=1-(d+u),this}invertMat4(t){const a=t.data,s=a[0],e=a[1],r=a[2],i=a[4],n=a[5],h=a[6],d=a[8],o=a[9],c=a[10],u=c*n-h*o,w=-c*e+r*o,y=h*e-r*n,l=-c*i+h*d,f=c*s-r*d,m=-h*s+r*i,p=o*i-n*d,z=-o*s+e*d,I=n*s-e*i,g=s*u+e*l+r*p;if(0===g)this.setIdentity();else{const t=1/g,a=this.data;a[0]=u*t,a[1]=w*t,a[2]=y*t,a[3]=l*t,a[4]=f*t,a[5]=m*t,a[6]=p*t,a[7]=z*t,a[8]=I*t}return this}transformVector(a,s=new t){const e=this.data,{x:r,y:i,z:n}=a;return s.x=r*e[0]+i*e[3]+n*e[6],s.y=r*e[1]+i*e[4]+n*e[7],s.z=r*e[2]+i*e[5]+n*e[8],s}}a=s,s.IDENTITY=Object.freeze(new a),s.ZERO=Object.freeze((new a).set([0,0,0,0,0,0,0,0,0]));export{s as Mat3};