wgpu-matrix
Advanced tools
Comparing version 3.1.0 to 3.2.0
@@ -33,6 +33,16 @@ import { Mat3Arg, Mat3Type } from './mat3'; | ||
rotate: <T_19 extends BaseArgType = T>(m: BaseArgType, angleInRadians: number, dst?: T_19 | undefined) => T_19; | ||
scaling: <T_20 extends BaseArgType = T>(v: BaseArgType, dst?: T_20 | undefined) => T_20; | ||
scale: <T_21 extends BaseArgType = T>(m: BaseArgType, v: BaseArgType, dst?: T_21 | undefined) => T_21; | ||
uniformScaling: <T_22 extends BaseArgType = T>(s: number, dst?: T_22 | undefined) => T_22; | ||
uniformScale: <T_23 extends BaseArgType = T>(m: BaseArgType, s: number, dst?: T_23 | undefined) => T_23; | ||
rotationX: <T_20 extends BaseArgType = T>(angleInRadians: number, dst?: T_20 | undefined) => T_20; | ||
rotateX: <T_21 extends BaseArgType = T>(m: BaseArgType, angleInRadians: number, dst?: T_21 | undefined) => T_21; | ||
rotationY: <T_22 extends BaseArgType = T>(angleInRadians: number, dst?: T_22 | undefined) => T_22; | ||
rotateY: <T_23 extends BaseArgType = T>(m: BaseArgType, angleInRadians: number, dst?: T_23 | undefined) => T_23; | ||
rotationZ: <T_18 extends BaseArgType = T>(angleInRadians: number, dst?: T_18 | undefined) => T_18; | ||
rotateZ: <T_19 extends BaseArgType = T>(m: BaseArgType, angleInRadians: number, dst?: T_19 | undefined) => T_19; | ||
scaling: <T_24 extends BaseArgType = T>(v: BaseArgType, dst?: T_24 | undefined) => T_24; | ||
scale: <T_25 extends BaseArgType = T>(m: BaseArgType, v: BaseArgType, dst?: T_25 | undefined) => T_25; | ||
uniformScaling: <T_26 extends BaseArgType = T>(s: number, dst?: T_26 | undefined) => T_26; | ||
uniformScale: <T_27 extends BaseArgType = T>(m: BaseArgType, s: number, dst?: T_27 | undefined) => T_27; | ||
scaling3D: <T_28 extends BaseArgType = T>(v: BaseArgType, dst?: T_28 | undefined) => T_28; | ||
scale3D: <T_29 extends BaseArgType = T>(m: BaseArgType, v: BaseArgType, dst?: T_29 | undefined) => T_29; | ||
uniformScaling3D: <T_30 extends BaseArgType = T>(s: number, dst?: T_30 | undefined) => T_30; | ||
uniformScale3D: <T_31 extends BaseArgType = T>(m: BaseArgType, s: number, dst?: T_31 | undefined) => T_31; | ||
}; |
@@ -1,2 +0,2 @@ | ||
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).wgpuMatrix={})}(this,(function(n){"use strict";const t=(e=Array,r=n=>n.fill(0),class extends e{constructor(...n){super(...n),r(this)}});var e,r;let o=1e-6;var c={__proto__:null,get EPSILON(){return o},degToRad:function(n){return n*Math.PI/180},euclideanModulo:function(n,t){return(n%t+t)%t},inverseLerp:function(n,t,e){const r=t-n;return Math.abs(t-n)<o?n:(e-n)/r},lerp:function(n,t,e){return n+(t-n)*e},radToDeg:function(n){return 180*n/Math.PI},setEpsilon:function(n){const t=o;return o=n,t}};const u=new Map;function a(n){let t=u.get(n);return t||(t=function(n){function t(t=0,e=0){const r=new n(2);return void 0!==t&&(r[0]=t,void 0!==e&&(r[1]=e)),r}function e(t,e,r){const o=r??new n(2);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o}function r(t,e,r,o){const c=o??new n(2);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c}function c(t,e,r){const o=r??new n(2);return o[0]=t[0]*e,o[1]=t[1]*e,o}function u(t,e){const r=e??new n(2);return r[0]=1/t[0],r[1]=1/t[1],r}function a(n,t){return n[0]*t[0]+n[1]*t[1]}function s(n){const t=n[0],e=n[1];return Math.sqrt(t*t+e*e)}function i(n){const t=n[0],e=n[1];return t*t+e*e}function f(n,t){const e=n[0]-t[0],r=n[1]-t[1];return Math.sqrt(e*e+r*r)}function h(n,t){const e=n[0]-t[0],r=n[1]-t[1];return e*e+r*r}function M(t,e){const r=e??new n(2),o=t[0],c=t[1],u=Math.sqrt(o*o+c*c);return u>1e-5?(r[0]=o/u,r[1]=c/u):(r[0]=0,r[1]=0),r}function l(t,e){const r=e??new n(2);return r[0]=t[0],r[1]=t[1],r}function w(t,e,r){const o=r??new n(2);return o[0]=t[0]*e[0],o[1]=t[1]*e[1],o}function m(t,e,r){const o=r??new n(2);return o[0]=t[0]/e[0],o[1]=t[1]/e[1],o}function d(t,e,r){const o=r??new n(2);return M(t,o),c(o,e,o)}return{create:t,fromValues:t,set:function(t,e,r){const o=r??new n(2);return o[0]=t,o[1]=e,o},ceil:function(t,e){const r=e??new n(2);return r[0]=Math.ceil(t[0]),r[1]=Math.ceil(t[1]),r},floor:function(t,e){const r=e??new n(2);return r[0]=Math.floor(t[0]),r[1]=Math.floor(t[1]),r},round:function(t,e){const r=e??new n(2);return r[0]=Math.round(t[0]),r[1]=Math.round(t[1]),r},clamp:function(t,e=0,r=1,o){const c=o??new n(2);return c[0]=Math.min(r,Math.max(e,t[0])),c[1]=Math.min(r,Math.max(e,t[1])),c},add:function(t,e,r){const o=r??new n(2);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o},addScaled:function(t,e,r,o){const c=o??new n(2);return c[0]=t[0]+e[0]*r,c[1]=t[1]+e[1]*r,c},angle:function(n,t){const e=n[0],r=n[1],o=t[0],c=t[1],u=Math.sqrt(e*e+r*r)*Math.sqrt(o*o+c*c),s=u&&a(n,t)/u;return Math.acos(s)},subtract:e,sub:e,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]},lerp:r,lerpV:function(t,e,r,o){const c=o??new n(2);return c[0]=t[0]+r[0]*(e[0]-t[0]),c[1]=t[1]+r[1]*(e[1]-t[1]),c},max:function(t,e,r){const o=r??new n(2);return o[0]=Math.max(t[0],e[0]),o[1]=Math.max(t[1],e[1]),o},min:function(t,e,r){const o=r??new n(2);return o[0]=Math.min(t[0],e[0]),o[1]=Math.min(t[1],e[1]),o},mulScalar:c,scale:c,divScalar:function(t,e,r){const o=r??new n(2);return o[0]=t[0]/e,o[1]=t[1]/e,o},inverse:u,invert:u,cross:function(t,e,r){const o=r??new n(3),c=t[0]*e[1]-t[1]*e[0];return o[0]=0,o[1]=0,o[2]=c,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:h,distSq:h,normalize:M,negate:function(t,e){const r=e??new n(2);return r[0]=-t[0],r[1]=-t[1],r},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,e){const r=e??new n(2),o=2*Math.random()*Math.PI;return r[0]=Math.cos(o)*t,r[1]=Math.sin(o)*t,r},zero:function(t){const e=t??new n(2);return e[0]=0,e[1]=0,e},transformMat4:function(t,e,r){const o=r??new n(2),c=t[0],u=t[1];return o[0]=c*e[0]+u*e[4]+e[12],o[1]=c*e[1]+u*e[5]+e[13],o},transformMat3:function(t,e,r){const o=r??new n(2),c=t[0],u=t[1];return o[0]=e[0]*c+e[4]*u+e[8],o[1]=e[1]*c+e[5]*u+e[9],o},rotate:function(t,e,r,o){const c=o??new n(2),u=t[0]-e[0],a=t[1]-e[1],s=Math.sin(r),i=Math.cos(r);return c[0]=u*i-a*s+e[0],c[1]=u*s+a*i+e[1],c},setLength:d,truncate:function(t,e,r){const o=r??new n(2);return s(t)>e?d(t,e,o):l(t,o)},midpoint:function(t,e,o){return r(t,e,.5,o??new n(2))}}}(n),u.set(n,t)),t}const s=new Map;function i(n){let t=s.get(n);return t||(t=function(n){function t(t,e,r){const o=new n(3);return void 0!==t&&(o[0]=t,void 0!==e&&(o[1]=e,void 0!==r&&(o[2]=r))),o}function e(t,e,r){const o=r??new n(3);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],o}function r(t,e,r,o){const c=o??new n(3);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c[2]=t[2]+r*(e[2]-t[2]),c}function c(t,e,r){const o=r??new n(3);return o[0]=t[0]*e,o[1]=t[1]*e,o[2]=t[2]*e,o}function u(t,e){const r=e??new n(3);return r[0]=1/t[0],r[1]=1/t[1],r[2]=1/t[2],r}function a(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function s(n){const t=n[0],e=n[1],r=n[2];return Math.sqrt(t*t+e*e+r*r)}function i(n){const t=n[0],e=n[1],r=n[2];return t*t+e*e+r*r}function f(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2];return Math.sqrt(e*e+r*r+o*o)}function h(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2];return e*e+r*r+o*o}function M(t,e){const r=e??new n(3),o=t[0],c=t[1],u=t[2],a=Math.sqrt(o*o+c*c+u*u);return a>1e-5?(r[0]=o/a,r[1]=c/a,r[2]=u/a):(r[0]=0,r[1]=0,r[2]=0),r}function l(t,e){const r=e??new n(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r}function w(t,e,r){const o=r??new n(3);return o[0]=t[0]*e[0],o[1]=t[1]*e[1],o[2]=t[2]*e[2],o}function m(t,e,r){const o=r??new n(3);return o[0]=t[0]/e[0],o[1]=t[1]/e[1],o[2]=t[2]/e[2],o}function d(t,e,r){const o=r??new n(3);return M(t,o),c(o,e,o)}return{create:t,fromValues:t,set:function(t,e,r,o){const c=o??new n(3);return c[0]=t,c[1]=e,c[2]=r,c},ceil:function(t,e){const r=e??new n(3);return r[0]=Math.ceil(t[0]),r[1]=Math.ceil(t[1]),r[2]=Math.ceil(t[2]),r},floor:function(t,e){const r=e??new n(3);return r[0]=Math.floor(t[0]),r[1]=Math.floor(t[1]),r[2]=Math.floor(t[2]),r},round:function(t,e){const r=e??new n(3);return r[0]=Math.round(t[0]),r[1]=Math.round(t[1]),r[2]=Math.round(t[2]),r},clamp:function(t,e=0,r=1,o){const c=o??new n(3);return c[0]=Math.min(r,Math.max(e,t[0])),c[1]=Math.min(r,Math.max(e,t[1])),c[2]=Math.min(r,Math.max(e,t[2])),c},add:function(t,e,r){const o=r??new n(3);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o[2]=t[2]+e[2],o},addScaled:function(t,e,r,o){const c=o??new n(3);return c[0]=t[0]+e[0]*r,c[1]=t[1]+e[1]*r,c[2]=t[2]+e[2]*r,c},angle:function(n,t){const e=n[0],r=n[1],o=n[2],c=t[0],u=t[1],s=t[2],i=Math.sqrt(e*e+r*r+o*o)*Math.sqrt(c*c+u*u+s*s),f=i&&a(n,t)/i;return Math.acos(f)},subtract:e,sub:e,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]},lerp:r,lerpV:function(t,e,r,o){const c=o??new n(3);return c[0]=t[0]+r[0]*(e[0]-t[0]),c[1]=t[1]+r[1]*(e[1]-t[1]),c[2]=t[2]+r[2]*(e[2]-t[2]),c},max:function(t,e,r){const o=r??new n(3);return o[0]=Math.max(t[0],e[0]),o[1]=Math.max(t[1],e[1]),o[2]=Math.max(t[2],e[2]),o},min:function(t,e,r){const o=r??new n(3);return o[0]=Math.min(t[0],e[0]),o[1]=Math.min(t[1],e[1]),o[2]=Math.min(t[2],e[2]),o},mulScalar:c,scale:c,divScalar:function(t,e,r){const o=r??new n(3);return o[0]=t[0]/e,o[1]=t[1]/e,o[2]=t[2]/e,o},inverse:u,invert:u,cross:function(t,e,r){const o=r??new n(3),c=t[2]*e[0]-t[0]*e[2],u=t[0]*e[1]-t[1]*e[0];return o[0]=t[1]*e[2]-t[2]*e[1],o[1]=c,o[2]=u,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:h,distSq:h,normalize:M,negate:function(t,e){const r=e??new n(3);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,e){const r=e??new n(3),o=2*Math.random()*Math.PI,c=2*Math.random()-1,u=Math.sqrt(1-c*c)*t;return r[0]=Math.cos(o)*u,r[1]=Math.sin(o)*u,r[2]=c*t,r},zero:function(t){const e=t??new n(3);return e[0]=0,e[1]=0,e[2]=0,e},transformMat4:function(t,e,r){const o=r??new n(3),c=t[0],u=t[1],a=t[2],s=e[3]*c+e[7]*u+e[11]*a+e[15]||1;return o[0]=(e[0]*c+e[4]*u+e[8]*a+e[12])/s,o[1]=(e[1]*c+e[5]*u+e[9]*a+e[13])/s,o[2]=(e[2]*c+e[6]*u+e[10]*a+e[14])/s,o},transformMat4Upper3x3:function(t,e,r){const o=r??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*e[0]+u*e[4]+a*e[8],o[1]=c*e[1]+u*e[5]+a*e[9],o[2]=c*e[2]+u*e[6]+a*e[10],o},transformMat3:function(t,e,r){const o=r??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*e[0]+u*e[4]+a*e[8],o[1]=c*e[1]+u*e[5]+a*e[9],o[2]=c*e[2]+u*e[6]+a*e[10],o},transformQuat:function(t,e,r){const o=r??new n(3),c=e[0],u=e[1],a=e[2],s=2*e[3],i=t[0],f=t[1],h=t[2],M=u*h-a*f,l=a*i-c*h,w=c*f-u*i;return o[0]=i+M*s+2*(u*w-a*l),o[1]=f+l*s+2*(a*M-c*w),o[2]=h+w*s+2*(c*l-u*M),o},getTranslation:function(t,e){const r=e??new n(3);return r[0]=t[12],r[1]=t[13],r[2]=t[14],r},getAxis:function(t,e,r){const o=r??new n(3),c=4*e;return o[0]=t[c+0],o[1]=t[c+1],o[2]=t[c+2],o},getScaling:function(t,e){const r=e??new n(3),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],h=t[9],M=t[10];return r[0]=Math.sqrt(o*o+c*c+u*u),r[1]=Math.sqrt(a*a+s*s+i*i),r[2]=Math.sqrt(f*f+h*h+M*M),r},rotateX:function(t,e,r,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-e[0],u[1]=t[1]-e[1],u[2]=t[2]-e[2],a[0]=u[0],a[1]=u[1]*Math.cos(r)-u[2]*Math.sin(r),a[2]=u[1]*Math.sin(r)+u[2]*Math.cos(r),c[0]=a[0]+e[0],c[1]=a[1]+e[1],c[2]=a[2]+e[2],c},rotateY:function(t,e,r,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-e[0],u[1]=t[1]-e[1],u[2]=t[2]-e[2],a[0]=u[2]*Math.sin(r)+u[0]*Math.cos(r),a[1]=u[1],a[2]=u[2]*Math.cos(r)-u[0]*Math.sin(r),c[0]=a[0]+e[0],c[1]=a[1]+e[1],c[2]=a[2]+e[2],c},rotateZ:function(t,e,r,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-e[0],u[1]=t[1]-e[1],u[2]=t[2]-e[2],a[0]=u[0]*Math.cos(r)-u[1]*Math.sin(r),a[1]=u[0]*Math.sin(r)+u[1]*Math.cos(r),a[2]=u[2],c[0]=a[0]+e[0],c[1]=a[1]+e[1],c[2]=a[2]+e[2],c},setLength:d,truncate:function(t,e,r){const o=r??new n(3);return s(t)>e?d(t,e,o):l(t,o)},midpoint:function(t,e,o){return r(t,e,.5,o??new n(3))}}}(n),s.set(n,t)),t}const f=new Map;function h(n){let t=f.get(n);return t||(t=function(n){const t=a(n),e=i(n);function r(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[8]=t[8],r[9]=t[9],r[10]=t[10],r}function c(t){const e=t??new n(12);return e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e}function u(t,e){const r=e??new n(12),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],h=t[9],M=t[10],l=M*s-i*h,w=-M*a+i*f,m=h*a-s*f,d=1/(o*l+c*w+u*m);return r[0]=l*d,r[1]=(-M*c+u*h)*d,r[2]=(i*c-u*s)*d,r[4]=w*d,r[5]=(M*o-u*f)*d,r[6]=(-i*o+u*a)*d,r[8]=m*d,r[9]=(-h*o+c*f)*d,r[10]=(s*o-c*a)*d,r}function s(t,e,r){const o=r??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],h=t[8],M=t[9],l=t[10],w=e[0],m=e[1],d=e[2],v=e[4],p=e[5],q=e[6],b=e[8],g=e[9],x=e[10];return o[0]=c*w+s*m+h*d,o[1]=u*w+i*m+M*d,o[2]=a*w+f*m+l*d,o[4]=c*v+s*p+h*q,o[5]=u*v+i*p+M*q,o[6]=a*v+f*p+l*q,o[8]=c*b+s*g+h*x,o[9]=u*b+i*g+M*x,o[10]=a*b+f*g+l*x,o}return{clone:r,create:function(t,e,r,o,c,u,a,s,i){const f=new n(12);return f[3]=0,f[7]=0,f[11]=0,void 0!==t&&(f[0]=t,void 0!==e&&(f[1]=e,void 0!==r&&(f[2]=r,void 0!==o&&(f[4]=o,void 0!==c&&(f[5]=c,void 0!==u&&(f[6]=u,void 0!==a&&(f[8]=a,void 0!==s&&(f[9]=s,void 0!==i&&(f[10]=i))))))))),f},set:function(t,e,r,o,c,u,a,s,i,f){const h=f??new n(12);return h[0]=t,h[1]=e,h[2]=r,h[3]=0,h[4]=o,h[5]=c,h[6]=u,h[7]=0,h[8]=a,h[9]=s,h[10]=i,h[11]=0,h},fromMat4:function(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=0,r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=0,r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=0,r},fromQuat:function(t,e){const r=e??new n(12),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,h=o*s,M=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,p=a*i,q=a*f;return r[0]=1-l-d,r[1]=M+q,r[2]=w-p,r[3]=0,r[4]=M-q,r[5]=1-h-d,r[6]=m+v,r[7]=0,r[8]=w+p,r[9]=m-v,r[10]=1-h-l,r[11]=0,r},negate:function(t,e){const r=e??new n(12);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[8]=-t[8],r[9]=-t[9],r[10]=-t[10],r},copy:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[4]-t[4])<o&&Math.abs(n[5]-t[5])<o&&Math.abs(n[6]-t[6])<o&&Math.abs(n[8]-t[8])<o&&Math.abs(n[9]-t[9])<o&&Math.abs(n[10]-t[10])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]},identity:c,transpose:function(t,e){const r=e??new n(12);if(r===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,r}const o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],h=t[9],M=t[10];return r[0]=o,r[1]=a,r[2]=f,r[4]=c,r[5]=s,r[6]=h,r[8]=u,r[9]=i,r[10]=M,r},inverse:u,invert:u,determinant:function(n){const t=n[0],e=n[1],r=n[2],o=n[4],c=n[5],u=n[6],a=n[8],s=n[9],i=n[10];return t*(c*i-s*u)-o*(e*i-s*r)+a*(e*u-c*r)},mul:s,multiply:s,setTranslation:function(n,t,e){const r=e??c();return n!==r&&(r[0]=n[0],r[1]=n[1],r[2]=n[2],r[4]=n[4],r[5]=n[5],r[6]=n[6]),r[8]=t[0],r[9]=t[1],r[10]=1,r},getTranslation:function(n,e){const r=e??t.create();return r[0]=n[8],r[1]=n[9],r},getAxis:function(n,e,r){const o=r??t.create(),c=4*e;return o[0]=n[c+0],o[1]=n[c+1],o},setAxis:function(n,t,e,o){const c=o===n?n:r(n,o),u=4*e;return c[u+0]=t[0],c[u+1]=t[1],c},getScaling:function(n,e){const r=e??t.create(),o=n[0],c=n[1],u=n[4],a=n[5];return r[0]=Math.sqrt(o*o+c*c),r[1]=Math.sqrt(u*u+a*a),r},get3DScaling:function(n,t){const r=t??e.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],h=n[9],M=n[10];return r[0]=Math.sqrt(o*o+c*c+u*u),r[1]=Math.sqrt(a*a+s*s+i*i),r[2]=Math.sqrt(f*f+h*h+M*M),r},translation:function(t,e){const r=e??new n(12);return r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=t[0],r[9]=t[1],r[10]=1,r},translate:function(t,e,r){const o=r??new n(12),c=e[0],u=e[1],a=t[0],s=t[1],i=t[2],f=t[4],h=t[5],M=t[6],l=t[8],w=t[9],m=t[10];return t!==o&&(o[0]=a,o[1]=s,o[2]=i,o[4]=f,o[5]=h,o[6]=M),o[8]=a*c+f*u+l,o[9]=s*c+h*u+w,o[10]=i*c+M*u+m,o},rotation:function(t,e){const r=e??new n(12),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=c,r[2]=0,r[4]=-c,r[5]=o,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r},rotate:function(t,e,r){const o=r??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],h=Math.cos(e),M=Math.sin(e);return o[0]=h*c+M*s,o[1]=h*u+M*i,o[2]=h*a+M*f,o[4]=h*s-M*c,o[5]=h*i-M*u,o[6]=h*f-M*a,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},scaling:function(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=0,r[2]=0,r[4]=0,r[5]=t[1],r[6]=0,r[8]=0,r[9]=0,r[10]=1,r},scale:function(t,e,r){const o=r??new n(12),c=e[0],u=e[1];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},uniformScaling:function(t,e){const r=e??new n(12);return r[0]=t,r[1]=0,r[2]=0,r[4]=0,r[5]=t,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r},uniformScale:function(t,e,r){const o=r??new n(12);return o[0]=e*t[0],o[1]=e*t[1],o[2]=e*t[2],o[4]=e*t[4],o[5]=e*t[5],o[6]=e*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o}}}(n),f.set(n,t)),t}const M=new Map;function l(n){let t=M.get(n);return t||(t=function(n){const t=i(n);function e(t,e){const r=e??new n(16);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}const r=e;function c(t){const e=t??new n(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function u(t,e){const r=e??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],h=t[7],M=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],p=t[14],q=t[15],b=w*q,g=p*m,x=f*q,y=p*h,A=f*m,S=w*h,z=u*q,F=p*a,T=u*m,k=w*a,I=u*h,P=f*a,V=M*v,Z=d*l,L=s*v,R=d*i,E=s*l,X=M*i,Y=o*v,_=d*c,Q=o*l,j=M*c,D=o*i,N=s*c,U=b*i+y*l+A*v-(g*i+x*l+S*v),O=g*c+z*l+k*v-(b*c+F*l+T*v),$=x*c+F*i+I*v-(y*c+z*i+P*v),B=S*c+T*i+P*l-(A*c+k*i+I*l),C=1/(o*U+s*O+M*$+d*B);return r[0]=C*U,r[1]=C*O,r[2]=C*$,r[3]=C*B,r[4]=C*(g*s+x*M+S*d-(b*s+y*M+A*d)),r[5]=C*(b*o+F*M+T*d-(g*o+z*M+k*d)),r[6]=C*(y*o+z*s+P*d-(x*o+F*s+I*d)),r[7]=C*(A*o+k*s+I*M-(S*o+T*s+P*M)),r[8]=C*(V*h+R*m+E*q-(Z*h+L*m+X*q)),r[9]=C*(Z*a+Y*m+j*q-(V*a+_*m+Q*q)),r[10]=C*(L*a+_*h+D*q-(R*a+Y*h+N*q)),r[11]=C*(X*a+Q*h+N*m-(E*a+j*h+D*m)),r[12]=C*(L*w+X*p+Z*f-(E*p+V*f+R*w)),r[13]=C*(Q*p+V*u+_*w-(Y*w+j*p+Z*u)),r[14]=C*(Y*f+N*p+R*u-(D*p+L*u+_*f)),r[15]=C*(D*w+E*u+j*f-(Q*f+N*w+X*u)),r}const a=u;function s(t,e,r){const o=r??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],h=t[6],M=t[7],l=t[8],w=t[9],m=t[10],d=t[11],v=t[12],p=t[13],q=t[14],b=t[15],g=e[0],x=e[1],y=e[2],A=e[3],S=e[4],z=e[5],F=e[6],T=e[7],k=e[8],I=e[9],P=e[10],V=e[11],Z=e[12],L=e[13],R=e[14],E=e[15];return o[0]=c*g+i*x+l*y+v*A,o[1]=u*g+f*x+w*y+p*A,o[2]=a*g+h*x+m*y+q*A,o[3]=s*g+M*x+d*y+b*A,o[4]=c*S+i*z+l*F+v*T,o[5]=u*S+f*z+w*F+p*T,o[6]=a*S+h*z+m*F+q*T,o[7]=s*S+M*z+d*F+b*T,o[8]=c*k+i*I+l*P+v*V,o[9]=u*k+f*I+w*P+p*V,o[10]=a*k+h*I+m*P+q*V,o[11]=s*k+M*I+d*P+b*V,o[12]=c*Z+i*L+l*R+v*E,o[13]=u*Z+f*L+w*R+p*E,o[14]=a*Z+h*L+m*R+q*E,o[15]=s*Z+M*L+d*R+b*E,o}const f=s,h=t.create(),M=t.create(),l=t.create();function w(t,e,r){const o=r??new n(16);let c=t[0],u=t[1],a=t[2];const s=Math.sqrt(c*c+u*u+a*a);c/=s,u/=s,a/=s;const i=c*c,f=u*u,h=a*a,M=Math.cos(e),l=Math.sin(e),w=1-M;return o[0]=i+(1-i)*M,o[1]=c*u*w+a*l,o[2]=c*a*w-u*l,o[3]=0,o[4]=c*u*w-a*l,o[5]=f+(1-f)*M,o[6]=u*a*w+c*l,o[7]=0,o[8]=c*a*w+u*l,o[9]=u*a*w-c*l,o[10]=h+(1-h)*M,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}function m(t,e,r,o){const c=o??new n(16);let u=e[0],a=e[1],s=e[2];const i=Math.sqrt(u*u+a*a+s*s);u/=i,a/=i,s/=i;const f=u*u,h=a*a,M=s*s,l=Math.cos(r),w=Math.sin(r),m=1-l,d=f+(1-f)*l,v=u*a*m+s*w,p=u*s*m-a*w,q=u*a*m-s*w,b=h+(1-h)*l,g=a*s*m+u*w,x=u*s*m+a*w,y=a*s*m-u*w,A=M+(1-M)*l,S=t[0],z=t[1],F=t[2],T=t[3],k=t[4],I=t[5],P=t[6],V=t[7],Z=t[8],L=t[9],R=t[10],E=t[11];return c[0]=d*S+v*k+p*Z,c[1]=d*z+v*I+p*L,c[2]=d*F+v*P+p*R,c[3]=d*T+v*V+p*E,c[4]=q*S+b*k+g*Z,c[5]=q*z+b*I+g*L,c[6]=q*F+b*P+g*R,c[7]=q*T+b*V+g*E,c[8]=x*S+y*k+A*Z,c[9]=x*z+y*I+A*L,c[10]=x*F+y*P+A*R,c[11]=x*T+y*V+A*E,t!==c&&(c[12]=t[12],c[13]=t[13],c[14]=t[14],c[15]=t[15]),c}return{create:function(t,e,r,o,c,u,a,s,i,f,h,M,l,w,m,d){const v=new n(16);return void 0!==t&&(v[0]=t,void 0!==e&&(v[1]=e,void 0!==r&&(v[2]=r,void 0!==o&&(v[3]=o,void 0!==c&&(v[4]=c,void 0!==u&&(v[5]=u,void 0!==a&&(v[6]=a,void 0!==s&&(v[7]=s,void 0!==i&&(v[8]=i,void 0!==f&&(v[9]=f,void 0!==h&&(v[10]=h,void 0!==M&&(v[11]=M,void 0!==l&&(v[12]=l,void 0!==w&&(v[13]=w,void 0!==m&&(v[14]=m,void 0!==d&&(v[15]=d)))))))))))))))),v},set:function(t,e,r,o,c,u,a,s,i,f,h,M,l,w,m,d,v){const p=v??new n(16);return p[0]=t,p[1]=e,p[2]=r,p[3]=o,p[4]=c,p[5]=u,p[6]=a,p[7]=s,p[8]=i,p[9]=f,p[10]=h,p[11]=M,p[12]=l,p[13]=w,p[14]=m,p[15]=d,p},fromMat3:function(t,e){const r=e??new n(16);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=0,r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=0,r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},fromQuat:function(t,e){const r=e??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,h=o*s,M=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,p=a*i,q=a*f;return r[0]=1-l-d,r[1]=M+q,r[2]=w-p,r[3]=0,r[4]=M-q,r[5]=1-h-d,r[6]=m+v,r[7]=0,r[8]=w+p,r[9]=m-v,r[10]=1-h-l,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},negate:function(t,e){const r=e??new n(16);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[7]=-t[7],r[8]=-t[8],r[9]=-t[9],r[10]=-t[10],r[11]=-t[11],r[12]=-t[12],r[13]=-t[13],r[14]=-t[14],r[15]=-t[15],r},copy:e,clone:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[3]-t[3])<o&&Math.abs(n[4]-t[4])<o&&Math.abs(n[5]-t[5])<o&&Math.abs(n[6]-t[6])<o&&Math.abs(n[7]-t[7])<o&&Math.abs(n[8]-t[8])<o&&Math.abs(n[9]-t[9])<o&&Math.abs(n[10]-t[10])<o&&Math.abs(n[11]-t[11])<o&&Math.abs(n[12]-t[12])<o&&Math.abs(n[13]-t[13])<o&&Math.abs(n[14]-t[14])<o&&Math.abs(n[15]-t[15])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]&&n[11]===t[11]&&n[12]===t[12]&&n[13]===t[13]&&n[14]===t[14]&&n[15]===t[15]},identity:c,transpose:function(t,e){const r=e??new n(16);if(r===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,r}const o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],h=t[7],M=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],p=t[14],q=t[15];return r[0]=o,r[1]=s,r[2]=M,r[3]=d,r[4]=c,r[5]=i,r[6]=l,r[7]=v,r[8]=u,r[9]=f,r[10]=w,r[11]=p,r[12]=a,r[13]=h,r[14]=m,r[15]=q,r},inverse:u,determinant:function(n){const t=n[0],e=n[1],r=n[2],o=n[3],c=n[4],u=n[5],a=n[6],s=n[7],i=n[8],f=n[9],h=n[10],M=n[11],l=n[12],w=n[13],m=n[14],d=n[15],v=h*d,p=m*M,q=a*d,b=m*s,g=a*M,x=h*s,y=r*d,A=m*o,S=r*M,z=h*o,F=r*s,T=a*o;return t*(v*u+b*f+g*w-(p*u+q*f+x*w))+c*(p*e+y*f+z*w-(v*e+A*f+S*w))+i*(q*e+A*u+F*w-(b*e+y*u+T*w))+l*(x*e+S*u+T*f-(g*e+z*u+F*f))},invert:a,multiply:s,mul:f,setTranslation:function(n,t,e){const r=e??c();return n!==r&&(r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r[6]=n[6],r[7]=n[7],r[8]=n[8],r[9]=n[9],r[10]=n[10],r[11]=n[11]),r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},getTranslation:function(n,e){const r=e??t.create();return r[0]=n[12],r[1]=n[13],r[2]=n[14],r},getAxis:function(n,e,r){const o=r??t.create(),c=4*e;return o[0]=n[c+0],o[1]=n[c+1],o[2]=n[c+2],o},setAxis:function(n,t,r,o){const c=o===n?o:e(n,o),u=4*r;return c[u+0]=t[0],c[u+1]=t[1],c[u+2]=t[2],c},getScaling:function(n,e){const r=e??t.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],h=n[9],M=n[10];return r[0]=Math.sqrt(o*o+c*c+u*u),r[1]=Math.sqrt(a*a+s*s+i*i),r[2]=Math.sqrt(f*f+h*h+M*M),r},perspective:function(t,e,r,o,c){const u=c??new n(16),a=Math.tan(.5*Math.PI-.5*t);if(u[0]=a/e,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,Number.isFinite(o)){const n=1/(r-o);u[10]=o*n,u[14]=o*r*n}else u[10]=-1,u[14]=-r;return u},perspectiveReverseZ:function(t,e,r,o=1/0,c){const u=c??new n(16),a=1/Math.tan(.5*t);if(u[0]=a/e,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,o===1/0)u[10]=0,u[14]=r;else{const n=1/(o-r);u[10]=r*n,u[14]=o*r*n}return u},ortho:function(t,e,r,o,c,u,a){const s=a??new n(16);return s[0]=2/(e-t),s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2/(o-r),s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1/(c-u),s[11]=0,s[12]=(e+t)/(t-e),s[13]=(o+r)/(r-o),s[14]=c/(c-u),s[15]=1,s},frustum:function(t,e,r,o,c,u,a){const s=a??new n(16),i=e-t,f=o-r,h=c-u;return s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+e)/i,s[9]=(o+r)/f,s[10]=u/h,s[11]=-1,s[12]=0,s[13]=0,s[14]=c*u/h,s[15]=0,s},frustumReverseZ:function(t,e,r,o,c,u=1/0,a){const s=a??new n(16),i=e-t,f=o-r;if(s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+e)/i,s[9]=(o+r)/f,s[11]=-1,s[12]=0,s[13]=0,s[15]=0,u===1/0)s[10]=0,s[14]=c;else{const n=1/(u-c);s[10]=c*n,s[14]=u*c*n}return s},aim:function(e,r,o,c){const u=c??new n(16);return t.normalize(t.subtract(r,e,l),l),t.normalize(t.cross(o,l,h),h),t.normalize(t.cross(l,h,M),M),u[0]=h[0],u[1]=h[1],u[2]=h[2],u[3]=0,u[4]=M[0],u[5]=M[1],u[6]=M[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=e[0],u[13]=e[1],u[14]=e[2],u[15]=1,u},cameraAim:function(e,r,o,c){const u=c??new n(16);return t.normalize(t.subtract(e,r,l),l),t.normalize(t.cross(o,l,h),h),t.normalize(t.cross(l,h,M),M),u[0]=h[0],u[1]=h[1],u[2]=h[2],u[3]=0,u[4]=M[0],u[5]=M[1],u[6]=M[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=e[0],u[13]=e[1],u[14]=e[2],u[15]=1,u},lookAt:function(e,r,o,c){const u=c??new n(16);return t.normalize(t.subtract(e,r,l),l),t.normalize(t.cross(o,l,h),h),t.normalize(t.cross(l,h,M),M),u[0]=h[0],u[1]=M[0],u[2]=l[0],u[3]=0,u[4]=h[1],u[5]=M[1],u[6]=l[1],u[7]=0,u[8]=h[2],u[9]=M[2],u[10]=l[2],u[11]=0,u[12]=-(h[0]*e[0]+h[1]*e[1]+h[2]*e[2]),u[13]=-(M[0]*e[0]+M[1]*e[1]+M[2]*e[2]),u[14]=-(l[0]*e[0]+l[1]*e[1]+l[2]*e[2]),u[15]=1,u},translation:function(t,e){const r=e??new n(16);return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},translate:function(t,e,r){const o=r??new n(16),c=e[0],u=e[1],a=e[2],s=t[0],i=t[1],f=t[2],h=t[3],M=t[4],l=t[5],w=t[6],m=t[7],d=t[8],v=t[9],p=t[10],q=t[11],b=t[12],g=t[13],x=t[14],y=t[15];return t!==o&&(o[0]=s,o[1]=i,o[2]=f,o[3]=h,o[4]=M,o[5]=l,o[6]=w,o[7]=m,o[8]=d,o[9]=v,o[10]=p,o[11]=q),o[12]=s*c+M*u+d*a+b,o[13]=i*c+l*u+v*a+g,o[14]=f*c+w*u+p*a+x,o[15]=h*c+m*u+q*a+y,o},rotationX:function(t,e){const r=e??new n(16),o=Math.cos(t),c=Math.sin(t);return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=o,r[6]=c,r[7]=0,r[8]=0,r[9]=-c,r[10]=o,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},rotateX:function(t,e,r){const o=r??new n(16),c=t[4],u=t[5],a=t[6],s=t[7],i=t[8],f=t[9],h=t[10],M=t[11],l=Math.cos(e),w=Math.sin(e);return o[4]=l*c+w*i,o[5]=l*u+w*f,o[6]=l*a+w*h,o[7]=l*s+w*M,o[8]=l*i-w*c,o[9]=l*f-w*u,o[10]=l*h-w*a,o[11]=l*M-w*s,t!==o&&(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationY:function(t,e){const r=e??new n(16),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=0,r[2]=-c,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=c,r[9]=0,r[10]=o,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},rotateY:function(t,e,r){const o=r??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[8],f=t[9],h=t[10],M=t[11],l=Math.cos(e),w=Math.sin(e);return o[0]=l*c-w*i,o[1]=l*u-w*f,o[2]=l*a-w*h,o[3]=l*s-w*M,o[8]=l*i+w*c,o[9]=l*f+w*u,o[10]=l*h+w*a,o[11]=l*M+w*s,t!==o&&(o[4]=t[4],o[5]=t[5],o[6]=t[6],o[7]=t[7],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationZ:function(t,e){const r=e??new n(16),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=c,r[2]=0,r[3]=0,r[4]=-c,r[5]=o,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},rotateZ:function(t,e,r){const o=r??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],h=t[6],M=t[7],l=Math.cos(e),w=Math.sin(e);return o[0]=l*c+w*i,o[1]=l*u+w*f,o[2]=l*a+w*h,o[3]=l*s+w*M,o[4]=l*i-w*c,o[5]=l*f-w*u,o[6]=l*h-w*a,o[7]=l*M-w*s,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10],o[11]=t[11],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},axisRotation:w,rotation:w,axisRotate:m,rotate:m,scaling:function(t,e){const r=e??new n(16);return r[0]=t[0],r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t[1],r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t[2],r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},scale:function(t,e,r){const o=r??new n(16),c=e[0],u=e[1],a=e[2];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[3]=c*t[3],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],o[7]=u*t[7],o[8]=a*t[8],o[9]=a*t[9],o[10]=a*t[10],o[11]=a*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},uniformScaling:function(t,e){const r=e??new n(16);return r[0]=t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},uniformScale:function(t,e,r){const o=r??new n(16);return o[0]=e*t[0],o[1]=e*t[1],o[2]=e*t[2],o[3]=e*t[3],o[4]=e*t[4],o[5]=e*t[5],o[6]=e*t[6],o[7]=e*t[7],o[8]=e*t[8],o[9]=e*t[9],o[10]=e*t[10],o[11]=e*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o}}}(n),M.set(n,t)),t}const w=new Map;function m(n){let t=w.get(n);return t||(t=function(n){const t=i(n);function e(t,e,r,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==e&&(c[1]=e,void 0!==r&&(c[2]=r,void 0!==o&&(c[3]=o)))),c}const r=e;function c(t,e,r){const o=r??new n(4),c=.5*e,u=Math.sin(c);return o[0]=u*t[0],o[1]=u*t[1],o[2]=u*t[2],o[3]=Math.cos(c),o}function u(t,e,r){const o=r??new n(4),c=t[0],u=t[1],a=t[2],s=t[3],i=e[0],f=e[1],h=e[2],M=e[3];return o[0]=c*M+s*i+u*h-a*f,o[1]=u*M+s*f+a*i-c*h,o[2]=a*M+s*h+c*f-u*i,o[3]=s*M-c*i-u*f-a*h,o}const a=u;function s(t,e,r,c){const u=c??new n(4),a=t[0],s=t[1],i=t[2],f=t[3];let h,M,l=e[0],w=e[1],m=e[2],d=e[3],v=a*l+s*w+i*m+f*d;if(v<0&&(v=-v,l=-l,w=-w,m=-m,d=-d),1-v>o){const n=Math.acos(v),t=Math.sin(n);h=Math.sin((1-r)*n)/t,M=Math.sin(r*n)/t}else h=1-r,M=r;return u[0]=h*a+M*l,u[1]=h*s+M*w,u[2]=h*i+M*m,u[3]=h*f+M*d,u}function f(t,e){const r=e??new n(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r}const h=f;function M(t,e,r){const o=r??new n(4);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],o[3]=t[3]-e[3],o}const l=M;function w(t,e,r){const o=r??new n(4);return o[0]=t[0]*e,o[1]=t[1]*e,o[2]=t[2]*e,o[3]=t[3]*e,o}const m=w;function d(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function v(n){const t=n[0],e=n[1],r=n[2],o=n[3];return Math.sqrt(t*t+e*e+r*r+o*o)}const p=v;function q(n){const t=n[0],e=n[1],r=n[2],o=n[3];return t*t+e*e+r*r+o*o}const b=q;function g(t,e){const r=e??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(r[0]=o/s,r[1]=c/s,r[2]=u/s,r[3]=a/s):(r[0]=0,r[1]=0,r[2]=0,r[3]=1),r}const x=t.create(),y=t.create(),A=t.create(),S=new n(4),z=new n(4);return{create:e,fromValues:r,set:function(t,e,r,o,c){const u=c??new n(4);return u[0]=t,u[1]=e,u[2]=r,u[3]=o,u},fromAxisAngle:c,toAxisAngle:function(n,e){const r=e??t.create(3),c=2*Math.acos(n[3]),u=Math.sin(.5*c);return u>o?(r[0]=n[0]/u,r[1]=n[1]/u,r[2]=n[2]/u):(r[0]=1,r[1]=0,r[2]=0),{angle:c,axis:r}},angle:function(n,t){const e=d(n,t);return Math.acos(2*e*e-1)},multiply:u,mul:a,rotateX:function(t,e,r){const o=r??new n(4),c=.5*e,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),h=Math.cos(c);return o[0]=u*h+i*f,o[1]=a*h+s*f,o[2]=s*h-a*f,o[3]=i*h-u*f,o},rotateY:function(t,e,r){const o=r??new n(4),c=.5*e,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),h=Math.cos(c);return o[0]=u*h-s*f,o[1]=a*h+i*f,o[2]=s*h+u*f,o[3]=i*h-a*f,o},rotateZ:function(t,e,r){const o=r??new n(4),c=.5*e,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),h=Math.cos(c);return o[0]=u*h+a*f,o[1]=a*h-u*f,o[2]=s*h+i*f,o[3]=i*h-s*f,o},slerp:s,inverse:function(t,e){const r=e??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=o*o+c*c+u*u+a*a,i=s?1/s:0;return r[0]=-o*i,r[1]=-c*i,r[2]=-u*i,r[3]=a*i,r},conjugate:function(t,e){const r=e??new n(4);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=t[3],r},fromMat:function(t,e){const r=e??new n(4),o=t[0]+t[5]+t[10];if(o>0){const n=Math.sqrt(o+1);r[3]=.5*n;const e=.5/n;r[0]=(t[6]-t[9])*e,r[1]=(t[8]-t[2])*e,r[2]=(t[1]-t[4])*e}else{let n=0;t[5]>t[0]&&(n=1),t[10]>t[4*n+n]&&(n=2);const e=(n+1)%3,o=(n+2)%3,c=Math.sqrt(t[4*n+n]-t[4*e+e]-t[4*o+o]+1);r[n]=.5*c;const u=.5/c;r[3]=(t[4*e+o]-t[4*o+e])*u,r[e]=(t[4*e+n]+t[4*n+e])*u,r[o]=(t[4*o+n]+t[4*n+o])*u}return r},fromEuler:function(t,e,r,o,c){const u=c??new n(4),a=.5*t,s=.5*e,i=.5*r,f=Math.sin(a),h=Math.cos(a),M=Math.sin(s),l=Math.cos(s),w=Math.sin(i),m=Math.cos(i);switch(o){case"xyz":u[0]=f*l*m+h*M*w,u[1]=h*M*m-f*l*w,u[2]=h*l*w+f*M*m,u[3]=h*l*m-f*M*w;break;case"xzy":u[0]=f*l*m-h*M*w,u[1]=h*M*m-f*l*w,u[2]=h*l*w+f*M*m,u[3]=h*l*m+f*M*w;break;case"yxz":u[0]=f*l*m+h*M*w,u[1]=h*M*m-f*l*w,u[2]=h*l*w-f*M*m,u[3]=h*l*m+f*M*w;break;case"yzx":u[0]=f*l*m+h*M*w,u[1]=h*M*m+f*l*w,u[2]=h*l*w-f*M*m,u[3]=h*l*m-f*M*w;break;case"zxy":u[0]=f*l*m-h*M*w,u[1]=h*M*m+f*l*w,u[2]=h*l*w+f*M*m,u[3]=h*l*m-f*M*w;break;case"zyx":u[0]=f*l*m-h*M*w,u[1]=h*M*m+f*l*w,u[2]=h*l*w-f*M*m,u[3]=h*l*m+f*M*w;break;default:throw new Error(`Unknown rotation order: ${o}`)}return u},copy:f,clone:h,add:function(t,e,r){const o=r??new n(4);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o[2]=t[2]+e[2],o[3]=t[3]+e[3],o},subtract:M,sub:l,mulScalar:w,scale:m,divScalar:function(t,e,r){const o=r??new n(4);return o[0]=t[0]/e,o[1]=t[1]/e,o[2]=t[2]/e,o[3]=t[3]/e,o},dot:d,lerp:function(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c[2]=t[2]+r*(e[2]-t[2]),c[3]=t[3]+r*(e[3]-t[3]),c},length:v,len:p,lengthSq:q,lenSq:b,normalize:g,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[3]-t[3])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},identity:function(t){const e=t??new n(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},rotationTo:function(e,r,o){const u=o??new n(4),a=t.dot(e,r);return a<-.999999?(t.cross(y,e,x),t.len(x)<1e-6&&t.cross(A,e,x),t.normalize(x,x),c(x,Math.PI,u),u):a>.999999?(u[0]=0,u[1]=0,u[2]=0,u[3]=1,u):(t.cross(e,r,x),u[0]=x[0],u[1]=x[1],u[2]=x[2],u[3]=1+a,g(u,u))},sqlerp:function(t,e,r,o,c,u){const a=u??new n(4);return s(t,o,c,S),s(e,r,c,z),s(S,z,2*c*(1-c),a),a}}}(n),w.set(n,t)),t}const d=new Map;function v(n){let t=d.get(n);return t||(t=function(n){function t(t,e,r,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==e&&(c[1]=e,void 0!==r&&(c[2]=r,void 0!==o&&(c[3]=o)))),c}function e(t,e,r){const o=r??new n(4);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],o[3]=t[3]-e[3],o}function r(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c[2]=t[2]+r*(e[2]-t[2]),c[3]=t[3]+r*(e[3]-t[3]),c}function c(t,e,r){const o=r??new n(4);return o[0]=t[0]*e,o[1]=t[1]*e,o[2]=t[2]*e,o[3]=t[3]*e,o}function u(t,e){const r=e??new n(4);return r[0]=1/t[0],r[1]=1/t[1],r[2]=1/t[2],r[3]=1/t[3],r}function a(n){const t=n[0],e=n[1],r=n[2],o=n[3];return Math.sqrt(t*t+e*e+r*r+o*o)}function s(n){const t=n[0],e=n[1],r=n[2],o=n[3];return t*t+e*e+r*r+o*o}function i(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return Math.sqrt(e*e+r*r+o*o+c*c)}function f(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return e*e+r*r+o*o+c*c}function h(t,e){const r=e??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(r[0]=o/s,r[1]=c/s,r[2]=u/s,r[3]=a/s):(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function M(t,e){const r=e??new n(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r}function l(t,e,r){const o=r??new n(4);return o[0]=t[0]*e[0],o[1]=t[1]*e[1],o[2]=t[2]*e[2],o[3]=t[3]*e[3],o}function w(t,e,r){const o=r??new n(4);return o[0]=t[0]/e[0],o[1]=t[1]/e[1],o[2]=t[2]/e[2],o[3]=t[3]/e[3],o}function m(t,e,r){const o=r??new n(4);return h(t,o),c(o,e,o)}return{create:t,fromValues:t,set:function(t,e,r,o,c){const u=c??new n(4);return u[0]=t,u[1]=e,u[2]=r,u[3]=o,u},ceil:function(t,e){const r=e??new n(4);return r[0]=Math.ceil(t[0]),r[1]=Math.ceil(t[1]),r[2]=Math.ceil(t[2]),r[3]=Math.ceil(t[3]),r},floor:function(t,e){const r=e??new n(4);return r[0]=Math.floor(t[0]),r[1]=Math.floor(t[1]),r[2]=Math.floor(t[2]),r[3]=Math.floor(t[3]),r},round:function(t,e){const r=e??new n(4);return r[0]=Math.round(t[0]),r[1]=Math.round(t[1]),r[2]=Math.round(t[2]),r[3]=Math.round(t[3]),r},clamp:function(t,e=0,r=1,o){const c=o??new n(4);return c[0]=Math.min(r,Math.max(e,t[0])),c[1]=Math.min(r,Math.max(e,t[1])),c[2]=Math.min(r,Math.max(e,t[2])),c[3]=Math.min(r,Math.max(e,t[3])),c},add:function(t,e,r){const o=r??new n(4);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o[2]=t[2]+e[2],o[3]=t[3]+e[3],o},addScaled:function(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+e[0]*r,c[1]=t[1]+e[1]*r,c[2]=t[2]+e[2]*r,c[3]=t[3]+e[3]*r,c},subtract:e,sub:e,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[3]-t[3])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},lerp:r,lerpV:function(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+r[0]*(e[0]-t[0]),c[1]=t[1]+r[1]*(e[1]-t[1]),c[2]=t[2]+r[2]*(e[2]-t[2]),c[3]=t[3]+r[3]*(e[3]-t[3]),c},max:function(t,e,r){const o=r??new n(4);return o[0]=Math.max(t[0],e[0]),o[1]=Math.max(t[1],e[1]),o[2]=Math.max(t[2],e[2]),o[3]=Math.max(t[3],e[3]),o},min:function(t,e,r){const o=r??new n(4);return o[0]=Math.min(t[0],e[0]),o[1]=Math.min(t[1],e[1]),o[2]=Math.min(t[2],e[2]),o[3]=Math.min(t[3],e[3]),o},mulScalar:c,scale:c,divScalar:function(t,e,r){const o=r??new n(4);return o[0]=t[0]/e,o[1]=t[1]/e,o[2]=t[2]/e,o[3]=t[3]/e,o},inverse:u,invert:u,dot:function(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]},length:a,len:a,lengthSq:s,lenSq:s,distance:i,dist:i,distanceSq:f,distSq:f,normalize:h,negate:function(t,e){const r=e??new n(4);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r},copy:M,clone:M,multiply:l,mul:l,divide:w,div:w,zero:function(t){const e=t??new n(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e},transformMat4:function(t,e,r){const o=r??new n(4),c=t[0],u=t[1],a=t[2],s=t[3];return o[0]=e[0]*c+e[4]*u+e[8]*a+e[12]*s,o[1]=e[1]*c+e[5]*u+e[9]*a+e[13]*s,o[2]=e[2]*c+e[6]*u+e[10]*a+e[14]*s,o[3]=e[3]*c+e[7]*u+e[11]*a+e[15]*s,o},setLength:m,truncate:function(t,e,r){const o=r??new n(4);return a(t)>e?m(t,e,o):M(t,o)},midpoint:function(t,e,o){return r(t,e,.5,o??new n(4))}}}(n),d.set(n,t)),t}function p(n,t,e,r,o,c){return{mat3:h(n),mat4:l(t),quat:m(e),vec2:a(r),vec3:i(o),vec4:v(c)}}const{mat3:q,mat4:b,quat:g,vec2:x,vec3:y,vec4:A}=p(Float32Array,Float32Array,Float32Array,Float32Array,Float32Array,Float32Array),{mat3:S,mat4:z,quat:F,vec2:T,vec3:k,vec4:I}=p(Float64Array,Float64Array,Float64Array,Float64Array,Float64Array,Float64Array),{mat3:P,mat4:V,quat:Z,vec2:L,vec3:R,vec4:E}=p(t,Array,Array,Array,Array,Array);n.mat3=q,n.mat3d=S,n.mat3n=P,n.mat4=b,n.mat4d=z,n.mat4n=V,n.quat=g,n.quatd=F,n.quatn=Z,n.utils=c,n.vec2=x,n.vec2d=T,n.vec2n=L,n.vec3=y,n.vec3d=k,n.vec3n=R,n.vec4=A,n.vec4d=I,n.vec4n=E})); | ||
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).wgpuMatrix={})}(this,(function(n){"use strict";const t=(e=Array,r=n=>n.fill(0),class extends e{constructor(...n){super(...n),r(this)}});var e,r;let o=1e-6;var c={__proto__:null,get EPSILON(){return o},degToRad:function(n){return n*Math.PI/180},euclideanModulo:function(n,t){return(n%t+t)%t},inverseLerp:function(n,t,e){const r=t-n;return Math.abs(t-n)<o?n:(e-n)/r},lerp:function(n,t,e){return n+(t-n)*e},radToDeg:function(n){return 180*n/Math.PI},setEpsilon:function(n){const t=o;return o=n,t}};const u=new Map;function a(n){let t=u.get(n);return t||(t=function(n){function t(t=0,e=0){const r=new n(2);return void 0!==t&&(r[0]=t,void 0!==e&&(r[1]=e)),r}function e(t,e,r){const o=r??new n(2);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o}function r(t,e,r,o){const c=o??new n(2);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c}function c(t,e,r){const o=r??new n(2);return o[0]=t[0]*e,o[1]=t[1]*e,o}function u(t,e){const r=e??new n(2);return r[0]=1/t[0],r[1]=1/t[1],r}function a(n,t){return n[0]*t[0]+n[1]*t[1]}function s(n){const t=n[0],e=n[1];return Math.sqrt(t*t+e*e)}function i(n){const t=n[0],e=n[1];return t*t+e*e}function f(n,t){const e=n[0]-t[0],r=n[1]-t[1];return Math.sqrt(e*e+r*r)}function h(n,t){const e=n[0]-t[0],r=n[1]-t[1];return e*e+r*r}function M(t,e){const r=e??new n(2),o=t[0],c=t[1],u=Math.sqrt(o*o+c*c);return u>1e-5?(r[0]=o/u,r[1]=c/u):(r[0]=0,r[1]=0),r}function l(t,e){const r=e??new n(2);return r[0]=t[0],r[1]=t[1],r}function w(t,e,r){const o=r??new n(2);return o[0]=t[0]*e[0],o[1]=t[1]*e[1],o}function m(t,e,r){const o=r??new n(2);return o[0]=t[0]/e[0],o[1]=t[1]/e[1],o}function d(t,e,r){const o=r??new n(2);return M(t,o),c(o,e,o)}return{create:t,fromValues:t,set:function(t,e,r){const o=r??new n(2);return o[0]=t,o[1]=e,o},ceil:function(t,e){const r=e??new n(2);return r[0]=Math.ceil(t[0]),r[1]=Math.ceil(t[1]),r},floor:function(t,e){const r=e??new n(2);return r[0]=Math.floor(t[0]),r[1]=Math.floor(t[1]),r},round:function(t,e){const r=e??new n(2);return r[0]=Math.round(t[0]),r[1]=Math.round(t[1]),r},clamp:function(t,e=0,r=1,o){const c=o??new n(2);return c[0]=Math.min(r,Math.max(e,t[0])),c[1]=Math.min(r,Math.max(e,t[1])),c},add:function(t,e,r){const o=r??new n(2);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o},addScaled:function(t,e,r,o){const c=o??new n(2);return c[0]=t[0]+e[0]*r,c[1]=t[1]+e[1]*r,c},angle:function(n,t){const e=n[0],r=n[1],o=t[0],c=t[1],u=Math.sqrt(e*e+r*r)*Math.sqrt(o*o+c*c),s=u&&a(n,t)/u;return Math.acos(s)},subtract:e,sub:e,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]},lerp:r,lerpV:function(t,e,r,o){const c=o??new n(2);return c[0]=t[0]+r[0]*(e[0]-t[0]),c[1]=t[1]+r[1]*(e[1]-t[1]),c},max:function(t,e,r){const o=r??new n(2);return o[0]=Math.max(t[0],e[0]),o[1]=Math.max(t[1],e[1]),o},min:function(t,e,r){const o=r??new n(2);return o[0]=Math.min(t[0],e[0]),o[1]=Math.min(t[1],e[1]),o},mulScalar:c,scale:c,divScalar:function(t,e,r){const o=r??new n(2);return o[0]=t[0]/e,o[1]=t[1]/e,o},inverse:u,invert:u,cross:function(t,e,r){const o=r??new n(3),c=t[0]*e[1]-t[1]*e[0];return o[0]=0,o[1]=0,o[2]=c,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:h,distSq:h,normalize:M,negate:function(t,e){const r=e??new n(2);return r[0]=-t[0],r[1]=-t[1],r},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,e){const r=e??new n(2),o=2*Math.random()*Math.PI;return r[0]=Math.cos(o)*t,r[1]=Math.sin(o)*t,r},zero:function(t){const e=t??new n(2);return e[0]=0,e[1]=0,e},transformMat4:function(t,e,r){const o=r??new n(2),c=t[0],u=t[1];return o[0]=c*e[0]+u*e[4]+e[12],o[1]=c*e[1]+u*e[5]+e[13],o},transformMat3:function(t,e,r){const o=r??new n(2),c=t[0],u=t[1];return o[0]=e[0]*c+e[4]*u+e[8],o[1]=e[1]*c+e[5]*u+e[9],o},rotate:function(t,e,r,o){const c=o??new n(2),u=t[0]-e[0],a=t[1]-e[1],s=Math.sin(r),i=Math.cos(r);return c[0]=u*i-a*s+e[0],c[1]=u*s+a*i+e[1],c},setLength:d,truncate:function(t,e,r){const o=r??new n(2);return s(t)>e?d(t,e,o):l(t,o)},midpoint:function(t,e,o){return r(t,e,.5,o??new n(2))}}}(n),u.set(n,t)),t}const s=new Map;function i(n){let t=s.get(n);return t||(t=function(n){function t(t,e,r){const o=new n(3);return void 0!==t&&(o[0]=t,void 0!==e&&(o[1]=e,void 0!==r&&(o[2]=r))),o}function e(t,e,r){const o=r??new n(3);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],o}function r(t,e,r,o){const c=o??new n(3);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c[2]=t[2]+r*(e[2]-t[2]),c}function c(t,e,r){const o=r??new n(3);return o[0]=t[0]*e,o[1]=t[1]*e,o[2]=t[2]*e,o}function u(t,e){const r=e??new n(3);return r[0]=1/t[0],r[1]=1/t[1],r[2]=1/t[2],r}function a(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function s(n){const t=n[0],e=n[1],r=n[2];return Math.sqrt(t*t+e*e+r*r)}function i(n){const t=n[0],e=n[1],r=n[2];return t*t+e*e+r*r}function f(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2];return Math.sqrt(e*e+r*r+o*o)}function h(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2];return e*e+r*r+o*o}function M(t,e){const r=e??new n(3),o=t[0],c=t[1],u=t[2],a=Math.sqrt(o*o+c*c+u*u);return a>1e-5?(r[0]=o/a,r[1]=c/a,r[2]=u/a):(r[0]=0,r[1]=0,r[2]=0),r}function l(t,e){const r=e??new n(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r}function w(t,e,r){const o=r??new n(3);return o[0]=t[0]*e[0],o[1]=t[1]*e[1],o[2]=t[2]*e[2],o}function m(t,e,r){const o=r??new n(3);return o[0]=t[0]/e[0],o[1]=t[1]/e[1],o[2]=t[2]/e[2],o}function d(t,e,r){const o=r??new n(3);return M(t,o),c(o,e,o)}return{create:t,fromValues:t,set:function(t,e,r,o){const c=o??new n(3);return c[0]=t,c[1]=e,c[2]=r,c},ceil:function(t,e){const r=e??new n(3);return r[0]=Math.ceil(t[0]),r[1]=Math.ceil(t[1]),r[2]=Math.ceil(t[2]),r},floor:function(t,e){const r=e??new n(3);return r[0]=Math.floor(t[0]),r[1]=Math.floor(t[1]),r[2]=Math.floor(t[2]),r},round:function(t,e){const r=e??new n(3);return r[0]=Math.round(t[0]),r[1]=Math.round(t[1]),r[2]=Math.round(t[2]),r},clamp:function(t,e=0,r=1,o){const c=o??new n(3);return c[0]=Math.min(r,Math.max(e,t[0])),c[1]=Math.min(r,Math.max(e,t[1])),c[2]=Math.min(r,Math.max(e,t[2])),c},add:function(t,e,r){const o=r??new n(3);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o[2]=t[2]+e[2],o},addScaled:function(t,e,r,o){const c=o??new n(3);return c[0]=t[0]+e[0]*r,c[1]=t[1]+e[1]*r,c[2]=t[2]+e[2]*r,c},angle:function(n,t){const e=n[0],r=n[1],o=n[2],c=t[0],u=t[1],s=t[2],i=Math.sqrt(e*e+r*r+o*o)*Math.sqrt(c*c+u*u+s*s),f=i&&a(n,t)/i;return Math.acos(f)},subtract:e,sub:e,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]},lerp:r,lerpV:function(t,e,r,o){const c=o??new n(3);return c[0]=t[0]+r[0]*(e[0]-t[0]),c[1]=t[1]+r[1]*(e[1]-t[1]),c[2]=t[2]+r[2]*(e[2]-t[2]),c},max:function(t,e,r){const o=r??new n(3);return o[0]=Math.max(t[0],e[0]),o[1]=Math.max(t[1],e[1]),o[2]=Math.max(t[2],e[2]),o},min:function(t,e,r){const o=r??new n(3);return o[0]=Math.min(t[0],e[0]),o[1]=Math.min(t[1],e[1]),o[2]=Math.min(t[2],e[2]),o},mulScalar:c,scale:c,divScalar:function(t,e,r){const o=r??new n(3);return o[0]=t[0]/e,o[1]=t[1]/e,o[2]=t[2]/e,o},inverse:u,invert:u,cross:function(t,e,r){const o=r??new n(3),c=t[2]*e[0]-t[0]*e[2],u=t[0]*e[1]-t[1]*e[0];return o[0]=t[1]*e[2]-t[2]*e[1],o[1]=c,o[2]=u,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:h,distSq:h,normalize:M,negate:function(t,e){const r=e??new n(3);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,e){const r=e??new n(3),o=2*Math.random()*Math.PI,c=2*Math.random()-1,u=Math.sqrt(1-c*c)*t;return r[0]=Math.cos(o)*u,r[1]=Math.sin(o)*u,r[2]=c*t,r},zero:function(t){const e=t??new n(3);return e[0]=0,e[1]=0,e[2]=0,e},transformMat4:function(t,e,r){const o=r??new n(3),c=t[0],u=t[1],a=t[2],s=e[3]*c+e[7]*u+e[11]*a+e[15]||1;return o[0]=(e[0]*c+e[4]*u+e[8]*a+e[12])/s,o[1]=(e[1]*c+e[5]*u+e[9]*a+e[13])/s,o[2]=(e[2]*c+e[6]*u+e[10]*a+e[14])/s,o},transformMat4Upper3x3:function(t,e,r){const o=r??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*e[0]+u*e[4]+a*e[8],o[1]=c*e[1]+u*e[5]+a*e[9],o[2]=c*e[2]+u*e[6]+a*e[10],o},transformMat3:function(t,e,r){const o=r??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*e[0]+u*e[4]+a*e[8],o[1]=c*e[1]+u*e[5]+a*e[9],o[2]=c*e[2]+u*e[6]+a*e[10],o},transformQuat:function(t,e,r){const o=r??new n(3),c=e[0],u=e[1],a=e[2],s=2*e[3],i=t[0],f=t[1],h=t[2],M=u*h-a*f,l=a*i-c*h,w=c*f-u*i;return o[0]=i+M*s+2*(u*w-a*l),o[1]=f+l*s+2*(a*M-c*w),o[2]=h+w*s+2*(c*l-u*M),o},getTranslation:function(t,e){const r=e??new n(3);return r[0]=t[12],r[1]=t[13],r[2]=t[14],r},getAxis:function(t,e,r){const o=r??new n(3),c=4*e;return o[0]=t[c+0],o[1]=t[c+1],o[2]=t[c+2],o},getScaling:function(t,e){const r=e??new n(3),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],h=t[9],M=t[10];return r[0]=Math.sqrt(o*o+c*c+u*u),r[1]=Math.sqrt(a*a+s*s+i*i),r[2]=Math.sqrt(f*f+h*h+M*M),r},rotateX:function(t,e,r,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-e[0],u[1]=t[1]-e[1],u[2]=t[2]-e[2],a[0]=u[0],a[1]=u[1]*Math.cos(r)-u[2]*Math.sin(r),a[2]=u[1]*Math.sin(r)+u[2]*Math.cos(r),c[0]=a[0]+e[0],c[1]=a[1]+e[1],c[2]=a[2]+e[2],c},rotateY:function(t,e,r,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-e[0],u[1]=t[1]-e[1],u[2]=t[2]-e[2],a[0]=u[2]*Math.sin(r)+u[0]*Math.cos(r),a[1]=u[1],a[2]=u[2]*Math.cos(r)-u[0]*Math.sin(r),c[0]=a[0]+e[0],c[1]=a[1]+e[1],c[2]=a[2]+e[2],c},rotateZ:function(t,e,r,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-e[0],u[1]=t[1]-e[1],u[2]=t[2]-e[2],a[0]=u[0]*Math.cos(r)-u[1]*Math.sin(r),a[1]=u[0]*Math.sin(r)+u[1]*Math.cos(r),a[2]=u[2],c[0]=a[0]+e[0],c[1]=a[1]+e[1],c[2]=a[2]+e[2],c},setLength:d,truncate:function(t,e,r){const o=r??new n(3);return s(t)>e?d(t,e,o):l(t,o)},midpoint:function(t,e,o){return r(t,e,.5,o??new n(3))}}}(n),s.set(n,t)),t}const f=new Map;function h(n){let t=f.get(n);return t||(t=function(n){const t=a(n),e=i(n);function r(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[8]=t[8],r[9]=t[9],r[10]=t[10],r}function c(t){const e=t??new n(12);return e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e}function u(t,e){const r=e??new n(12),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],h=t[9],M=t[10],l=M*s-i*h,w=-M*a+i*f,m=h*a-s*f,d=1/(o*l+c*w+u*m);return r[0]=l*d,r[1]=(-M*c+u*h)*d,r[2]=(i*c-u*s)*d,r[4]=w*d,r[5]=(M*o-u*f)*d,r[6]=(-i*o+u*a)*d,r[8]=m*d,r[9]=(-h*o+c*f)*d,r[10]=(s*o-c*a)*d,r}function s(t,e,r){const o=r??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],h=t[8],M=t[9],l=t[10],w=e[0],m=e[1],d=e[2],v=e[4],p=e[5],q=e[6],b=e[8],g=e[9],x=e[10];return o[0]=c*w+s*m+h*d,o[1]=u*w+i*m+M*d,o[2]=a*w+f*m+l*d,o[4]=c*v+s*p+h*q,o[5]=u*v+i*p+M*q,o[6]=a*v+f*p+l*q,o[8]=c*b+s*g+h*x,o[9]=u*b+i*g+M*x,o[10]=a*b+f*g+l*x,o}function f(t,e){const r=e??new n(12),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=c,r[2]=0,r[4]=-c,r[5]=o,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r}function h(t,e,r){const o=r??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],h=Math.cos(e),M=Math.sin(e);return o[0]=h*c+M*s,o[1]=h*u+M*i,o[2]=h*a+M*f,o[4]=h*s-M*c,o[5]=h*i-M*u,o[6]=h*f-M*a,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o}return{clone:r,create:function(t,e,r,o,c,u,a,s,i){const f=new n(12);return f[3]=0,f[7]=0,f[11]=0,void 0!==t&&(f[0]=t,void 0!==e&&(f[1]=e,void 0!==r&&(f[2]=r,void 0!==o&&(f[4]=o,void 0!==c&&(f[5]=c,void 0!==u&&(f[6]=u,void 0!==a&&(f[8]=a,void 0!==s&&(f[9]=s,void 0!==i&&(f[10]=i))))))))),f},set:function(t,e,r,o,c,u,a,s,i,f){const h=f??new n(12);return h[0]=t,h[1]=e,h[2]=r,h[3]=0,h[4]=o,h[5]=c,h[6]=u,h[7]=0,h[8]=a,h[9]=s,h[10]=i,h[11]=0,h},fromMat4:function(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=0,r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=0,r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=0,r},fromQuat:function(t,e){const r=e??new n(12),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,h=o*s,M=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,p=a*i,q=a*f;return r[0]=1-l-d,r[1]=M+q,r[2]=w-p,r[3]=0,r[4]=M-q,r[5]=1-h-d,r[6]=m+v,r[7]=0,r[8]=w+p,r[9]=m-v,r[10]=1-h-l,r[11]=0,r},negate:function(t,e){const r=e??new n(12);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[8]=-t[8],r[9]=-t[9],r[10]=-t[10],r},copy:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[4]-t[4])<o&&Math.abs(n[5]-t[5])<o&&Math.abs(n[6]-t[6])<o&&Math.abs(n[8]-t[8])<o&&Math.abs(n[9]-t[9])<o&&Math.abs(n[10]-t[10])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]},identity:c,transpose:function(t,e){const r=e??new n(12);if(r===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,r}const o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],h=t[9],M=t[10];return r[0]=o,r[1]=a,r[2]=f,r[4]=c,r[5]=s,r[6]=h,r[8]=u,r[9]=i,r[10]=M,r},inverse:u,invert:u,determinant:function(n){const t=n[0],e=n[1],r=n[2],o=n[4],c=n[5],u=n[6],a=n[8],s=n[9],i=n[10];return t*(c*i-s*u)-o*(e*i-s*r)+a*(e*u-c*r)},mul:s,multiply:s,setTranslation:function(n,t,e){const r=e??c();return n!==r&&(r[0]=n[0],r[1]=n[1],r[2]=n[2],r[4]=n[4],r[5]=n[5],r[6]=n[6]),r[8]=t[0],r[9]=t[1],r[10]=1,r},getTranslation:function(n,e){const r=e??t.create();return r[0]=n[8],r[1]=n[9],r},getAxis:function(n,e,r){const o=r??t.create(),c=4*e;return o[0]=n[c+0],o[1]=n[c+1],o},setAxis:function(n,t,e,o){const c=o===n?n:r(n,o),u=4*e;return c[u+0]=t[0],c[u+1]=t[1],c},getScaling:function(n,e){const r=e??t.create(),o=n[0],c=n[1],u=n[4],a=n[5];return r[0]=Math.sqrt(o*o+c*c),r[1]=Math.sqrt(u*u+a*a),r},get3DScaling:function(n,t){const r=t??e.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],h=n[9],M=n[10];return r[0]=Math.sqrt(o*o+c*c+u*u),r[1]=Math.sqrt(a*a+s*s+i*i),r[2]=Math.sqrt(f*f+h*h+M*M),r},translation:function(t,e){const r=e??new n(12);return r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=t[0],r[9]=t[1],r[10]=1,r},translate:function(t,e,r){const o=r??new n(12),c=e[0],u=e[1],a=t[0],s=t[1],i=t[2],f=t[4],h=t[5],M=t[6],l=t[8],w=t[9],m=t[10];return t!==o&&(o[0]=a,o[1]=s,o[2]=i,o[4]=f,o[5]=h,o[6]=M),o[8]=a*c+f*u+l,o[9]=s*c+h*u+w,o[10]=i*c+M*u+m,o},rotation:f,rotate:h,rotationX:function(t,e){const r=e??new n(12),o=Math.cos(t),c=Math.sin(t);return r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=o,r[6]=c,r[8]=0,r[9]=-c,r[10]=o,r},rotateX:function(t,e,r){const o=r??new n(12),c=t[4],u=t[5],a=t[6],s=t[8],i=t[9],f=t[10],h=Math.cos(e),M=Math.sin(e);return o[4]=h*c+M*s,o[5]=h*u+M*i,o[6]=h*a+M*f,o[8]=h*s-M*c,o[9]=h*i-M*u,o[10]=h*f-M*a,t!==o&&(o[0]=t[0],o[1]=t[1],o[2]=t[2]),o},rotationY:function(t,e){const r=e??new n(12),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=0,r[2]=-c,r[4]=0,r[5]=1,r[6]=0,r[8]=c,r[9]=0,r[10]=o,r},rotateY:function(t,e,r){const o=r??new n(12),c=t[0],u=t[1],a=t[2],s=t[8],i=t[9],f=t[10],h=Math.cos(e),M=Math.sin(e);return o[0]=h*c-M*s,o[1]=h*u-M*i,o[2]=h*a-M*f,o[8]=h*s+M*c,o[9]=h*i+M*u,o[10]=h*f+M*a,t!==o&&(o[4]=t[4],o[5]=t[5],o[6]=t[6]),o},rotationZ:f,rotateZ:h,scaling:function(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=0,r[2]=0,r[4]=0,r[5]=t[1],r[6]=0,r[8]=0,r[9]=0,r[10]=1,r},scale:function(t,e,r){const o=r??new n(12),c=e[0],u=e[1];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},uniformScaling:function(t,e){const r=e??new n(12);return r[0]=t,r[1]=0,r[2]=0,r[4]=0,r[5]=t,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r},uniformScale:function(t,e,r){const o=r??new n(12);return o[0]=e*t[0],o[1]=e*t[1],o[2]=e*t[2],o[4]=e*t[4],o[5]=e*t[5],o[6]=e*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},scaling3D:function(t,e){const r=e??new n(12);return r[0]=t[0],r[1]=0,r[2]=0,r[4]=0,r[5]=t[1],r[6]=0,r[8]=0,r[9]=0,r[10]=t[2],r},scale3D:function(t,e,r){const o=r??new n(12),c=e[0],u=e[1],a=e[2];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],o[8]=a*t[8],o[9]=a*t[9],o[10]=a*t[10],o},uniformScaling3D:function(t,e){const r=e??new n(12);return r[0]=t,r[1]=0,r[2]=0,r[4]=0,r[5]=t,r[6]=0,r[8]=0,r[9]=0,r[10]=t,r},uniformScale3D:function(t,e,r){const o=r??new n(12);return o[0]=e*t[0],o[1]=e*t[1],o[2]=e*t[2],o[4]=e*t[4],o[5]=e*t[5],o[6]=e*t[6],o[8]=e*t[8],o[9]=e*t[9],o[10]=e*t[10],o}}}(n),f.set(n,t)),t}const M=new Map;function l(n){let t=M.get(n);return t||(t=function(n){const t=i(n);function e(t,e){const r=e??new n(16);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}const r=e;function c(t){const e=t??new n(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function u(t,e){const r=e??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],h=t[7],M=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],p=t[14],q=t[15],b=w*q,g=p*m,x=f*q,y=p*h,S=f*m,A=w*h,z=u*q,F=p*a,T=u*m,k=w*a,Z=u*h,I=f*a,P=M*v,V=d*l,D=s*v,X=d*i,Y=s*l,L=M*i,R=o*v,E=d*c,_=o*l,Q=M*c,j=o*i,N=s*c,U=b*i+y*l+S*v-(g*i+x*l+A*v),O=g*c+z*l+k*v-(b*c+F*l+T*v),$=x*c+F*i+Z*v-(y*c+z*i+I*v),B=A*c+T*i+I*l-(S*c+k*i+Z*l),C=1/(o*U+s*O+M*$+d*B);return r[0]=C*U,r[1]=C*O,r[2]=C*$,r[3]=C*B,r[4]=C*(g*s+x*M+A*d-(b*s+y*M+S*d)),r[5]=C*(b*o+F*M+T*d-(g*o+z*M+k*d)),r[6]=C*(y*o+z*s+I*d-(x*o+F*s+Z*d)),r[7]=C*(S*o+k*s+Z*M-(A*o+T*s+I*M)),r[8]=C*(P*h+X*m+Y*q-(V*h+D*m+L*q)),r[9]=C*(V*a+R*m+Q*q-(P*a+E*m+_*q)),r[10]=C*(D*a+E*h+j*q-(X*a+R*h+N*q)),r[11]=C*(L*a+_*h+N*m-(Y*a+Q*h+j*m)),r[12]=C*(D*w+L*p+V*f-(Y*p+P*f+X*w)),r[13]=C*(_*p+P*u+E*w-(R*w+Q*p+V*u)),r[14]=C*(R*f+N*p+X*u-(j*p+D*u+E*f)),r[15]=C*(j*w+Y*u+Q*f-(_*f+N*w+L*u)),r}const a=u;function s(t,e,r){const o=r??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],h=t[6],M=t[7],l=t[8],w=t[9],m=t[10],d=t[11],v=t[12],p=t[13],q=t[14],b=t[15],g=e[0],x=e[1],y=e[2],S=e[3],A=e[4],z=e[5],F=e[6],T=e[7],k=e[8],Z=e[9],I=e[10],P=e[11],V=e[12],D=e[13],X=e[14],Y=e[15];return o[0]=c*g+i*x+l*y+v*S,o[1]=u*g+f*x+w*y+p*S,o[2]=a*g+h*x+m*y+q*S,o[3]=s*g+M*x+d*y+b*S,o[4]=c*A+i*z+l*F+v*T,o[5]=u*A+f*z+w*F+p*T,o[6]=a*A+h*z+m*F+q*T,o[7]=s*A+M*z+d*F+b*T,o[8]=c*k+i*Z+l*I+v*P,o[9]=u*k+f*Z+w*I+p*P,o[10]=a*k+h*Z+m*I+q*P,o[11]=s*k+M*Z+d*I+b*P,o[12]=c*V+i*D+l*X+v*Y,o[13]=u*V+f*D+w*X+p*Y,o[14]=a*V+h*D+m*X+q*Y,o[15]=s*V+M*D+d*X+b*Y,o}const f=s,h=t.create(),M=t.create(),l=t.create();function w(t,e,r){const o=r??new n(16);let c=t[0],u=t[1],a=t[2];const s=Math.sqrt(c*c+u*u+a*a);c/=s,u/=s,a/=s;const i=c*c,f=u*u,h=a*a,M=Math.cos(e),l=Math.sin(e),w=1-M;return o[0]=i+(1-i)*M,o[1]=c*u*w+a*l,o[2]=c*a*w-u*l,o[3]=0,o[4]=c*u*w-a*l,o[5]=f+(1-f)*M,o[6]=u*a*w+c*l,o[7]=0,o[8]=c*a*w+u*l,o[9]=u*a*w-c*l,o[10]=h+(1-h)*M,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}function m(t,e,r,o){const c=o??new n(16);let u=e[0],a=e[1],s=e[2];const i=Math.sqrt(u*u+a*a+s*s);u/=i,a/=i,s/=i;const f=u*u,h=a*a,M=s*s,l=Math.cos(r),w=Math.sin(r),m=1-l,d=f+(1-f)*l,v=u*a*m+s*w,p=u*s*m-a*w,q=u*a*m-s*w,b=h+(1-h)*l,g=a*s*m+u*w,x=u*s*m+a*w,y=a*s*m-u*w,S=M+(1-M)*l,A=t[0],z=t[1],F=t[2],T=t[3],k=t[4],Z=t[5],I=t[6],P=t[7],V=t[8],D=t[9],X=t[10],Y=t[11];return c[0]=d*A+v*k+p*V,c[1]=d*z+v*Z+p*D,c[2]=d*F+v*I+p*X,c[3]=d*T+v*P+p*Y,c[4]=q*A+b*k+g*V,c[5]=q*z+b*Z+g*D,c[6]=q*F+b*I+g*X,c[7]=q*T+b*P+g*Y,c[8]=x*A+y*k+S*V,c[9]=x*z+y*Z+S*D,c[10]=x*F+y*I+S*X,c[11]=x*T+y*P+S*Y,t!==c&&(c[12]=t[12],c[13]=t[13],c[14]=t[14],c[15]=t[15]),c}return{create:function(t,e,r,o,c,u,a,s,i,f,h,M,l,w,m,d){const v=new n(16);return void 0!==t&&(v[0]=t,void 0!==e&&(v[1]=e,void 0!==r&&(v[2]=r,void 0!==o&&(v[3]=o,void 0!==c&&(v[4]=c,void 0!==u&&(v[5]=u,void 0!==a&&(v[6]=a,void 0!==s&&(v[7]=s,void 0!==i&&(v[8]=i,void 0!==f&&(v[9]=f,void 0!==h&&(v[10]=h,void 0!==M&&(v[11]=M,void 0!==l&&(v[12]=l,void 0!==w&&(v[13]=w,void 0!==m&&(v[14]=m,void 0!==d&&(v[15]=d)))))))))))))))),v},set:function(t,e,r,o,c,u,a,s,i,f,h,M,l,w,m,d,v){const p=v??new n(16);return p[0]=t,p[1]=e,p[2]=r,p[3]=o,p[4]=c,p[5]=u,p[6]=a,p[7]=s,p[8]=i,p[9]=f,p[10]=h,p[11]=M,p[12]=l,p[13]=w,p[14]=m,p[15]=d,p},fromMat3:function(t,e){const r=e??new n(16);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=0,r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=0,r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},fromQuat:function(t,e){const r=e??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,h=o*s,M=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,p=a*i,q=a*f;return r[0]=1-l-d,r[1]=M+q,r[2]=w-p,r[3]=0,r[4]=M-q,r[5]=1-h-d,r[6]=m+v,r[7]=0,r[8]=w+p,r[9]=m-v,r[10]=1-h-l,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},negate:function(t,e){const r=e??new n(16);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r[4]=-t[4],r[5]=-t[5],r[6]=-t[6],r[7]=-t[7],r[8]=-t[8],r[9]=-t[9],r[10]=-t[10],r[11]=-t[11],r[12]=-t[12],r[13]=-t[13],r[14]=-t[14],r[15]=-t[15],r},copy:e,clone:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[3]-t[3])<o&&Math.abs(n[4]-t[4])<o&&Math.abs(n[5]-t[5])<o&&Math.abs(n[6]-t[6])<o&&Math.abs(n[7]-t[7])<o&&Math.abs(n[8]-t[8])<o&&Math.abs(n[9]-t[9])<o&&Math.abs(n[10]-t[10])<o&&Math.abs(n[11]-t[11])<o&&Math.abs(n[12]-t[12])<o&&Math.abs(n[13]-t[13])<o&&Math.abs(n[14]-t[14])<o&&Math.abs(n[15]-t[15])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]&&n[11]===t[11]&&n[12]===t[12]&&n[13]===t[13]&&n[14]===t[14]&&n[15]===t[15]},identity:c,transpose:function(t,e){const r=e??new n(16);if(r===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,r}const o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],h=t[7],M=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],p=t[14],q=t[15];return r[0]=o,r[1]=s,r[2]=M,r[3]=d,r[4]=c,r[5]=i,r[6]=l,r[7]=v,r[8]=u,r[9]=f,r[10]=w,r[11]=p,r[12]=a,r[13]=h,r[14]=m,r[15]=q,r},inverse:u,determinant:function(n){const t=n[0],e=n[1],r=n[2],o=n[3],c=n[4],u=n[5],a=n[6],s=n[7],i=n[8],f=n[9],h=n[10],M=n[11],l=n[12],w=n[13],m=n[14],d=n[15],v=h*d,p=m*M,q=a*d,b=m*s,g=a*M,x=h*s,y=r*d,S=m*o,A=r*M,z=h*o,F=r*s,T=a*o;return t*(v*u+b*f+g*w-(p*u+q*f+x*w))+c*(p*e+y*f+z*w-(v*e+S*f+A*w))+i*(q*e+S*u+F*w-(b*e+y*u+T*w))+l*(x*e+A*u+T*f-(g*e+z*u+F*f))},invert:a,multiply:s,mul:f,setTranslation:function(n,t,e){const r=e??c();return n!==r&&(r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r[6]=n[6],r[7]=n[7],r[8]=n[8],r[9]=n[9],r[10]=n[10],r[11]=n[11]),r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},getTranslation:function(n,e){const r=e??t.create();return r[0]=n[12],r[1]=n[13],r[2]=n[14],r},getAxis:function(n,e,r){const o=r??t.create(),c=4*e;return o[0]=n[c+0],o[1]=n[c+1],o[2]=n[c+2],o},setAxis:function(n,t,r,o){const c=o===n?o:e(n,o),u=4*r;return c[u+0]=t[0],c[u+1]=t[1],c[u+2]=t[2],c},getScaling:function(n,e){const r=e??t.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],h=n[9],M=n[10];return r[0]=Math.sqrt(o*o+c*c+u*u),r[1]=Math.sqrt(a*a+s*s+i*i),r[2]=Math.sqrt(f*f+h*h+M*M),r},perspective:function(t,e,r,o,c){const u=c??new n(16),a=Math.tan(.5*Math.PI-.5*t);if(u[0]=a/e,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,Number.isFinite(o)){const n=1/(r-o);u[10]=o*n,u[14]=o*r*n}else u[10]=-1,u[14]=-r;return u},perspectiveReverseZ:function(t,e,r,o=1/0,c){const u=c??new n(16),a=1/Math.tan(.5*t);if(u[0]=a/e,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,o===1/0)u[10]=0,u[14]=r;else{const n=1/(o-r);u[10]=r*n,u[14]=o*r*n}return u},ortho:function(t,e,r,o,c,u,a){const s=a??new n(16);return s[0]=2/(e-t),s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2/(o-r),s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1/(c-u),s[11]=0,s[12]=(e+t)/(t-e),s[13]=(o+r)/(r-o),s[14]=c/(c-u),s[15]=1,s},frustum:function(t,e,r,o,c,u,a){const s=a??new n(16),i=e-t,f=o-r,h=c-u;return s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+e)/i,s[9]=(o+r)/f,s[10]=u/h,s[11]=-1,s[12]=0,s[13]=0,s[14]=c*u/h,s[15]=0,s},frustumReverseZ:function(t,e,r,o,c,u=1/0,a){const s=a??new n(16),i=e-t,f=o-r;if(s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+e)/i,s[9]=(o+r)/f,s[11]=-1,s[12]=0,s[13]=0,s[15]=0,u===1/0)s[10]=0,s[14]=c;else{const n=1/(u-c);s[10]=c*n,s[14]=u*c*n}return s},aim:function(e,r,o,c){const u=c??new n(16);return t.normalize(t.subtract(r,e,l),l),t.normalize(t.cross(o,l,h),h),t.normalize(t.cross(l,h,M),M),u[0]=h[0],u[1]=h[1],u[2]=h[2],u[3]=0,u[4]=M[0],u[5]=M[1],u[6]=M[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=e[0],u[13]=e[1],u[14]=e[2],u[15]=1,u},cameraAim:function(e,r,o,c){const u=c??new n(16);return t.normalize(t.subtract(e,r,l),l),t.normalize(t.cross(o,l,h),h),t.normalize(t.cross(l,h,M),M),u[0]=h[0],u[1]=h[1],u[2]=h[2],u[3]=0,u[4]=M[0],u[5]=M[1],u[6]=M[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=e[0],u[13]=e[1],u[14]=e[2],u[15]=1,u},lookAt:function(e,r,o,c){const u=c??new n(16);return t.normalize(t.subtract(e,r,l),l),t.normalize(t.cross(o,l,h),h),t.normalize(t.cross(l,h,M),M),u[0]=h[0],u[1]=M[0],u[2]=l[0],u[3]=0,u[4]=h[1],u[5]=M[1],u[6]=l[1],u[7]=0,u[8]=h[2],u[9]=M[2],u[10]=l[2],u[11]=0,u[12]=-(h[0]*e[0]+h[1]*e[1]+h[2]*e[2]),u[13]=-(M[0]*e[0]+M[1]*e[1]+M[2]*e[2]),u[14]=-(l[0]*e[0]+l[1]*e[1]+l[2]*e[2]),u[15]=1,u},translation:function(t,e){const r=e??new n(16);return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},translate:function(t,e,r){const o=r??new n(16),c=e[0],u=e[1],a=e[2],s=t[0],i=t[1],f=t[2],h=t[3],M=t[4],l=t[5],w=t[6],m=t[7],d=t[8],v=t[9],p=t[10],q=t[11],b=t[12],g=t[13],x=t[14],y=t[15];return t!==o&&(o[0]=s,o[1]=i,o[2]=f,o[3]=h,o[4]=M,o[5]=l,o[6]=w,o[7]=m,o[8]=d,o[9]=v,o[10]=p,o[11]=q),o[12]=s*c+M*u+d*a+b,o[13]=i*c+l*u+v*a+g,o[14]=f*c+w*u+p*a+x,o[15]=h*c+m*u+q*a+y,o},rotationX:function(t,e){const r=e??new n(16),o=Math.cos(t),c=Math.sin(t);return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=o,r[6]=c,r[7]=0,r[8]=0,r[9]=-c,r[10]=o,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},rotateX:function(t,e,r){const o=r??new n(16),c=t[4],u=t[5],a=t[6],s=t[7],i=t[8],f=t[9],h=t[10],M=t[11],l=Math.cos(e),w=Math.sin(e);return o[4]=l*c+w*i,o[5]=l*u+w*f,o[6]=l*a+w*h,o[7]=l*s+w*M,o[8]=l*i-w*c,o[9]=l*f-w*u,o[10]=l*h-w*a,o[11]=l*M-w*s,t!==o&&(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationY:function(t,e){const r=e??new n(16),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=0,r[2]=-c,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=c,r[9]=0,r[10]=o,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},rotateY:function(t,e,r){const o=r??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[8],f=t[9],h=t[10],M=t[11],l=Math.cos(e),w=Math.sin(e);return o[0]=l*c-w*i,o[1]=l*u-w*f,o[2]=l*a-w*h,o[3]=l*s-w*M,o[8]=l*i+w*c,o[9]=l*f+w*u,o[10]=l*h+w*a,o[11]=l*M+w*s,t!==o&&(o[4]=t[4],o[5]=t[5],o[6]=t[6],o[7]=t[7],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationZ:function(t,e){const r=e??new n(16),o=Math.cos(t),c=Math.sin(t);return r[0]=o,r[1]=c,r[2]=0,r[3]=0,r[4]=-c,r[5]=o,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},rotateZ:function(t,e,r){const o=r??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],h=t[6],M=t[7],l=Math.cos(e),w=Math.sin(e);return o[0]=l*c+w*i,o[1]=l*u+w*f,o[2]=l*a+w*h,o[3]=l*s+w*M,o[4]=l*i-w*c,o[5]=l*f-w*u,o[6]=l*h-w*a,o[7]=l*M-w*s,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10],o[11]=t[11],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},axisRotation:w,rotation:w,axisRotate:m,rotate:m,scaling:function(t,e){const r=e??new n(16);return r[0]=t[0],r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t[1],r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t[2],r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},scale:function(t,e,r){const o=r??new n(16),c=e[0],u=e[1],a=e[2];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[3]=c*t[3],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],o[7]=u*t[7],o[8]=a*t[8],o[9]=a*t[9],o[10]=a*t[10],o[11]=a*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},uniformScaling:function(t,e){const r=e??new n(16);return r[0]=t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=t,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=t,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},uniformScale:function(t,e,r){const o=r??new n(16);return o[0]=e*t[0],o[1]=e*t[1],o[2]=e*t[2],o[3]=e*t[3],o[4]=e*t[4],o[5]=e*t[5],o[6]=e*t[6],o[7]=e*t[7],o[8]=e*t[8],o[9]=e*t[9],o[10]=e*t[10],o[11]=e*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o}}}(n),M.set(n,t)),t}const w=new Map;function m(n){let t=w.get(n);return t||(t=function(n){const t=i(n);function e(t,e,r,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==e&&(c[1]=e,void 0!==r&&(c[2]=r,void 0!==o&&(c[3]=o)))),c}const r=e;function c(t,e,r){const o=r??new n(4),c=.5*e,u=Math.sin(c);return o[0]=u*t[0],o[1]=u*t[1],o[2]=u*t[2],o[3]=Math.cos(c),o}function u(t,e,r){const o=r??new n(4),c=t[0],u=t[1],a=t[2],s=t[3],i=e[0],f=e[1],h=e[2],M=e[3];return o[0]=c*M+s*i+u*h-a*f,o[1]=u*M+s*f+a*i-c*h,o[2]=a*M+s*h+c*f-u*i,o[3]=s*M-c*i-u*f-a*h,o}const a=u;function s(t,e,r,c){const u=c??new n(4),a=t[0],s=t[1],i=t[2],f=t[3];let h,M,l=e[0],w=e[1],m=e[2],d=e[3],v=a*l+s*w+i*m+f*d;if(v<0&&(v=-v,l=-l,w=-w,m=-m,d=-d),1-v>o){const n=Math.acos(v),t=Math.sin(n);h=Math.sin((1-r)*n)/t,M=Math.sin(r*n)/t}else h=1-r,M=r;return u[0]=h*a+M*l,u[1]=h*s+M*w,u[2]=h*i+M*m,u[3]=h*f+M*d,u}function f(t,e){const r=e??new n(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r}const h=f;function M(t,e,r){const o=r??new n(4);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],o[3]=t[3]-e[3],o}const l=M;function w(t,e,r){const o=r??new n(4);return o[0]=t[0]*e,o[1]=t[1]*e,o[2]=t[2]*e,o[3]=t[3]*e,o}const m=w;function d(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function v(n){const t=n[0],e=n[1],r=n[2],o=n[3];return Math.sqrt(t*t+e*e+r*r+o*o)}const p=v;function q(n){const t=n[0],e=n[1],r=n[2],o=n[3];return t*t+e*e+r*r+o*o}const b=q;function g(t,e){const r=e??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(r[0]=o/s,r[1]=c/s,r[2]=u/s,r[3]=a/s):(r[0]=0,r[1]=0,r[2]=0,r[3]=1),r}const x=t.create(),y=t.create(),S=t.create(),A=new n(4),z=new n(4);return{create:e,fromValues:r,set:function(t,e,r,o,c){const u=c??new n(4);return u[0]=t,u[1]=e,u[2]=r,u[3]=o,u},fromAxisAngle:c,toAxisAngle:function(n,e){const r=e??t.create(3),c=2*Math.acos(n[3]),u=Math.sin(.5*c);return u>o?(r[0]=n[0]/u,r[1]=n[1]/u,r[2]=n[2]/u):(r[0]=1,r[1]=0,r[2]=0),{angle:c,axis:r}},angle:function(n,t){const e=d(n,t);return Math.acos(2*e*e-1)},multiply:u,mul:a,rotateX:function(t,e,r){const o=r??new n(4),c=.5*e,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),h=Math.cos(c);return o[0]=u*h+i*f,o[1]=a*h+s*f,o[2]=s*h-a*f,o[3]=i*h-u*f,o},rotateY:function(t,e,r){const o=r??new n(4),c=.5*e,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),h=Math.cos(c);return o[0]=u*h-s*f,o[1]=a*h+i*f,o[2]=s*h+u*f,o[3]=i*h-a*f,o},rotateZ:function(t,e,r){const o=r??new n(4),c=.5*e,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),h=Math.cos(c);return o[0]=u*h+a*f,o[1]=a*h-u*f,o[2]=s*h+i*f,o[3]=i*h-s*f,o},slerp:s,inverse:function(t,e){const r=e??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=o*o+c*c+u*u+a*a,i=s?1/s:0;return r[0]=-o*i,r[1]=-c*i,r[2]=-u*i,r[3]=a*i,r},conjugate:function(t,e){const r=e??new n(4);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=t[3],r},fromMat:function(t,e){const r=e??new n(4),o=t[0]+t[5]+t[10];if(o>0){const n=Math.sqrt(o+1);r[3]=.5*n;const e=.5/n;r[0]=(t[6]-t[9])*e,r[1]=(t[8]-t[2])*e,r[2]=(t[1]-t[4])*e}else{let n=0;t[5]>t[0]&&(n=1),t[10]>t[4*n+n]&&(n=2);const e=(n+1)%3,o=(n+2)%3,c=Math.sqrt(t[4*n+n]-t[4*e+e]-t[4*o+o]+1);r[n]=.5*c;const u=.5/c;r[3]=(t[4*e+o]-t[4*o+e])*u,r[e]=(t[4*e+n]+t[4*n+e])*u,r[o]=(t[4*o+n]+t[4*n+o])*u}return r},fromEuler:function(t,e,r,o,c){const u=c??new n(4),a=.5*t,s=.5*e,i=.5*r,f=Math.sin(a),h=Math.cos(a),M=Math.sin(s),l=Math.cos(s),w=Math.sin(i),m=Math.cos(i);switch(o){case"xyz":u[0]=f*l*m+h*M*w,u[1]=h*M*m-f*l*w,u[2]=h*l*w+f*M*m,u[3]=h*l*m-f*M*w;break;case"xzy":u[0]=f*l*m-h*M*w,u[1]=h*M*m-f*l*w,u[2]=h*l*w+f*M*m,u[3]=h*l*m+f*M*w;break;case"yxz":u[0]=f*l*m+h*M*w,u[1]=h*M*m-f*l*w,u[2]=h*l*w-f*M*m,u[3]=h*l*m+f*M*w;break;case"yzx":u[0]=f*l*m+h*M*w,u[1]=h*M*m+f*l*w,u[2]=h*l*w-f*M*m,u[3]=h*l*m-f*M*w;break;case"zxy":u[0]=f*l*m-h*M*w,u[1]=h*M*m+f*l*w,u[2]=h*l*w+f*M*m,u[3]=h*l*m-f*M*w;break;case"zyx":u[0]=f*l*m-h*M*w,u[1]=h*M*m+f*l*w,u[2]=h*l*w-f*M*m,u[3]=h*l*m+f*M*w;break;default:throw new Error(`Unknown rotation order: ${o}`)}return u},copy:f,clone:h,add:function(t,e,r){const o=r??new n(4);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o[2]=t[2]+e[2],o[3]=t[3]+e[3],o},subtract:M,sub:l,mulScalar:w,scale:m,divScalar:function(t,e,r){const o=r??new n(4);return o[0]=t[0]/e,o[1]=t[1]/e,o[2]=t[2]/e,o[3]=t[3]/e,o},dot:d,lerp:function(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c[2]=t[2]+r*(e[2]-t[2]),c[3]=t[3]+r*(e[3]-t[3]),c},length:v,len:p,lengthSq:q,lenSq:b,normalize:g,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[3]-t[3])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},identity:function(t){const e=t??new n(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},rotationTo:function(e,r,o){const u=o??new n(4),a=t.dot(e,r);return a<-.999999?(t.cross(y,e,x),t.len(x)<1e-6&&t.cross(S,e,x),t.normalize(x,x),c(x,Math.PI,u),u):a>.999999?(u[0]=0,u[1]=0,u[2]=0,u[3]=1,u):(t.cross(e,r,x),u[0]=x[0],u[1]=x[1],u[2]=x[2],u[3]=1+a,g(u,u))},sqlerp:function(t,e,r,o,c,u){const a=u??new n(4);return s(t,o,c,A),s(e,r,c,z),s(A,z,2*c*(1-c),a),a}}}(n),w.set(n,t)),t}const d=new Map;function v(n){let t=d.get(n);return t||(t=function(n){function t(t,e,r,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==e&&(c[1]=e,void 0!==r&&(c[2]=r,void 0!==o&&(c[3]=o)))),c}function e(t,e,r){const o=r??new n(4);return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],o[3]=t[3]-e[3],o}function r(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+r*(e[0]-t[0]),c[1]=t[1]+r*(e[1]-t[1]),c[2]=t[2]+r*(e[2]-t[2]),c[3]=t[3]+r*(e[3]-t[3]),c}function c(t,e,r){const o=r??new n(4);return o[0]=t[0]*e,o[1]=t[1]*e,o[2]=t[2]*e,o[3]=t[3]*e,o}function u(t,e){const r=e??new n(4);return r[0]=1/t[0],r[1]=1/t[1],r[2]=1/t[2],r[3]=1/t[3],r}function a(n){const t=n[0],e=n[1],r=n[2],o=n[3];return Math.sqrt(t*t+e*e+r*r+o*o)}function s(n){const t=n[0],e=n[1],r=n[2],o=n[3];return t*t+e*e+r*r+o*o}function i(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return Math.sqrt(e*e+r*r+o*o+c*c)}function f(n,t){const e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return e*e+r*r+o*o+c*c}function h(t,e){const r=e??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(r[0]=o/s,r[1]=c/s,r[2]=u/s,r[3]=a/s):(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function M(t,e){const r=e??new n(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r}function l(t,e,r){const o=r??new n(4);return o[0]=t[0]*e[0],o[1]=t[1]*e[1],o[2]=t[2]*e[2],o[3]=t[3]*e[3],o}function w(t,e,r){const o=r??new n(4);return o[0]=t[0]/e[0],o[1]=t[1]/e[1],o[2]=t[2]/e[2],o[3]=t[3]/e[3],o}function m(t,e,r){const o=r??new n(4);return h(t,o),c(o,e,o)}return{create:t,fromValues:t,set:function(t,e,r,o,c){const u=c??new n(4);return u[0]=t,u[1]=e,u[2]=r,u[3]=o,u},ceil:function(t,e){const r=e??new n(4);return r[0]=Math.ceil(t[0]),r[1]=Math.ceil(t[1]),r[2]=Math.ceil(t[2]),r[3]=Math.ceil(t[3]),r},floor:function(t,e){const r=e??new n(4);return r[0]=Math.floor(t[0]),r[1]=Math.floor(t[1]),r[2]=Math.floor(t[2]),r[3]=Math.floor(t[3]),r},round:function(t,e){const r=e??new n(4);return r[0]=Math.round(t[0]),r[1]=Math.round(t[1]),r[2]=Math.round(t[2]),r[3]=Math.round(t[3]),r},clamp:function(t,e=0,r=1,o){const c=o??new n(4);return c[0]=Math.min(r,Math.max(e,t[0])),c[1]=Math.min(r,Math.max(e,t[1])),c[2]=Math.min(r,Math.max(e,t[2])),c[3]=Math.min(r,Math.max(e,t[3])),c},add:function(t,e,r){const o=r??new n(4);return o[0]=t[0]+e[0],o[1]=t[1]+e[1],o[2]=t[2]+e[2],o[3]=t[3]+e[3],o},addScaled:function(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+e[0]*r,c[1]=t[1]+e[1]*r,c[2]=t[2]+e[2]*r,c[3]=t[3]+e[3]*r,c},subtract:e,sub:e,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<o&&Math.abs(n[1]-t[1])<o&&Math.abs(n[2]-t[2])<o&&Math.abs(n[3]-t[3])<o},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},lerp:r,lerpV:function(t,e,r,o){const c=o??new n(4);return c[0]=t[0]+r[0]*(e[0]-t[0]),c[1]=t[1]+r[1]*(e[1]-t[1]),c[2]=t[2]+r[2]*(e[2]-t[2]),c[3]=t[3]+r[3]*(e[3]-t[3]),c},max:function(t,e,r){const o=r??new n(4);return o[0]=Math.max(t[0],e[0]),o[1]=Math.max(t[1],e[1]),o[2]=Math.max(t[2],e[2]),o[3]=Math.max(t[3],e[3]),o},min:function(t,e,r){const o=r??new n(4);return o[0]=Math.min(t[0],e[0]),o[1]=Math.min(t[1],e[1]),o[2]=Math.min(t[2],e[2]),o[3]=Math.min(t[3],e[3]),o},mulScalar:c,scale:c,divScalar:function(t,e,r){const o=r??new n(4);return o[0]=t[0]/e,o[1]=t[1]/e,o[2]=t[2]/e,o[3]=t[3]/e,o},inverse:u,invert:u,dot:function(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]},length:a,len:a,lengthSq:s,lenSq:s,distance:i,dist:i,distanceSq:f,distSq:f,normalize:h,negate:function(t,e){const r=e??new n(4);return r[0]=-t[0],r[1]=-t[1],r[2]=-t[2],r[3]=-t[3],r},copy:M,clone:M,multiply:l,mul:l,divide:w,div:w,zero:function(t){const e=t??new n(4);return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e},transformMat4:function(t,e,r){const o=r??new n(4),c=t[0],u=t[1],a=t[2],s=t[3];return o[0]=e[0]*c+e[4]*u+e[8]*a+e[12]*s,o[1]=e[1]*c+e[5]*u+e[9]*a+e[13]*s,o[2]=e[2]*c+e[6]*u+e[10]*a+e[14]*s,o[3]=e[3]*c+e[7]*u+e[11]*a+e[15]*s,o},setLength:m,truncate:function(t,e,r){const o=r??new n(4);return a(t)>e?m(t,e,o):M(t,o)},midpoint:function(t,e,o){return r(t,e,.5,o??new n(4))}}}(n),d.set(n,t)),t}function p(n,t,e,r,o,c){return{mat3:h(n),mat4:l(t),quat:m(e),vec2:a(r),vec3:i(o),vec4:v(c)}}const{mat3:q,mat4:b,quat:g,vec2:x,vec3:y,vec4:S}=p(Float32Array,Float32Array,Float32Array,Float32Array,Float32Array,Float32Array),{mat3:A,mat4:z,quat:F,vec2:T,vec3:k,vec4:Z}=p(Float64Array,Float64Array,Float64Array,Float64Array,Float64Array,Float64Array),{mat3:I,mat4:P,quat:V,vec2:D,vec3:X,vec4:Y}=p(t,Array,Array,Array,Array,Array);n.mat3=q,n.mat3d=A,n.mat3n=I,n.mat4=b,n.mat4d=z,n.mat4n=P,n.quat=g,n.quatd=F,n.quatn=V,n.utils=c,n.vec2=x,n.vec2d=T,n.vec2n=D,n.vec3=y,n.vec3d=k,n.vec3n=X,n.vec4=S,n.vec4d=Z,n.vec4n=Y})); | ||
//# sourceMappingURL=wgpu-matrix.min.js.map |
@@ -1,2 +0,2 @@ | ||
const n=(t=Array,r=n=>n.fill(0),class extends t{constructor(...n){super(...n),r(this)}});var t,r;let e=1e-6;var o={__proto__:null,get EPSILON(){return e},degToRad:function(n){return n*Math.PI/180},euclideanModulo:function(n,t){return(n%t+t)%t},inverseLerp:function(n,t,r){const o=t-n;return Math.abs(t-n)<e?n:(r-n)/o},lerp:function(n,t,r){return n+(t-n)*r},radToDeg:function(n){return 180*n/Math.PI},setEpsilon:function(n){const t=e;return e=n,t}};const c=new Map;function u(n){let t=c.get(n);return t||(t=function(n){function t(t=0,r=0){const e=new n(2);return void 0!==t&&(e[0]=t,void 0!==r&&(e[1]=r)),e}function r(t,r,e){const o=e??new n(2);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o}function o(t,r,e,o){const c=o??new n(2);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c}function c(t,r,e){const o=e??new n(2);return o[0]=t[0]*r,o[1]=t[1]*r,o}function u(t,r){const e=r??new n(2);return e[0]=1/t[0],e[1]=1/t[1],e}function a(n,t){return n[0]*t[0]+n[1]*t[1]}function s(n){const t=n[0],r=n[1];return Math.sqrt(t*t+r*r)}function i(n){const t=n[0],r=n[1];return t*t+r*r}function f(n,t){const r=n[0]-t[0],e=n[1]-t[1];return Math.sqrt(r*r+e*e)}function M(n,t){const r=n[0]-t[0],e=n[1]-t[1];return r*r+e*e}function h(t,r){const e=r??new n(2),o=t[0],c=t[1],u=Math.sqrt(o*o+c*c);return u>1e-5?(e[0]=o/u,e[1]=c/u):(e[0]=0,e[1]=0),e}function l(t,r){const e=r??new n(2);return e[0]=t[0],e[1]=t[1],e}function w(t,r,e){const o=e??new n(2);return o[0]=t[0]*r[0],o[1]=t[1]*r[1],o}function m(t,r,e){const o=e??new n(2);return o[0]=t[0]/r[0],o[1]=t[1]/r[1],o}function d(t,r,e){const o=e??new n(2);return h(t,o),c(o,r,o)}return{create:t,fromValues:t,set:function(t,r,e){const o=e??new n(2);return o[0]=t,o[1]=r,o},ceil:function(t,r){const e=r??new n(2);return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e},floor:function(t,r){const e=r??new n(2);return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e},round:function(t,r){const e=r??new n(2);return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e},clamp:function(t,r=0,e=1,o){const c=o??new n(2);return c[0]=Math.min(e,Math.max(r,t[0])),c[1]=Math.min(e,Math.max(r,t[1])),c},add:function(t,r,e){const o=e??new n(2);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o},addScaled:function(t,r,e,o){const c=o??new n(2);return c[0]=t[0]+r[0]*e,c[1]=t[1]+r[1]*e,c},angle:function(n,t){const r=n[0],e=n[1],o=t[0],c=t[1],u=Math.sqrt(r*r+e*e)*Math.sqrt(o*o+c*c),s=u&&a(n,t)/u;return Math.acos(s)},subtract:r,sub:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]},lerp:o,lerpV:function(t,r,e,o){const c=o??new n(2);return c[0]=t[0]+e[0]*(r[0]-t[0]),c[1]=t[1]+e[1]*(r[1]-t[1]),c},max:function(t,r,e){const o=e??new n(2);return o[0]=Math.max(t[0],r[0]),o[1]=Math.max(t[1],r[1]),o},min:function(t,r,e){const o=e??new n(2);return o[0]=Math.min(t[0],r[0]),o[1]=Math.min(t[1],r[1]),o},mulScalar:c,scale:c,divScalar:function(t,r,e){const o=e??new n(2);return o[0]=t[0]/r,o[1]=t[1]/r,o},inverse:u,invert:u,cross:function(t,r,e){const o=e??new n(3),c=t[0]*r[1]-t[1]*r[0];return o[0]=0,o[1]=0,o[2]=c,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:M,distSq:M,normalize:h,negate:function(t,r){const e=r??new n(2);return e[0]=-t[0],e[1]=-t[1],e},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,r){const e=r??new n(2),o=2*Math.random()*Math.PI;return e[0]=Math.cos(o)*t,e[1]=Math.sin(o)*t,e},zero:function(t){const r=t??new n(2);return r[0]=0,r[1]=0,r},transformMat4:function(t,r,e){const o=e??new n(2),c=t[0],u=t[1];return o[0]=c*r[0]+u*r[4]+r[12],o[1]=c*r[1]+u*r[5]+r[13],o},transformMat3:function(t,r,e){const o=e??new n(2),c=t[0],u=t[1];return o[0]=r[0]*c+r[4]*u+r[8],o[1]=r[1]*c+r[5]*u+r[9],o},rotate:function(t,r,e,o){const c=o??new n(2),u=t[0]-r[0],a=t[1]-r[1],s=Math.sin(e),i=Math.cos(e);return c[0]=u*i-a*s+r[0],c[1]=u*s+a*i+r[1],c},setLength:d,truncate:function(t,r,e){const o=e??new n(2);return s(t)>r?d(t,r,o):l(t,o)},midpoint:function(t,r,e){return o(t,r,.5,e??new n(2))}}}(n),c.set(n,t)),t}const a=new Map;function s(n){let t=a.get(n);return t||(t=function(n){function t(t,r,e){const o=new n(3);return void 0!==t&&(o[0]=t,void 0!==r&&(o[1]=r,void 0!==e&&(o[2]=e))),o}function r(t,r,e){const o=e??new n(3);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],o}function o(t,r,e,o){const c=o??new n(3);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c[2]=t[2]+e*(r[2]-t[2]),c}function c(t,r,e){const o=e??new n(3);return o[0]=t[0]*r,o[1]=t[1]*r,o[2]=t[2]*r,o}function u(t,r){const e=r??new n(3);return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function a(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function s(n){const t=n[0],r=n[1],e=n[2];return Math.sqrt(t*t+r*r+e*e)}function i(n){const t=n[0],r=n[1],e=n[2];return t*t+r*r+e*e}function f(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2];return Math.sqrt(r*r+e*e+o*o)}function M(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2];return r*r+e*e+o*o}function h(t,r){const e=r??new n(3),o=t[0],c=t[1],u=t[2],a=Math.sqrt(o*o+c*c+u*u);return a>1e-5?(e[0]=o/a,e[1]=c/a,e[2]=u/a):(e[0]=0,e[1]=0,e[2]=0),e}function l(t,r){const e=r??new n(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function w(t,r,e){const o=e??new n(3);return o[0]=t[0]*r[0],o[1]=t[1]*r[1],o[2]=t[2]*r[2],o}function m(t,r,e){const o=e??new n(3);return o[0]=t[0]/r[0],o[1]=t[1]/r[1],o[2]=t[2]/r[2],o}function d(t,r,e){const o=e??new n(3);return h(t,o),c(o,r,o)}return{create:t,fromValues:t,set:function(t,r,e,o){const c=o??new n(3);return c[0]=t,c[1]=r,c[2]=e,c},ceil:function(t,r){const e=r??new n(3);return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e},floor:function(t,r){const e=r??new n(3);return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e},round:function(t,r){const e=r??new n(3);return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e},clamp:function(t,r=0,e=1,o){const c=o??new n(3);return c[0]=Math.min(e,Math.max(r,t[0])),c[1]=Math.min(e,Math.max(r,t[1])),c[2]=Math.min(e,Math.max(r,t[2])),c},add:function(t,r,e){const o=e??new n(3);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o[2]=t[2]+r[2],o},addScaled:function(t,r,e,o){const c=o??new n(3);return c[0]=t[0]+r[0]*e,c[1]=t[1]+r[1]*e,c[2]=t[2]+r[2]*e,c},angle:function(n,t){const r=n[0],e=n[1],o=n[2],c=t[0],u=t[1],s=t[2],i=Math.sqrt(r*r+e*e+o*o)*Math.sqrt(c*c+u*u+s*s),f=i&&a(n,t)/i;return Math.acos(f)},subtract:r,sub:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]},lerp:o,lerpV:function(t,r,e,o){const c=o??new n(3);return c[0]=t[0]+e[0]*(r[0]-t[0]),c[1]=t[1]+e[1]*(r[1]-t[1]),c[2]=t[2]+e[2]*(r[2]-t[2]),c},max:function(t,r,e){const o=e??new n(3);return o[0]=Math.max(t[0],r[0]),o[1]=Math.max(t[1],r[1]),o[2]=Math.max(t[2],r[2]),o},min:function(t,r,e){const o=e??new n(3);return o[0]=Math.min(t[0],r[0]),o[1]=Math.min(t[1],r[1]),o[2]=Math.min(t[2],r[2]),o},mulScalar:c,scale:c,divScalar:function(t,r,e){const o=e??new n(3);return o[0]=t[0]/r,o[1]=t[1]/r,o[2]=t[2]/r,o},inverse:u,invert:u,cross:function(t,r,e){const o=e??new n(3),c=t[2]*r[0]-t[0]*r[2],u=t[0]*r[1]-t[1]*r[0];return o[0]=t[1]*r[2]-t[2]*r[1],o[1]=c,o[2]=u,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:M,distSq:M,normalize:h,negate:function(t,r){const e=r??new n(3);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,r){const e=r??new n(3),o=2*Math.random()*Math.PI,c=2*Math.random()-1,u=Math.sqrt(1-c*c)*t;return e[0]=Math.cos(o)*u,e[1]=Math.sin(o)*u,e[2]=c*t,e},zero:function(t){const r=t??new n(3);return r[0]=0,r[1]=0,r[2]=0,r},transformMat4:function(t,r,e){const o=e??new n(3),c=t[0],u=t[1],a=t[2],s=r[3]*c+r[7]*u+r[11]*a+r[15]||1;return o[0]=(r[0]*c+r[4]*u+r[8]*a+r[12])/s,o[1]=(r[1]*c+r[5]*u+r[9]*a+r[13])/s,o[2]=(r[2]*c+r[6]*u+r[10]*a+r[14])/s,o},transformMat4Upper3x3:function(t,r,e){const o=e??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*r[0]+u*r[4]+a*r[8],o[1]=c*r[1]+u*r[5]+a*r[9],o[2]=c*r[2]+u*r[6]+a*r[10],o},transformMat3:function(t,r,e){const o=e??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*r[0]+u*r[4]+a*r[8],o[1]=c*r[1]+u*r[5]+a*r[9],o[2]=c*r[2]+u*r[6]+a*r[10],o},transformQuat:function(t,r,e){const o=e??new n(3),c=r[0],u=r[1],a=r[2],s=2*r[3],i=t[0],f=t[1],M=t[2],h=u*M-a*f,l=a*i-c*M,w=c*f-u*i;return o[0]=i+h*s+2*(u*w-a*l),o[1]=f+l*s+2*(a*h-c*w),o[2]=M+w*s+2*(c*l-u*h),o},getTranslation:function(t,r){const e=r??new n(3);return e[0]=t[12],e[1]=t[13],e[2]=t[14],e},getAxis:function(t,r,e){const o=e??new n(3),c=4*r;return o[0]=t[c+0],o[1]=t[c+1],o[2]=t[c+2],o},getScaling:function(t,r){const e=r??new n(3),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],M=t[9],h=t[10];return e[0]=Math.sqrt(o*o+c*c+u*u),e[1]=Math.sqrt(a*a+s*s+i*i),e[2]=Math.sqrt(f*f+M*M+h*h),e},rotateX:function(t,r,e,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-r[0],u[1]=t[1]-r[1],u[2]=t[2]-r[2],a[0]=u[0],a[1]=u[1]*Math.cos(e)-u[2]*Math.sin(e),a[2]=u[1]*Math.sin(e)+u[2]*Math.cos(e),c[0]=a[0]+r[0],c[1]=a[1]+r[1],c[2]=a[2]+r[2],c},rotateY:function(t,r,e,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-r[0],u[1]=t[1]-r[1],u[2]=t[2]-r[2],a[0]=u[2]*Math.sin(e)+u[0]*Math.cos(e),a[1]=u[1],a[2]=u[2]*Math.cos(e)-u[0]*Math.sin(e),c[0]=a[0]+r[0],c[1]=a[1]+r[1],c[2]=a[2]+r[2],c},rotateZ:function(t,r,e,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-r[0],u[1]=t[1]-r[1],u[2]=t[2]-r[2],a[0]=u[0]*Math.cos(e)-u[1]*Math.sin(e),a[1]=u[0]*Math.sin(e)+u[1]*Math.cos(e),a[2]=u[2],c[0]=a[0]+r[0],c[1]=a[1]+r[1],c[2]=a[2]+r[2],c},setLength:d,truncate:function(t,r,e){const o=e??new n(3);return s(t)>r?d(t,r,o):l(t,o)},midpoint:function(t,r,e){return o(t,r,.5,e??new n(3))}}}(n),a.set(n,t)),t}const i=new Map;function f(n){let t=i.get(n);return t||(t=function(n){const t=u(n),r=s(n);function o(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[8]=t[8],e[9]=t[9],e[10]=t[10],e}function c(t){const r=t??new n(12);return r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r}function a(t,r){const e=r??new n(12),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],M=t[9],h=t[10],l=h*s-i*M,w=-h*a+i*f,m=M*a-s*f,d=1/(o*l+c*w+u*m);return e[0]=l*d,e[1]=(-h*c+u*M)*d,e[2]=(i*c-u*s)*d,e[4]=w*d,e[5]=(h*o-u*f)*d,e[6]=(-i*o+u*a)*d,e[8]=m*d,e[9]=(-M*o+c*f)*d,e[10]=(s*o-c*a)*d,e}function i(t,r,e){const o=e??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],M=t[8],h=t[9],l=t[10],w=r[0],m=r[1],d=r[2],v=r[4],q=r[5],p=r[6],b=r[8],g=r[9],x=r[10];return o[0]=c*w+s*m+M*d,o[1]=u*w+i*m+h*d,o[2]=a*w+f*m+l*d,o[4]=c*v+s*q+M*p,o[5]=u*v+i*q+h*p,o[6]=a*v+f*q+l*p,o[8]=c*b+s*g+M*x,o[9]=u*b+i*g+h*x,o[10]=a*b+f*g+l*x,o}return{clone:o,create:function(t,r,e,o,c,u,a,s,i){const f=new n(12);return f[3]=0,f[7]=0,f[11]=0,void 0!==t&&(f[0]=t,void 0!==r&&(f[1]=r,void 0!==e&&(f[2]=e,void 0!==o&&(f[4]=o,void 0!==c&&(f[5]=c,void 0!==u&&(f[6]=u,void 0!==a&&(f[8]=a,void 0!==s&&(f[9]=s,void 0!==i&&(f[10]=i))))))))),f},set:function(t,r,e,o,c,u,a,s,i,f){const M=f??new n(12);return M[0]=t,M[1]=r,M[2]=e,M[3]=0,M[4]=o,M[5]=c,M[6]=u,M[7]=0,M[8]=a,M[9]=s,M[10]=i,M[11]=0,M},fromMat4:function(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=0,e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=0,e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=0,e},fromQuat:function(t,r){const e=r??new n(12),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,M=o*s,h=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,q=a*i,p=a*f;return e[0]=1-l-d,e[1]=h+p,e[2]=w-q,e[3]=0,e[4]=h-p,e[5]=1-M-d,e[6]=m+v,e[7]=0,e[8]=w+q,e[9]=m-v,e[10]=1-M-l,e[11]=0,e},negate:function(t,r){const e=r??new n(12);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e},copy:o,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[4]-t[4])<e&&Math.abs(n[5]-t[5])<e&&Math.abs(n[6]-t[6])<e&&Math.abs(n[8]-t[8])<e&&Math.abs(n[9]-t[9])<e&&Math.abs(n[10]-t[10])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]},identity:c,transpose:function(t,r){const e=r??new n(12);if(e===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,e}const o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],M=t[9],h=t[10];return e[0]=o,e[1]=a,e[2]=f,e[4]=c,e[5]=s,e[6]=M,e[8]=u,e[9]=i,e[10]=h,e},inverse:a,invert:a,determinant:function(n){const t=n[0],r=n[1],e=n[2],o=n[4],c=n[5],u=n[6],a=n[8],s=n[9],i=n[10];return t*(c*i-s*u)-o*(r*i-s*e)+a*(r*u-c*e)},mul:i,multiply:i,setTranslation:function(n,t,r){const e=r??c();return n!==e&&(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[4]=n[4],e[5]=n[5],e[6]=n[6]),e[8]=t[0],e[9]=t[1],e[10]=1,e},getTranslation:function(n,r){const e=r??t.create();return e[0]=n[8],e[1]=n[9],e},getAxis:function(n,r,e){const o=e??t.create(),c=4*r;return o[0]=n[c+0],o[1]=n[c+1],o},setAxis:function(n,t,r,e){const c=e===n?n:o(n,e),u=4*r;return c[u+0]=t[0],c[u+1]=t[1],c},getScaling:function(n,r){const e=r??t.create(),o=n[0],c=n[1],u=n[4],a=n[5];return e[0]=Math.sqrt(o*o+c*c),e[1]=Math.sqrt(u*u+a*a),e},get3DScaling:function(n,t){const e=t??r.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],M=n[9],h=n[10];return e[0]=Math.sqrt(o*o+c*c+u*u),e[1]=Math.sqrt(a*a+s*s+i*i),e[2]=Math.sqrt(f*f+M*M+h*h),e},translation:function(t,r){const e=r??new n(12);return e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=t[0],e[9]=t[1],e[10]=1,e},translate:function(t,r,e){const o=e??new n(12),c=r[0],u=r[1],a=t[0],s=t[1],i=t[2],f=t[4],M=t[5],h=t[6],l=t[8],w=t[9],m=t[10];return t!==o&&(o[0]=a,o[1]=s,o[2]=i,o[4]=f,o[5]=M,o[6]=h),o[8]=a*c+f*u+l,o[9]=s*c+M*u+w,o[10]=i*c+h*u+m,o},rotation:function(t,r){const e=r??new n(12),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=c,e[2]=0,e[4]=-c,e[5]=o,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e},rotate:function(t,r,e){const o=e??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],M=Math.cos(r),h=Math.sin(r);return o[0]=M*c+h*s,o[1]=M*u+h*i,o[2]=M*a+h*f,o[4]=M*s-h*c,o[5]=M*i-h*u,o[6]=M*f-h*a,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},scaling:function(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=0,e[2]=0,e[4]=0,e[5]=t[1],e[6]=0,e[8]=0,e[9]=0,e[10]=1,e},scale:function(t,r,e){const o=e??new n(12),c=r[0],u=r[1];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},uniformScaling:function(t,r){const e=r??new n(12);return e[0]=t,e[1]=0,e[2]=0,e[4]=0,e[5]=t,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e},uniformScale:function(t,r,e){const o=e??new n(12);return o[0]=r*t[0],o[1]=r*t[1],o[2]=r*t[2],o[4]=r*t[4],o[5]=r*t[5],o[6]=r*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o}}}(n),i.set(n,t)),t}const M=new Map;function h(n){let t=M.get(n);return t||(t=function(n){const t=s(n);function r(t,r){const e=r??new n(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}const o=r;function c(t){const r=t??new n(16);return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r}function u(t,r){const e=r??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],M=t[7],h=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],q=t[14],p=t[15],b=w*p,g=q*m,x=f*p,y=q*M,A=f*m,S=w*M,z=u*p,F=q*a,k=u*m,T=w*a,I=u*M,P=f*a,V=h*v,Z=d*l,L=s*v,R=d*i,E=s*l,X=h*i,Y=o*v,_=d*c,Q=o*l,D=h*c,N=o*i,U=s*c,j=b*i+y*l+A*v-(g*i+x*l+S*v),O=g*c+z*l+T*v-(b*c+F*l+k*v),$=x*c+F*i+I*v-(y*c+z*i+P*v),B=S*c+k*i+P*l-(A*c+T*i+I*l),C=1/(o*j+s*O+h*$+d*B);return e[0]=C*j,e[1]=C*O,e[2]=C*$,e[3]=C*B,e[4]=C*(g*s+x*h+S*d-(b*s+y*h+A*d)),e[5]=C*(b*o+F*h+k*d-(g*o+z*h+T*d)),e[6]=C*(y*o+z*s+P*d-(x*o+F*s+I*d)),e[7]=C*(A*o+T*s+I*h-(S*o+k*s+P*h)),e[8]=C*(V*M+R*m+E*p-(Z*M+L*m+X*p)),e[9]=C*(Z*a+Y*m+D*p-(V*a+_*m+Q*p)),e[10]=C*(L*a+_*M+N*p-(R*a+Y*M+U*p)),e[11]=C*(X*a+Q*M+U*m-(E*a+D*M+N*m)),e[12]=C*(L*w+X*q+Z*f-(E*q+V*f+R*w)),e[13]=C*(Q*q+V*u+_*w-(Y*w+D*q+Z*u)),e[14]=C*(Y*f+U*q+R*u-(N*q+L*u+_*f)),e[15]=C*(N*w+E*u+D*f-(Q*f+U*w+X*u)),e}const a=u;function i(t,r,e){const o=e??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],M=t[6],h=t[7],l=t[8],w=t[9],m=t[10],d=t[11],v=t[12],q=t[13],p=t[14],b=t[15],g=r[0],x=r[1],y=r[2],A=r[3],S=r[4],z=r[5],F=r[6],k=r[7],T=r[8],I=r[9],P=r[10],V=r[11],Z=r[12],L=r[13],R=r[14],E=r[15];return o[0]=c*g+i*x+l*y+v*A,o[1]=u*g+f*x+w*y+q*A,o[2]=a*g+M*x+m*y+p*A,o[3]=s*g+h*x+d*y+b*A,o[4]=c*S+i*z+l*F+v*k,o[5]=u*S+f*z+w*F+q*k,o[6]=a*S+M*z+m*F+p*k,o[7]=s*S+h*z+d*F+b*k,o[8]=c*T+i*I+l*P+v*V,o[9]=u*T+f*I+w*P+q*V,o[10]=a*T+M*I+m*P+p*V,o[11]=s*T+h*I+d*P+b*V,o[12]=c*Z+i*L+l*R+v*E,o[13]=u*Z+f*L+w*R+q*E,o[14]=a*Z+M*L+m*R+p*E,o[15]=s*Z+h*L+d*R+b*E,o}const f=i,M=t.create(),h=t.create(),l=t.create();function w(t,r,e){const o=e??new n(16);let c=t[0],u=t[1],a=t[2];const s=Math.sqrt(c*c+u*u+a*a);c/=s,u/=s,a/=s;const i=c*c,f=u*u,M=a*a,h=Math.cos(r),l=Math.sin(r),w=1-h;return o[0]=i+(1-i)*h,o[1]=c*u*w+a*l,o[2]=c*a*w-u*l,o[3]=0,o[4]=c*u*w-a*l,o[5]=f+(1-f)*h,o[6]=u*a*w+c*l,o[7]=0,o[8]=c*a*w+u*l,o[9]=u*a*w-c*l,o[10]=M+(1-M)*h,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}function m(t,r,e,o){const c=o??new n(16);let u=r[0],a=r[1],s=r[2];const i=Math.sqrt(u*u+a*a+s*s);u/=i,a/=i,s/=i;const f=u*u,M=a*a,h=s*s,l=Math.cos(e),w=Math.sin(e),m=1-l,d=f+(1-f)*l,v=u*a*m+s*w,q=u*s*m-a*w,p=u*a*m-s*w,b=M+(1-M)*l,g=a*s*m+u*w,x=u*s*m+a*w,y=a*s*m-u*w,A=h+(1-h)*l,S=t[0],z=t[1],F=t[2],k=t[3],T=t[4],I=t[5],P=t[6],V=t[7],Z=t[8],L=t[9],R=t[10],E=t[11];return c[0]=d*S+v*T+q*Z,c[1]=d*z+v*I+q*L,c[2]=d*F+v*P+q*R,c[3]=d*k+v*V+q*E,c[4]=p*S+b*T+g*Z,c[5]=p*z+b*I+g*L,c[6]=p*F+b*P+g*R,c[7]=p*k+b*V+g*E,c[8]=x*S+y*T+A*Z,c[9]=x*z+y*I+A*L,c[10]=x*F+y*P+A*R,c[11]=x*k+y*V+A*E,t!==c&&(c[12]=t[12],c[13]=t[13],c[14]=t[14],c[15]=t[15]),c}return{create:function(t,r,e,o,c,u,a,s,i,f,M,h,l,w,m,d){const v=new n(16);return void 0!==t&&(v[0]=t,void 0!==r&&(v[1]=r,void 0!==e&&(v[2]=e,void 0!==o&&(v[3]=o,void 0!==c&&(v[4]=c,void 0!==u&&(v[5]=u,void 0!==a&&(v[6]=a,void 0!==s&&(v[7]=s,void 0!==i&&(v[8]=i,void 0!==f&&(v[9]=f,void 0!==M&&(v[10]=M,void 0!==h&&(v[11]=h,void 0!==l&&(v[12]=l,void 0!==w&&(v[13]=w,void 0!==m&&(v[14]=m,void 0!==d&&(v[15]=d)))))))))))))))),v},set:function(t,r,e,o,c,u,a,s,i,f,M,h,l,w,m,d,v){const q=v??new n(16);return q[0]=t,q[1]=r,q[2]=e,q[3]=o,q[4]=c,q[5]=u,q[6]=a,q[7]=s,q[8]=i,q[9]=f,q[10]=M,q[11]=h,q[12]=l,q[13]=w,q[14]=m,q[15]=d,q},fromMat3:function(t,r){const e=r??new n(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=0,e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=0,e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},fromQuat:function(t,r){const e=r??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,M=o*s,h=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,q=a*i,p=a*f;return e[0]=1-l-d,e[1]=h+p,e[2]=w-q,e[3]=0,e[4]=h-p,e[5]=1-M-d,e[6]=m+v,e[7]=0,e[8]=w+q,e[9]=m-v,e[10]=1-M-l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},negate:function(t,r){const e=r??new n(16);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},copy:r,clone:o,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[3]-t[3])<e&&Math.abs(n[4]-t[4])<e&&Math.abs(n[5]-t[5])<e&&Math.abs(n[6]-t[6])<e&&Math.abs(n[7]-t[7])<e&&Math.abs(n[8]-t[8])<e&&Math.abs(n[9]-t[9])<e&&Math.abs(n[10]-t[10])<e&&Math.abs(n[11]-t[11])<e&&Math.abs(n[12]-t[12])<e&&Math.abs(n[13]-t[13])<e&&Math.abs(n[14]-t[14])<e&&Math.abs(n[15]-t[15])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]&&n[11]===t[11]&&n[12]===t[12]&&n[13]===t[13]&&n[14]===t[14]&&n[15]===t[15]},identity:c,transpose:function(t,r){const e=r??new n(16);if(e===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,e}const o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],M=t[7],h=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],q=t[14],p=t[15];return e[0]=o,e[1]=s,e[2]=h,e[3]=d,e[4]=c,e[5]=i,e[6]=l,e[7]=v,e[8]=u,e[9]=f,e[10]=w,e[11]=q,e[12]=a,e[13]=M,e[14]=m,e[15]=p,e},inverse:u,determinant:function(n){const t=n[0],r=n[1],e=n[2],o=n[3],c=n[4],u=n[5],a=n[6],s=n[7],i=n[8],f=n[9],M=n[10],h=n[11],l=n[12],w=n[13],m=n[14],d=n[15],v=M*d,q=m*h,p=a*d,b=m*s,g=a*h,x=M*s,y=e*d,A=m*o,S=e*h,z=M*o,F=e*s,k=a*o;return t*(v*u+b*f+g*w-(q*u+p*f+x*w))+c*(q*r+y*f+z*w-(v*r+A*f+S*w))+i*(p*r+A*u+F*w-(b*r+y*u+k*w))+l*(x*r+S*u+k*f-(g*r+z*u+F*f))},invert:a,multiply:i,mul:f,setTranslation:function(n,t,r){const e=r??c();return n!==e&&(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11]),e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e},getTranslation:function(n,r){const e=r??t.create();return e[0]=n[12],e[1]=n[13],e[2]=n[14],e},getAxis:function(n,r,e){const o=e??t.create(),c=4*r;return o[0]=n[c+0],o[1]=n[c+1],o[2]=n[c+2],o},setAxis:function(n,t,e,o){const c=o===n?o:r(n,o),u=4*e;return c[u+0]=t[0],c[u+1]=t[1],c[u+2]=t[2],c},getScaling:function(n,r){const e=r??t.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],M=n[9],h=n[10];return e[0]=Math.sqrt(o*o+c*c+u*u),e[1]=Math.sqrt(a*a+s*s+i*i),e[2]=Math.sqrt(f*f+M*M+h*h),e},perspective:function(t,r,e,o,c){const u=c??new n(16),a=Math.tan(.5*Math.PI-.5*t);if(u[0]=a/r,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,Number.isFinite(o)){const n=1/(e-o);u[10]=o*n,u[14]=o*e*n}else u[10]=-1,u[14]=-e;return u},perspectiveReverseZ:function(t,r,e,o=1/0,c){const u=c??new n(16),a=1/Math.tan(.5*t);if(u[0]=a/r,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,o===1/0)u[10]=0,u[14]=e;else{const n=1/(o-e);u[10]=e*n,u[14]=o*e*n}return u},ortho:function(t,r,e,o,c,u,a){const s=a??new n(16);return s[0]=2/(r-t),s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2/(o-e),s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1/(c-u),s[11]=0,s[12]=(r+t)/(t-r),s[13]=(o+e)/(e-o),s[14]=c/(c-u),s[15]=1,s},frustum:function(t,r,e,o,c,u,a){const s=a??new n(16),i=r-t,f=o-e,M=c-u;return s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+r)/i,s[9]=(o+e)/f,s[10]=u/M,s[11]=-1,s[12]=0,s[13]=0,s[14]=c*u/M,s[15]=0,s},frustumReverseZ:function(t,r,e,o,c,u=1/0,a){const s=a??new n(16),i=r-t,f=o-e;if(s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+r)/i,s[9]=(o+e)/f,s[11]=-1,s[12]=0,s[13]=0,s[15]=0,u===1/0)s[10]=0,s[14]=c;else{const n=1/(u-c);s[10]=c*n,s[14]=u*c*n}return s},aim:function(r,e,o,c){const u=c??new n(16);return t.normalize(t.subtract(e,r,l),l),t.normalize(t.cross(o,l,M),M),t.normalize(t.cross(l,M,h),h),u[0]=M[0],u[1]=M[1],u[2]=M[2],u[3]=0,u[4]=h[0],u[5]=h[1],u[6]=h[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=r[0],u[13]=r[1],u[14]=r[2],u[15]=1,u},cameraAim:function(r,e,o,c){const u=c??new n(16);return t.normalize(t.subtract(r,e,l),l),t.normalize(t.cross(o,l,M),M),t.normalize(t.cross(l,M,h),h),u[0]=M[0],u[1]=M[1],u[2]=M[2],u[3]=0,u[4]=h[0],u[5]=h[1],u[6]=h[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=r[0],u[13]=r[1],u[14]=r[2],u[15]=1,u},lookAt:function(r,e,o,c){const u=c??new n(16);return t.normalize(t.subtract(r,e,l),l),t.normalize(t.cross(o,l,M),M),t.normalize(t.cross(l,M,h),h),u[0]=M[0],u[1]=h[0],u[2]=l[0],u[3]=0,u[4]=M[1],u[5]=h[1],u[6]=l[1],u[7]=0,u[8]=M[2],u[9]=h[2],u[10]=l[2],u[11]=0,u[12]=-(M[0]*r[0]+M[1]*r[1]+M[2]*r[2]),u[13]=-(h[0]*r[0]+h[1]*r[1]+h[2]*r[2]),u[14]=-(l[0]*r[0]+l[1]*r[1]+l[2]*r[2]),u[15]=1,u},translation:function(t,r){const e=r??new n(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e},translate:function(t,r,e){const o=e??new n(16),c=r[0],u=r[1],a=r[2],s=t[0],i=t[1],f=t[2],M=t[3],h=t[4],l=t[5],w=t[6],m=t[7],d=t[8],v=t[9],q=t[10],p=t[11],b=t[12],g=t[13],x=t[14],y=t[15];return t!==o&&(o[0]=s,o[1]=i,o[2]=f,o[3]=M,o[4]=h,o[5]=l,o[6]=w,o[7]=m,o[8]=d,o[9]=v,o[10]=q,o[11]=p),o[12]=s*c+h*u+d*a+b,o[13]=i*c+l*u+v*a+g,o[14]=f*c+w*u+q*a+x,o[15]=M*c+m*u+p*a+y,o},rotationX:function(t,r){const e=r??new n(16),o=Math.cos(t),c=Math.sin(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=c,e[7]=0,e[8]=0,e[9]=-c,e[10]=o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},rotateX:function(t,r,e){const o=e??new n(16),c=t[4],u=t[5],a=t[6],s=t[7],i=t[8],f=t[9],M=t[10],h=t[11],l=Math.cos(r),w=Math.sin(r);return o[4]=l*c+w*i,o[5]=l*u+w*f,o[6]=l*a+w*M,o[7]=l*s+w*h,o[8]=l*i-w*c,o[9]=l*f-w*u,o[10]=l*M-w*a,o[11]=l*h-w*s,t!==o&&(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationY:function(t,r){const e=r??new n(16),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=0,e[2]=-c,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=c,e[9]=0,e[10]=o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},rotateY:function(t,r,e){const o=e??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[8],f=t[9],M=t[10],h=t[11],l=Math.cos(r),w=Math.sin(r);return o[0]=l*c-w*i,o[1]=l*u-w*f,o[2]=l*a-w*M,o[3]=l*s-w*h,o[8]=l*i+w*c,o[9]=l*f+w*u,o[10]=l*M+w*a,o[11]=l*h+w*s,t!==o&&(o[4]=t[4],o[5]=t[5],o[6]=t[6],o[7]=t[7],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationZ:function(t,r){const e=r??new n(16),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=c,e[2]=0,e[3]=0,e[4]=-c,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},rotateZ:function(t,r,e){const o=e??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],M=t[6],h=t[7],l=Math.cos(r),w=Math.sin(r);return o[0]=l*c+w*i,o[1]=l*u+w*f,o[2]=l*a+w*M,o[3]=l*s+w*h,o[4]=l*i-w*c,o[5]=l*f-w*u,o[6]=l*M-w*a,o[7]=l*h-w*s,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10],o[11]=t[11],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},axisRotation:w,rotation:w,axisRotate:m,rotate:m,scaling:function(t,r){const e=r??new n(16);return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},scale:function(t,r,e){const o=e??new n(16),c=r[0],u=r[1],a=r[2];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[3]=c*t[3],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],o[7]=u*t[7],o[8]=a*t[8],o[9]=a*t[9],o[10]=a*t[10],o[11]=a*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},uniformScaling:function(t,r){const e=r??new n(16);return e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},uniformScale:function(t,r,e){const o=e??new n(16);return o[0]=r*t[0],o[1]=r*t[1],o[2]=r*t[2],o[3]=r*t[3],o[4]=r*t[4],o[5]=r*t[5],o[6]=r*t[6],o[7]=r*t[7],o[8]=r*t[8],o[9]=r*t[9],o[10]=r*t[10],o[11]=r*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o}}}(n),M.set(n,t)),t}const l=new Map;function w(n){let t=l.get(n);return t||(t=function(n){const t=s(n);function r(t,r,e,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==r&&(c[1]=r,void 0!==e&&(c[2]=e,void 0!==o&&(c[3]=o)))),c}const o=r;function c(t,r,e){const o=e??new n(4),c=.5*r,u=Math.sin(c);return o[0]=u*t[0],o[1]=u*t[1],o[2]=u*t[2],o[3]=Math.cos(c),o}function u(t,r,e){const o=e??new n(4),c=t[0],u=t[1],a=t[2],s=t[3],i=r[0],f=r[1],M=r[2],h=r[3];return o[0]=c*h+s*i+u*M-a*f,o[1]=u*h+s*f+a*i-c*M,o[2]=a*h+s*M+c*f-u*i,o[3]=s*h-c*i-u*f-a*M,o}const a=u;function i(t,r,o,c){const u=c??new n(4),a=t[0],s=t[1],i=t[2],f=t[3];let M,h,l=r[0],w=r[1],m=r[2],d=r[3],v=a*l+s*w+i*m+f*d;if(v<0&&(v=-v,l=-l,w=-w,m=-m,d=-d),1-v>e){const n=Math.acos(v),t=Math.sin(n);M=Math.sin((1-o)*n)/t,h=Math.sin(o*n)/t}else M=1-o,h=o;return u[0]=M*a+h*l,u[1]=M*s+h*w,u[2]=M*i+h*m,u[3]=M*f+h*d,u}function f(t,r){const e=r??new n(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}const M=f;function h(t,r,e){const o=e??new n(4);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],o[3]=t[3]-r[3],o}const l=h;function w(t,r,e){const o=e??new n(4);return o[0]=t[0]*r,o[1]=t[1]*r,o[2]=t[2]*r,o[3]=t[3]*r,o}const m=w;function d(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function v(n){const t=n[0],r=n[1],e=n[2],o=n[3];return Math.sqrt(t*t+r*r+e*e+o*o)}const q=v;function p(n){const t=n[0],r=n[1],e=n[2],o=n[3];return t*t+r*r+e*e+o*o}const b=p;function g(t,r){const e=r??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(e[0]=o/s,e[1]=c/s,e[2]=u/s,e[3]=a/s):(e[0]=0,e[1]=0,e[2]=0,e[3]=1),e}const x=t.create(),y=t.create(),A=t.create(),S=new n(4),z=new n(4);return{create:r,fromValues:o,set:function(t,r,e,o,c){const u=c??new n(4);return u[0]=t,u[1]=r,u[2]=e,u[3]=o,u},fromAxisAngle:c,toAxisAngle:function(n,r){const o=r??t.create(3),c=2*Math.acos(n[3]),u=Math.sin(.5*c);return u>e?(o[0]=n[0]/u,o[1]=n[1]/u,o[2]=n[2]/u):(o[0]=1,o[1]=0,o[2]=0),{angle:c,axis:o}},angle:function(n,t){const r=d(n,t);return Math.acos(2*r*r-1)},multiply:u,mul:a,rotateX:function(t,r,e){const o=e??new n(4),c=.5*r,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),M=Math.cos(c);return o[0]=u*M+i*f,o[1]=a*M+s*f,o[2]=s*M-a*f,o[3]=i*M-u*f,o},rotateY:function(t,r,e){const o=e??new n(4),c=.5*r,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),M=Math.cos(c);return o[0]=u*M-s*f,o[1]=a*M+i*f,o[2]=s*M+u*f,o[3]=i*M-a*f,o},rotateZ:function(t,r,e){const o=e??new n(4),c=.5*r,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),M=Math.cos(c);return o[0]=u*M+a*f,o[1]=a*M-u*f,o[2]=s*M+i*f,o[3]=i*M-s*f,o},slerp:i,inverse:function(t,r){const e=r??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=o*o+c*c+u*u+a*a,i=s?1/s:0;return e[0]=-o*i,e[1]=-c*i,e[2]=-u*i,e[3]=a*i,e},conjugate:function(t,r){const e=r??new n(4);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},fromMat:function(t,r){const e=r??new n(4),o=t[0]+t[5]+t[10];if(o>0){const n=Math.sqrt(o+1);e[3]=.5*n;const r=.5/n;e[0]=(t[6]-t[9])*r,e[1]=(t[8]-t[2])*r,e[2]=(t[1]-t[4])*r}else{let n=0;t[5]>t[0]&&(n=1),t[10]>t[4*n+n]&&(n=2);const r=(n+1)%3,o=(n+2)%3,c=Math.sqrt(t[4*n+n]-t[4*r+r]-t[4*o+o]+1);e[n]=.5*c;const u=.5/c;e[3]=(t[4*r+o]-t[4*o+r])*u,e[r]=(t[4*r+n]+t[4*n+r])*u,e[o]=(t[4*o+n]+t[4*n+o])*u}return e},fromEuler:function(t,r,e,o,c){const u=c??new n(4),a=.5*t,s=.5*r,i=.5*e,f=Math.sin(a),M=Math.cos(a),h=Math.sin(s),l=Math.cos(s),w=Math.sin(i),m=Math.cos(i);switch(o){case"xyz":u[0]=f*l*m+M*h*w,u[1]=M*h*m-f*l*w,u[2]=M*l*w+f*h*m,u[3]=M*l*m-f*h*w;break;case"xzy":u[0]=f*l*m-M*h*w,u[1]=M*h*m-f*l*w,u[2]=M*l*w+f*h*m,u[3]=M*l*m+f*h*w;break;case"yxz":u[0]=f*l*m+M*h*w,u[1]=M*h*m-f*l*w,u[2]=M*l*w-f*h*m,u[3]=M*l*m+f*h*w;break;case"yzx":u[0]=f*l*m+M*h*w,u[1]=M*h*m+f*l*w,u[2]=M*l*w-f*h*m,u[3]=M*l*m-f*h*w;break;case"zxy":u[0]=f*l*m-M*h*w,u[1]=M*h*m+f*l*w,u[2]=M*l*w+f*h*m,u[3]=M*l*m-f*h*w;break;case"zyx":u[0]=f*l*m-M*h*w,u[1]=M*h*m+f*l*w,u[2]=M*l*w-f*h*m,u[3]=M*l*m+f*h*w;break;default:throw new Error(`Unknown rotation order: ${o}`)}return u},copy:f,clone:M,add:function(t,r,e){const o=e??new n(4);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o[2]=t[2]+r[2],o[3]=t[3]+r[3],o},subtract:h,sub:l,mulScalar:w,scale:m,divScalar:function(t,r,e){const o=e??new n(4);return o[0]=t[0]/r,o[1]=t[1]/r,o[2]=t[2]/r,o[3]=t[3]/r,o},dot:d,lerp:function(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c[2]=t[2]+e*(r[2]-t[2]),c[3]=t[3]+e*(r[3]-t[3]),c},length:v,len:q,lengthSq:p,lenSq:b,normalize:g,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[3]-t[3])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},identity:function(t){const r=t??new n(4);return r[0]=0,r[1]=0,r[2]=0,r[3]=1,r},rotationTo:function(r,e,o){const u=o??new n(4),a=t.dot(r,e);return a<-.999999?(t.cross(y,r,x),t.len(x)<1e-6&&t.cross(A,r,x),t.normalize(x,x),c(x,Math.PI,u),u):a>.999999?(u[0]=0,u[1]=0,u[2]=0,u[3]=1,u):(t.cross(r,e,x),u[0]=x[0],u[1]=x[1],u[2]=x[2],u[3]=1+a,g(u,u))},sqlerp:function(t,r,e,o,c,u){const a=u??new n(4);return i(t,o,c,S),i(r,e,c,z),i(S,z,2*c*(1-c),a),a}}}(n),l.set(n,t)),t}const m=new Map;function d(n){let t=m.get(n);return t||(t=function(n){function t(t,r,e,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==r&&(c[1]=r,void 0!==e&&(c[2]=e,void 0!==o&&(c[3]=o)))),c}function r(t,r,e){const o=e??new n(4);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],o[3]=t[3]-r[3],o}function o(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c[2]=t[2]+e*(r[2]-t[2]),c[3]=t[3]+e*(r[3]-t[3]),c}function c(t,r,e){const o=e??new n(4);return o[0]=t[0]*r,o[1]=t[1]*r,o[2]=t[2]*r,o[3]=t[3]*r,o}function u(t,r){const e=r??new n(4);return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e}function a(n){const t=n[0],r=n[1],e=n[2],o=n[3];return Math.sqrt(t*t+r*r+e*e+o*o)}function s(n){const t=n[0],r=n[1],e=n[2],o=n[3];return t*t+r*r+e*e+o*o}function i(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return Math.sqrt(r*r+e*e+o*o+c*c)}function f(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return r*r+e*e+o*o+c*c}function M(t,r){const e=r??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(e[0]=o/s,e[1]=c/s,e[2]=u/s,e[3]=a/s):(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function h(t,r){const e=r??new n(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function l(t,r,e){const o=e??new n(4);return o[0]=t[0]*r[0],o[1]=t[1]*r[1],o[2]=t[2]*r[2],o[3]=t[3]*r[3],o}function w(t,r,e){const o=e??new n(4);return o[0]=t[0]/r[0],o[1]=t[1]/r[1],o[2]=t[2]/r[2],o[3]=t[3]/r[3],o}function m(t,r,e){const o=e??new n(4);return M(t,o),c(o,r,o)}return{create:t,fromValues:t,set:function(t,r,e,o,c){const u=c??new n(4);return u[0]=t,u[1]=r,u[2]=e,u[3]=o,u},ceil:function(t,r){const e=r??new n(4);return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e[3]=Math.ceil(t[3]),e},floor:function(t,r){const e=r??new n(4);return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e[3]=Math.floor(t[3]),e},round:function(t,r){const e=r??new n(4);return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e[3]=Math.round(t[3]),e},clamp:function(t,r=0,e=1,o){const c=o??new n(4);return c[0]=Math.min(e,Math.max(r,t[0])),c[1]=Math.min(e,Math.max(r,t[1])),c[2]=Math.min(e,Math.max(r,t[2])),c[3]=Math.min(e,Math.max(r,t[3])),c},add:function(t,r,e){const o=e??new n(4);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o[2]=t[2]+r[2],o[3]=t[3]+r[3],o},addScaled:function(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+r[0]*e,c[1]=t[1]+r[1]*e,c[2]=t[2]+r[2]*e,c[3]=t[3]+r[3]*e,c},subtract:r,sub:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[3]-t[3])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},lerp:o,lerpV:function(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+e[0]*(r[0]-t[0]),c[1]=t[1]+e[1]*(r[1]-t[1]),c[2]=t[2]+e[2]*(r[2]-t[2]),c[3]=t[3]+e[3]*(r[3]-t[3]),c},max:function(t,r,e){const o=e??new n(4);return o[0]=Math.max(t[0],r[0]),o[1]=Math.max(t[1],r[1]),o[2]=Math.max(t[2],r[2]),o[3]=Math.max(t[3],r[3]),o},min:function(t,r,e){const o=e??new n(4);return o[0]=Math.min(t[0],r[0]),o[1]=Math.min(t[1],r[1]),o[2]=Math.min(t[2],r[2]),o[3]=Math.min(t[3],r[3]),o},mulScalar:c,scale:c,divScalar:function(t,r,e){const o=e??new n(4);return o[0]=t[0]/r,o[1]=t[1]/r,o[2]=t[2]/r,o[3]=t[3]/r,o},inverse:u,invert:u,dot:function(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]},length:a,len:a,lengthSq:s,lenSq:s,distance:i,dist:i,distanceSq:f,distSq:f,normalize:M,negate:function(t,r){const e=r??new n(4);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},copy:h,clone:h,multiply:l,mul:l,divide:w,div:w,zero:function(t){const r=t??new n(4);return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r},transformMat4:function(t,r,e){const o=e??new n(4),c=t[0],u=t[1],a=t[2],s=t[3];return o[0]=r[0]*c+r[4]*u+r[8]*a+r[12]*s,o[1]=r[1]*c+r[5]*u+r[9]*a+r[13]*s,o[2]=r[2]*c+r[6]*u+r[10]*a+r[14]*s,o[3]=r[3]*c+r[7]*u+r[11]*a+r[15]*s,o},setLength:m,truncate:function(t,r,e){const o=e??new n(4);return a(t)>r?m(t,r,o):h(t,o)},midpoint:function(t,r,e){return o(t,r,.5,e??new n(4))}}}(n),m.set(n,t)),t}function v(n,t,r,e,o,c){return{mat3:f(n),mat4:h(t),quat:w(r),vec2:u(e),vec3:s(o),vec4:d(c)}}const{mat3:q,mat4:p,quat:b,vec2:g,vec3:x,vec4:y}=v(Float32Array,Float32Array,Float32Array,Float32Array,Float32Array,Float32Array),{mat3:A,mat4:S,quat:z,vec2:F,vec3:k,vec4:T}=v(Float64Array,Float64Array,Float64Array,Float64Array,Float64Array,Float64Array),{mat3:I,mat4:P,quat:V,vec2:Z,vec3:L,vec4:R}=v(n,Array,Array,Array,Array,Array);export{q as mat3,A as mat3d,I as mat3n,p as mat4,S as mat4d,P as mat4n,b as quat,z as quatd,V as quatn,o as utils,g as vec2,F as vec2d,Z as vec2n,x as vec3,k as vec3d,L as vec3n,y as vec4,T as vec4d,R as vec4n}; | ||
const n=(t=Array,r=n=>n.fill(0),class extends t{constructor(...n){super(...n),r(this)}});var t,r;let e=1e-6;var o={__proto__:null,get EPSILON(){return e},degToRad:function(n){return n*Math.PI/180},euclideanModulo:function(n,t){return(n%t+t)%t},inverseLerp:function(n,t,r){const o=t-n;return Math.abs(t-n)<e?n:(r-n)/o},lerp:function(n,t,r){return n+(t-n)*r},radToDeg:function(n){return 180*n/Math.PI},setEpsilon:function(n){const t=e;return e=n,t}};const c=new Map;function u(n){let t=c.get(n);return t||(t=function(n){function t(t=0,r=0){const e=new n(2);return void 0!==t&&(e[0]=t,void 0!==r&&(e[1]=r)),e}function r(t,r,e){const o=e??new n(2);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o}function o(t,r,e,o){const c=o??new n(2);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c}function c(t,r,e){const o=e??new n(2);return o[0]=t[0]*r,o[1]=t[1]*r,o}function u(t,r){const e=r??new n(2);return e[0]=1/t[0],e[1]=1/t[1],e}function a(n,t){return n[0]*t[0]+n[1]*t[1]}function s(n){const t=n[0],r=n[1];return Math.sqrt(t*t+r*r)}function i(n){const t=n[0],r=n[1];return t*t+r*r}function f(n,t){const r=n[0]-t[0],e=n[1]-t[1];return Math.sqrt(r*r+e*e)}function M(n,t){const r=n[0]-t[0],e=n[1]-t[1];return r*r+e*e}function h(t,r){const e=r??new n(2),o=t[0],c=t[1],u=Math.sqrt(o*o+c*c);return u>1e-5?(e[0]=o/u,e[1]=c/u):(e[0]=0,e[1]=0),e}function l(t,r){const e=r??new n(2);return e[0]=t[0],e[1]=t[1],e}function w(t,r,e){const o=e??new n(2);return o[0]=t[0]*r[0],o[1]=t[1]*r[1],o}function m(t,r,e){const o=e??new n(2);return o[0]=t[0]/r[0],o[1]=t[1]/r[1],o}function d(t,r,e){const o=e??new n(2);return h(t,o),c(o,r,o)}return{create:t,fromValues:t,set:function(t,r,e){const o=e??new n(2);return o[0]=t,o[1]=r,o},ceil:function(t,r){const e=r??new n(2);return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e},floor:function(t,r){const e=r??new n(2);return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e},round:function(t,r){const e=r??new n(2);return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e},clamp:function(t,r=0,e=1,o){const c=o??new n(2);return c[0]=Math.min(e,Math.max(r,t[0])),c[1]=Math.min(e,Math.max(r,t[1])),c},add:function(t,r,e){const o=e??new n(2);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o},addScaled:function(t,r,e,o){const c=o??new n(2);return c[0]=t[0]+r[0]*e,c[1]=t[1]+r[1]*e,c},angle:function(n,t){const r=n[0],e=n[1],o=t[0],c=t[1],u=Math.sqrt(r*r+e*e)*Math.sqrt(o*o+c*c),s=u&&a(n,t)/u;return Math.acos(s)},subtract:r,sub:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]},lerp:o,lerpV:function(t,r,e,o){const c=o??new n(2);return c[0]=t[0]+e[0]*(r[0]-t[0]),c[1]=t[1]+e[1]*(r[1]-t[1]),c},max:function(t,r,e){const o=e??new n(2);return o[0]=Math.max(t[0],r[0]),o[1]=Math.max(t[1],r[1]),o},min:function(t,r,e){const o=e??new n(2);return o[0]=Math.min(t[0],r[0]),o[1]=Math.min(t[1],r[1]),o},mulScalar:c,scale:c,divScalar:function(t,r,e){const o=e??new n(2);return o[0]=t[0]/r,o[1]=t[1]/r,o},inverse:u,invert:u,cross:function(t,r,e){const o=e??new n(3),c=t[0]*r[1]-t[1]*r[0];return o[0]=0,o[1]=0,o[2]=c,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:M,distSq:M,normalize:h,negate:function(t,r){const e=r??new n(2);return e[0]=-t[0],e[1]=-t[1],e},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,r){const e=r??new n(2),o=2*Math.random()*Math.PI;return e[0]=Math.cos(o)*t,e[1]=Math.sin(o)*t,e},zero:function(t){const r=t??new n(2);return r[0]=0,r[1]=0,r},transformMat4:function(t,r,e){const o=e??new n(2),c=t[0],u=t[1];return o[0]=c*r[0]+u*r[4]+r[12],o[1]=c*r[1]+u*r[5]+r[13],o},transformMat3:function(t,r,e){const o=e??new n(2),c=t[0],u=t[1];return o[0]=r[0]*c+r[4]*u+r[8],o[1]=r[1]*c+r[5]*u+r[9],o},rotate:function(t,r,e,o){const c=o??new n(2),u=t[0]-r[0],a=t[1]-r[1],s=Math.sin(e),i=Math.cos(e);return c[0]=u*i-a*s+r[0],c[1]=u*s+a*i+r[1],c},setLength:d,truncate:function(t,r,e){const o=e??new n(2);return s(t)>r?d(t,r,o):l(t,o)},midpoint:function(t,r,e){return o(t,r,.5,e??new n(2))}}}(n),c.set(n,t)),t}const a=new Map;function s(n){let t=a.get(n);return t||(t=function(n){function t(t,r,e){const o=new n(3);return void 0!==t&&(o[0]=t,void 0!==r&&(o[1]=r,void 0!==e&&(o[2]=e))),o}function r(t,r,e){const o=e??new n(3);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],o}function o(t,r,e,o){const c=o??new n(3);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c[2]=t[2]+e*(r[2]-t[2]),c}function c(t,r,e){const o=e??new n(3);return o[0]=t[0]*r,o[1]=t[1]*r,o[2]=t[2]*r,o}function u(t,r){const e=r??new n(3);return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function a(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function s(n){const t=n[0],r=n[1],e=n[2];return Math.sqrt(t*t+r*r+e*e)}function i(n){const t=n[0],r=n[1],e=n[2];return t*t+r*r+e*e}function f(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2];return Math.sqrt(r*r+e*e+o*o)}function M(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2];return r*r+e*e+o*o}function h(t,r){const e=r??new n(3),o=t[0],c=t[1],u=t[2],a=Math.sqrt(o*o+c*c+u*u);return a>1e-5?(e[0]=o/a,e[1]=c/a,e[2]=u/a):(e[0]=0,e[1]=0,e[2]=0),e}function l(t,r){const e=r??new n(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function w(t,r,e){const o=e??new n(3);return o[0]=t[0]*r[0],o[1]=t[1]*r[1],o[2]=t[2]*r[2],o}function m(t,r,e){const o=e??new n(3);return o[0]=t[0]/r[0],o[1]=t[1]/r[1],o[2]=t[2]/r[2],o}function d(t,r,e){const o=e??new n(3);return h(t,o),c(o,r,o)}return{create:t,fromValues:t,set:function(t,r,e,o){const c=o??new n(3);return c[0]=t,c[1]=r,c[2]=e,c},ceil:function(t,r){const e=r??new n(3);return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e},floor:function(t,r){const e=r??new n(3);return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e},round:function(t,r){const e=r??new n(3);return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e},clamp:function(t,r=0,e=1,o){const c=o??new n(3);return c[0]=Math.min(e,Math.max(r,t[0])),c[1]=Math.min(e,Math.max(r,t[1])),c[2]=Math.min(e,Math.max(r,t[2])),c},add:function(t,r,e){const o=e??new n(3);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o[2]=t[2]+r[2],o},addScaled:function(t,r,e,o){const c=o??new n(3);return c[0]=t[0]+r[0]*e,c[1]=t[1]+r[1]*e,c[2]=t[2]+r[2]*e,c},angle:function(n,t){const r=n[0],e=n[1],o=n[2],c=t[0],u=t[1],s=t[2],i=Math.sqrt(r*r+e*e+o*o)*Math.sqrt(c*c+u*u+s*s),f=i&&a(n,t)/i;return Math.acos(f)},subtract:r,sub:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]},lerp:o,lerpV:function(t,r,e,o){const c=o??new n(3);return c[0]=t[0]+e[0]*(r[0]-t[0]),c[1]=t[1]+e[1]*(r[1]-t[1]),c[2]=t[2]+e[2]*(r[2]-t[2]),c},max:function(t,r,e){const o=e??new n(3);return o[0]=Math.max(t[0],r[0]),o[1]=Math.max(t[1],r[1]),o[2]=Math.max(t[2],r[2]),o},min:function(t,r,e){const o=e??new n(3);return o[0]=Math.min(t[0],r[0]),o[1]=Math.min(t[1],r[1]),o[2]=Math.min(t[2],r[2]),o},mulScalar:c,scale:c,divScalar:function(t,r,e){const o=e??new n(3);return o[0]=t[0]/r,o[1]=t[1]/r,o[2]=t[2]/r,o},inverse:u,invert:u,cross:function(t,r,e){const o=e??new n(3),c=t[2]*r[0]-t[0]*r[2],u=t[0]*r[1]-t[1]*r[0];return o[0]=t[1]*r[2]-t[2]*r[1],o[1]=c,o[2]=u,o},dot:a,length:s,len:s,lengthSq:i,lenSq:i,distance:f,dist:f,distanceSq:M,distSq:M,normalize:h,negate:function(t,r){const e=r??new n(3);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e},copy:l,clone:l,multiply:w,mul:w,divide:m,div:m,random:function(t=1,r){const e=r??new n(3),o=2*Math.random()*Math.PI,c=2*Math.random()-1,u=Math.sqrt(1-c*c)*t;return e[0]=Math.cos(o)*u,e[1]=Math.sin(o)*u,e[2]=c*t,e},zero:function(t){const r=t??new n(3);return r[0]=0,r[1]=0,r[2]=0,r},transformMat4:function(t,r,e){const o=e??new n(3),c=t[0],u=t[1],a=t[2],s=r[3]*c+r[7]*u+r[11]*a+r[15]||1;return o[0]=(r[0]*c+r[4]*u+r[8]*a+r[12])/s,o[1]=(r[1]*c+r[5]*u+r[9]*a+r[13])/s,o[2]=(r[2]*c+r[6]*u+r[10]*a+r[14])/s,o},transformMat4Upper3x3:function(t,r,e){const o=e??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*r[0]+u*r[4]+a*r[8],o[1]=c*r[1]+u*r[5]+a*r[9],o[2]=c*r[2]+u*r[6]+a*r[10],o},transformMat3:function(t,r,e){const o=e??new n(3),c=t[0],u=t[1],a=t[2];return o[0]=c*r[0]+u*r[4]+a*r[8],o[1]=c*r[1]+u*r[5]+a*r[9],o[2]=c*r[2]+u*r[6]+a*r[10],o},transformQuat:function(t,r,e){const o=e??new n(3),c=r[0],u=r[1],a=r[2],s=2*r[3],i=t[0],f=t[1],M=t[2],h=u*M-a*f,l=a*i-c*M,w=c*f-u*i;return o[0]=i+h*s+2*(u*w-a*l),o[1]=f+l*s+2*(a*h-c*w),o[2]=M+w*s+2*(c*l-u*h),o},getTranslation:function(t,r){const e=r??new n(3);return e[0]=t[12],e[1]=t[13],e[2]=t[14],e},getAxis:function(t,r,e){const o=e??new n(3),c=4*r;return o[0]=t[c+0],o[1]=t[c+1],o[2]=t[c+2],o},getScaling:function(t,r){const e=r??new n(3),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],M=t[9],h=t[10];return e[0]=Math.sqrt(o*o+c*c+u*u),e[1]=Math.sqrt(a*a+s*s+i*i),e[2]=Math.sqrt(f*f+M*M+h*h),e},rotateX:function(t,r,e,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-r[0],u[1]=t[1]-r[1],u[2]=t[2]-r[2],a[0]=u[0],a[1]=u[1]*Math.cos(e)-u[2]*Math.sin(e),a[2]=u[1]*Math.sin(e)+u[2]*Math.cos(e),c[0]=a[0]+r[0],c[1]=a[1]+r[1],c[2]=a[2]+r[2],c},rotateY:function(t,r,e,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-r[0],u[1]=t[1]-r[1],u[2]=t[2]-r[2],a[0]=u[2]*Math.sin(e)+u[0]*Math.cos(e),a[1]=u[1],a[2]=u[2]*Math.cos(e)-u[0]*Math.sin(e),c[0]=a[0]+r[0],c[1]=a[1]+r[1],c[2]=a[2]+r[2],c},rotateZ:function(t,r,e,o){const c=o??new n(3),u=[],a=[];return u[0]=t[0]-r[0],u[1]=t[1]-r[1],u[2]=t[2]-r[2],a[0]=u[0]*Math.cos(e)-u[1]*Math.sin(e),a[1]=u[0]*Math.sin(e)+u[1]*Math.cos(e),a[2]=u[2],c[0]=a[0]+r[0],c[1]=a[1]+r[1],c[2]=a[2]+r[2],c},setLength:d,truncate:function(t,r,e){const o=e??new n(3);return s(t)>r?d(t,r,o):l(t,o)},midpoint:function(t,r,e){return o(t,r,.5,e??new n(3))}}}(n),a.set(n,t)),t}const i=new Map;function f(n){let t=i.get(n);return t||(t=function(n){const t=u(n),r=s(n);function o(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[8]=t[8],e[9]=t[9],e[10]=t[10],e}function c(t){const r=t??new n(12);return r[0]=1,r[1]=0,r[2]=0,r[4]=0,r[5]=1,r[6]=0,r[8]=0,r[9]=0,r[10]=1,r}function a(t,r){const e=r??new n(12),o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],M=t[9],h=t[10],l=h*s-i*M,w=-h*a+i*f,m=M*a-s*f,d=1/(o*l+c*w+u*m);return e[0]=l*d,e[1]=(-h*c+u*M)*d,e[2]=(i*c-u*s)*d,e[4]=w*d,e[5]=(h*o-u*f)*d,e[6]=(-i*o+u*a)*d,e[8]=m*d,e[9]=(-M*o+c*f)*d,e[10]=(s*o-c*a)*d,e}function i(t,r,e){const o=e??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],M=t[8],h=t[9],l=t[10],w=r[0],m=r[1],d=r[2],v=r[4],q=r[5],p=r[6],b=r[8],g=r[9],x=r[10];return o[0]=c*w+s*m+M*d,o[1]=u*w+i*m+h*d,o[2]=a*w+f*m+l*d,o[4]=c*v+s*q+M*p,o[5]=u*v+i*q+h*p,o[6]=a*v+f*q+l*p,o[8]=c*b+s*g+M*x,o[9]=u*b+i*g+h*x,o[10]=a*b+f*g+l*x,o}function f(t,r){const e=r??new n(12),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=c,e[2]=0,e[4]=-c,e[5]=o,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e}function M(t,r,e){const o=e??new n(12),c=t[0],u=t[1],a=t[2],s=t[4],i=t[5],f=t[6],M=Math.cos(r),h=Math.sin(r);return o[0]=M*c+h*s,o[1]=M*u+h*i,o[2]=M*a+h*f,o[4]=M*s-h*c,o[5]=M*i-h*u,o[6]=M*f-h*a,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o}return{clone:o,create:function(t,r,e,o,c,u,a,s,i){const f=new n(12);return f[3]=0,f[7]=0,f[11]=0,void 0!==t&&(f[0]=t,void 0!==r&&(f[1]=r,void 0!==e&&(f[2]=e,void 0!==o&&(f[4]=o,void 0!==c&&(f[5]=c,void 0!==u&&(f[6]=u,void 0!==a&&(f[8]=a,void 0!==s&&(f[9]=s,void 0!==i&&(f[10]=i))))))))),f},set:function(t,r,e,o,c,u,a,s,i,f){const M=f??new n(12);return M[0]=t,M[1]=r,M[2]=e,M[3]=0,M[4]=o,M[5]=c,M[6]=u,M[7]=0,M[8]=a,M[9]=s,M[10]=i,M[11]=0,M},fromMat4:function(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=0,e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=0,e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=0,e},fromQuat:function(t,r){const e=r??new n(12),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,M=o*s,h=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,q=a*i,p=a*f;return e[0]=1-l-d,e[1]=h+p,e[2]=w-q,e[3]=0,e[4]=h-p,e[5]=1-M-d,e[6]=m+v,e[7]=0,e[8]=w+q,e[9]=m-v,e[10]=1-M-l,e[11]=0,e},negate:function(t,r){const e=r??new n(12);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e},copy:o,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[4]-t[4])<e&&Math.abs(n[5]-t[5])<e&&Math.abs(n[6]-t[6])<e&&Math.abs(n[8]-t[8])<e&&Math.abs(n[9]-t[9])<e&&Math.abs(n[10]-t[10])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]},identity:c,transpose:function(t,r){const e=r??new n(12);if(e===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,e}const o=t[0],c=t[1],u=t[2],a=t[4],s=t[5],i=t[6],f=t[8],M=t[9],h=t[10];return e[0]=o,e[1]=a,e[2]=f,e[4]=c,e[5]=s,e[6]=M,e[8]=u,e[9]=i,e[10]=h,e},inverse:a,invert:a,determinant:function(n){const t=n[0],r=n[1],e=n[2],o=n[4],c=n[5],u=n[6],a=n[8],s=n[9],i=n[10];return t*(c*i-s*u)-o*(r*i-s*e)+a*(r*u-c*e)},mul:i,multiply:i,setTranslation:function(n,t,r){const e=r??c();return n!==e&&(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[4]=n[4],e[5]=n[5],e[6]=n[6]),e[8]=t[0],e[9]=t[1],e[10]=1,e},getTranslation:function(n,r){const e=r??t.create();return e[0]=n[8],e[1]=n[9],e},getAxis:function(n,r,e){const o=e??t.create(),c=4*r;return o[0]=n[c+0],o[1]=n[c+1],o},setAxis:function(n,t,r,e){const c=e===n?n:o(n,e),u=4*r;return c[u+0]=t[0],c[u+1]=t[1],c},getScaling:function(n,r){const e=r??t.create(),o=n[0],c=n[1],u=n[4],a=n[5];return e[0]=Math.sqrt(o*o+c*c),e[1]=Math.sqrt(u*u+a*a),e},get3DScaling:function(n,t){const e=t??r.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],M=n[9],h=n[10];return e[0]=Math.sqrt(o*o+c*c+u*u),e[1]=Math.sqrt(a*a+s*s+i*i),e[2]=Math.sqrt(f*f+M*M+h*h),e},translation:function(t,r){const e=r??new n(12);return e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=1,e[6]=0,e[8]=t[0],e[9]=t[1],e[10]=1,e},translate:function(t,r,e){const o=e??new n(12),c=r[0],u=r[1],a=t[0],s=t[1],i=t[2],f=t[4],M=t[5],h=t[6],l=t[8],w=t[9],m=t[10];return t!==o&&(o[0]=a,o[1]=s,o[2]=i,o[4]=f,o[5]=M,o[6]=h),o[8]=a*c+f*u+l,o[9]=s*c+M*u+w,o[10]=i*c+h*u+m,o},rotation:f,rotate:M,rotationX:function(t,r){const e=r??new n(12),o=Math.cos(t),c=Math.sin(t);return e[0]=1,e[1]=0,e[2]=0,e[4]=0,e[5]=o,e[6]=c,e[8]=0,e[9]=-c,e[10]=o,e},rotateX:function(t,r,e){const o=e??new n(12),c=t[4],u=t[5],a=t[6],s=t[8],i=t[9],f=t[10],M=Math.cos(r),h=Math.sin(r);return o[4]=M*c+h*s,o[5]=M*u+h*i,o[6]=M*a+h*f,o[8]=M*s-h*c,o[9]=M*i-h*u,o[10]=M*f-h*a,t!==o&&(o[0]=t[0],o[1]=t[1],o[2]=t[2]),o},rotationY:function(t,r){const e=r??new n(12),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=0,e[2]=-c,e[4]=0,e[5]=1,e[6]=0,e[8]=c,e[9]=0,e[10]=o,e},rotateY:function(t,r,e){const o=e??new n(12),c=t[0],u=t[1],a=t[2],s=t[8],i=t[9],f=t[10],M=Math.cos(r),h=Math.sin(r);return o[0]=M*c-h*s,o[1]=M*u-h*i,o[2]=M*a-h*f,o[8]=M*s+h*c,o[9]=M*i+h*u,o[10]=M*f+h*a,t!==o&&(o[4]=t[4],o[5]=t[5],o[6]=t[6]),o},rotationZ:f,rotateZ:M,scaling:function(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=0,e[2]=0,e[4]=0,e[5]=t[1],e[6]=0,e[8]=0,e[9]=0,e[10]=1,e},scale:function(t,r,e){const o=e??new n(12),c=r[0],u=r[1];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},uniformScaling:function(t,r){const e=r??new n(12);return e[0]=t,e[1]=0,e[2]=0,e[4]=0,e[5]=t,e[6]=0,e[8]=0,e[9]=0,e[10]=1,e},uniformScale:function(t,r,e){const o=e??new n(12);return o[0]=r*t[0],o[1]=r*t[1],o[2]=r*t[2],o[4]=r*t[4],o[5]=r*t[5],o[6]=r*t[6],t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10]),o},scaling3D:function(t,r){const e=r??new n(12);return e[0]=t[0],e[1]=0,e[2]=0,e[4]=0,e[5]=t[1],e[6]=0,e[8]=0,e[9]=0,e[10]=t[2],e},scale3D:function(t,r,e){const o=e??new n(12),c=r[0],u=r[1],a=r[2];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],o[8]=a*t[8],o[9]=a*t[9],o[10]=a*t[10],o},uniformScaling3D:function(t,r){const e=r??new n(12);return e[0]=t,e[1]=0,e[2]=0,e[4]=0,e[5]=t,e[6]=0,e[8]=0,e[9]=0,e[10]=t,e},uniformScale3D:function(t,r,e){const o=e??new n(12);return o[0]=r*t[0],o[1]=r*t[1],o[2]=r*t[2],o[4]=r*t[4],o[5]=r*t[5],o[6]=r*t[6],o[8]=r*t[8],o[9]=r*t[9],o[10]=r*t[10],o}}}(n),i.set(n,t)),t}const M=new Map;function h(n){let t=M.get(n);return t||(t=function(n){const t=s(n);function r(t,r){const e=r??new n(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}const o=r;function c(t){const r=t??new n(16);return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r}function u(t,r){const e=r??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],M=t[7],h=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],q=t[14],p=t[15],b=w*p,g=q*m,x=f*p,y=q*M,S=f*m,A=w*M,z=u*p,F=q*a,k=u*m,T=w*a,Z=u*M,I=f*a,P=h*v,V=d*l,D=s*v,X=d*i,Y=s*l,L=h*i,R=o*v,E=d*c,_=o*l,Q=h*c,N=o*i,U=s*c,j=b*i+y*l+S*v-(g*i+x*l+A*v),O=g*c+z*l+T*v-(b*c+F*l+k*v),$=x*c+F*i+Z*v-(y*c+z*i+I*v),B=A*c+k*i+I*l-(S*c+T*i+Z*l),C=1/(o*j+s*O+h*$+d*B);return e[0]=C*j,e[1]=C*O,e[2]=C*$,e[3]=C*B,e[4]=C*(g*s+x*h+A*d-(b*s+y*h+S*d)),e[5]=C*(b*o+F*h+k*d-(g*o+z*h+T*d)),e[6]=C*(y*o+z*s+I*d-(x*o+F*s+Z*d)),e[7]=C*(S*o+T*s+Z*h-(A*o+k*s+I*h)),e[8]=C*(P*M+X*m+Y*p-(V*M+D*m+L*p)),e[9]=C*(V*a+R*m+Q*p-(P*a+E*m+_*p)),e[10]=C*(D*a+E*M+N*p-(X*a+R*M+U*p)),e[11]=C*(L*a+_*M+U*m-(Y*a+Q*M+N*m)),e[12]=C*(D*w+L*q+V*f-(Y*q+P*f+X*w)),e[13]=C*(_*q+P*u+E*w-(R*w+Q*q+V*u)),e[14]=C*(R*f+U*q+X*u-(N*q+D*u+E*f)),e[15]=C*(N*w+Y*u+Q*f-(_*f+U*w+L*u)),e}const a=u;function i(t,r,e){const o=e??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],M=t[6],h=t[7],l=t[8],w=t[9],m=t[10],d=t[11],v=t[12],q=t[13],p=t[14],b=t[15],g=r[0],x=r[1],y=r[2],S=r[3],A=r[4],z=r[5],F=r[6],k=r[7],T=r[8],Z=r[9],I=r[10],P=r[11],V=r[12],D=r[13],X=r[14],Y=r[15];return o[0]=c*g+i*x+l*y+v*S,o[1]=u*g+f*x+w*y+q*S,o[2]=a*g+M*x+m*y+p*S,o[3]=s*g+h*x+d*y+b*S,o[4]=c*A+i*z+l*F+v*k,o[5]=u*A+f*z+w*F+q*k,o[6]=a*A+M*z+m*F+p*k,o[7]=s*A+h*z+d*F+b*k,o[8]=c*T+i*Z+l*I+v*P,o[9]=u*T+f*Z+w*I+q*P,o[10]=a*T+M*Z+m*I+p*P,o[11]=s*T+h*Z+d*I+b*P,o[12]=c*V+i*D+l*X+v*Y,o[13]=u*V+f*D+w*X+q*Y,o[14]=a*V+M*D+m*X+p*Y,o[15]=s*V+h*D+d*X+b*Y,o}const f=i,M=t.create(),h=t.create(),l=t.create();function w(t,r,e){const o=e??new n(16);let c=t[0],u=t[1],a=t[2];const s=Math.sqrt(c*c+u*u+a*a);c/=s,u/=s,a/=s;const i=c*c,f=u*u,M=a*a,h=Math.cos(r),l=Math.sin(r),w=1-h;return o[0]=i+(1-i)*h,o[1]=c*u*w+a*l,o[2]=c*a*w-u*l,o[3]=0,o[4]=c*u*w-a*l,o[5]=f+(1-f)*h,o[6]=u*a*w+c*l,o[7]=0,o[8]=c*a*w+u*l,o[9]=u*a*w-c*l,o[10]=M+(1-M)*h,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}function m(t,r,e,o){const c=o??new n(16);let u=r[0],a=r[1],s=r[2];const i=Math.sqrt(u*u+a*a+s*s);u/=i,a/=i,s/=i;const f=u*u,M=a*a,h=s*s,l=Math.cos(e),w=Math.sin(e),m=1-l,d=f+(1-f)*l,v=u*a*m+s*w,q=u*s*m-a*w,p=u*a*m-s*w,b=M+(1-M)*l,g=a*s*m+u*w,x=u*s*m+a*w,y=a*s*m-u*w,S=h+(1-h)*l,A=t[0],z=t[1],F=t[2],k=t[3],T=t[4],Z=t[5],I=t[6],P=t[7],V=t[8],D=t[9],X=t[10],Y=t[11];return c[0]=d*A+v*T+q*V,c[1]=d*z+v*Z+q*D,c[2]=d*F+v*I+q*X,c[3]=d*k+v*P+q*Y,c[4]=p*A+b*T+g*V,c[5]=p*z+b*Z+g*D,c[6]=p*F+b*I+g*X,c[7]=p*k+b*P+g*Y,c[8]=x*A+y*T+S*V,c[9]=x*z+y*Z+S*D,c[10]=x*F+y*I+S*X,c[11]=x*k+y*P+S*Y,t!==c&&(c[12]=t[12],c[13]=t[13],c[14]=t[14],c[15]=t[15]),c}return{create:function(t,r,e,o,c,u,a,s,i,f,M,h,l,w,m,d){const v=new n(16);return void 0!==t&&(v[0]=t,void 0!==r&&(v[1]=r,void 0!==e&&(v[2]=e,void 0!==o&&(v[3]=o,void 0!==c&&(v[4]=c,void 0!==u&&(v[5]=u,void 0!==a&&(v[6]=a,void 0!==s&&(v[7]=s,void 0!==i&&(v[8]=i,void 0!==f&&(v[9]=f,void 0!==M&&(v[10]=M,void 0!==h&&(v[11]=h,void 0!==l&&(v[12]=l,void 0!==w&&(v[13]=w,void 0!==m&&(v[14]=m,void 0!==d&&(v[15]=d)))))))))))))))),v},set:function(t,r,e,o,c,u,a,s,i,f,M,h,l,w,m,d,v){const q=v??new n(16);return q[0]=t,q[1]=r,q[2]=e,q[3]=o,q[4]=c,q[5]=u,q[6]=a,q[7]=s,q[8]=i,q[9]=f,q[10]=M,q[11]=h,q[12]=l,q[13]=w,q[14]=m,q[15]=d,q},fromMat3:function(t,r){const e=r??new n(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=0,e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=0,e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},fromQuat:function(t,r){const e=r??new n(16),o=t[0],c=t[1],u=t[2],a=t[3],s=o+o,i=c+c,f=u+u,M=o*s,h=c*s,l=c*i,w=u*s,m=u*i,d=u*f,v=a*s,q=a*i,p=a*f;return e[0]=1-l-d,e[1]=h+p,e[2]=w-q,e[3]=0,e[4]=h-p,e[5]=1-M-d,e[6]=m+v,e[7]=0,e[8]=w+q,e[9]=m-v,e[10]=1-M-l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},negate:function(t,r){const e=r??new n(16);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e[4]=-t[4],e[5]=-t[5],e[6]=-t[6],e[7]=-t[7],e[8]=-t[8],e[9]=-t[9],e[10]=-t[10],e[11]=-t[11],e[12]=-t[12],e[13]=-t[13],e[14]=-t[14],e[15]=-t[15],e},copy:r,clone:o,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[3]-t[3])<e&&Math.abs(n[4]-t[4])<e&&Math.abs(n[5]-t[5])<e&&Math.abs(n[6]-t[6])<e&&Math.abs(n[7]-t[7])<e&&Math.abs(n[8]-t[8])<e&&Math.abs(n[9]-t[9])<e&&Math.abs(n[10]-t[10])<e&&Math.abs(n[11]-t[11])<e&&Math.abs(n[12]-t[12])<e&&Math.abs(n[13]-t[13])<e&&Math.abs(n[14]-t[14])<e&&Math.abs(n[15]-t[15])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]&&n[11]===t[11]&&n[12]===t[12]&&n[13]===t[13]&&n[14]===t[14]&&n[15]===t[15]},identity:c,transpose:function(t,r){const e=r??new n(16);if(e===t){let n;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,e}const o=t[0],c=t[1],u=t[2],a=t[3],s=t[4],i=t[5],f=t[6],M=t[7],h=t[8],l=t[9],w=t[10],m=t[11],d=t[12],v=t[13],q=t[14],p=t[15];return e[0]=o,e[1]=s,e[2]=h,e[3]=d,e[4]=c,e[5]=i,e[6]=l,e[7]=v,e[8]=u,e[9]=f,e[10]=w,e[11]=q,e[12]=a,e[13]=M,e[14]=m,e[15]=p,e},inverse:u,determinant:function(n){const t=n[0],r=n[1],e=n[2],o=n[3],c=n[4],u=n[5],a=n[6],s=n[7],i=n[8],f=n[9],M=n[10],h=n[11],l=n[12],w=n[13],m=n[14],d=n[15],v=M*d,q=m*h,p=a*d,b=m*s,g=a*h,x=M*s,y=e*d,S=m*o,A=e*h,z=M*o,F=e*s,k=a*o;return t*(v*u+b*f+g*w-(q*u+p*f+x*w))+c*(q*r+y*f+z*w-(v*r+S*f+A*w))+i*(p*r+S*u+F*w-(b*r+y*u+k*w))+l*(x*r+A*u+k*f-(g*r+z*u+F*f))},invert:a,multiply:i,mul:f,setTranslation:function(n,t,r){const e=r??c();return n!==e&&(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11]),e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e},getTranslation:function(n,r){const e=r??t.create();return e[0]=n[12],e[1]=n[13],e[2]=n[14],e},getAxis:function(n,r,e){const o=e??t.create(),c=4*r;return o[0]=n[c+0],o[1]=n[c+1],o[2]=n[c+2],o},setAxis:function(n,t,e,o){const c=o===n?o:r(n,o),u=4*e;return c[u+0]=t[0],c[u+1]=t[1],c[u+2]=t[2],c},getScaling:function(n,r){const e=r??t.create(),o=n[0],c=n[1],u=n[2],a=n[4],s=n[5],i=n[6],f=n[8],M=n[9],h=n[10];return e[0]=Math.sqrt(o*o+c*c+u*u),e[1]=Math.sqrt(a*a+s*s+i*i),e[2]=Math.sqrt(f*f+M*M+h*h),e},perspective:function(t,r,e,o,c){const u=c??new n(16),a=Math.tan(.5*Math.PI-.5*t);if(u[0]=a/r,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,Number.isFinite(o)){const n=1/(e-o);u[10]=o*n,u[14]=o*e*n}else u[10]=-1,u[14]=-e;return u},perspectiveReverseZ:function(t,r,e,o=1/0,c){const u=c??new n(16),a=1/Math.tan(.5*t);if(u[0]=a/r,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,o===1/0)u[10]=0,u[14]=e;else{const n=1/(o-e);u[10]=e*n,u[14]=o*e*n}return u},ortho:function(t,r,e,o,c,u,a){const s=a??new n(16);return s[0]=2/(r-t),s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2/(o-e),s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1/(c-u),s[11]=0,s[12]=(r+t)/(t-r),s[13]=(o+e)/(e-o),s[14]=c/(c-u),s[15]=1,s},frustum:function(t,r,e,o,c,u,a){const s=a??new n(16),i=r-t,f=o-e,M=c-u;return s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+r)/i,s[9]=(o+e)/f,s[10]=u/M,s[11]=-1,s[12]=0,s[13]=0,s[14]=c*u/M,s[15]=0,s},frustumReverseZ:function(t,r,e,o,c,u=1/0,a){const s=a??new n(16),i=r-t,f=o-e;if(s[0]=2*c/i,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=2*c/f,s[6]=0,s[7]=0,s[8]=(t+r)/i,s[9]=(o+e)/f,s[11]=-1,s[12]=0,s[13]=0,s[15]=0,u===1/0)s[10]=0,s[14]=c;else{const n=1/(u-c);s[10]=c*n,s[14]=u*c*n}return s},aim:function(r,e,o,c){const u=c??new n(16);return t.normalize(t.subtract(e,r,l),l),t.normalize(t.cross(o,l,M),M),t.normalize(t.cross(l,M,h),h),u[0]=M[0],u[1]=M[1],u[2]=M[2],u[3]=0,u[4]=h[0],u[5]=h[1],u[6]=h[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=r[0],u[13]=r[1],u[14]=r[2],u[15]=1,u},cameraAim:function(r,e,o,c){const u=c??new n(16);return t.normalize(t.subtract(r,e,l),l),t.normalize(t.cross(o,l,M),M),t.normalize(t.cross(l,M,h),h),u[0]=M[0],u[1]=M[1],u[2]=M[2],u[3]=0,u[4]=h[0],u[5]=h[1],u[6]=h[2],u[7]=0,u[8]=l[0],u[9]=l[1],u[10]=l[2],u[11]=0,u[12]=r[0],u[13]=r[1],u[14]=r[2],u[15]=1,u},lookAt:function(r,e,o,c){const u=c??new n(16);return t.normalize(t.subtract(r,e,l),l),t.normalize(t.cross(o,l,M),M),t.normalize(t.cross(l,M,h),h),u[0]=M[0],u[1]=h[0],u[2]=l[0],u[3]=0,u[4]=M[1],u[5]=h[1],u[6]=l[1],u[7]=0,u[8]=M[2],u[9]=h[2],u[10]=l[2],u[11]=0,u[12]=-(M[0]*r[0]+M[1]*r[1]+M[2]*r[2]),u[13]=-(h[0]*r[0]+h[1]*r[1]+h[2]*r[2]),u[14]=-(l[0]*r[0]+l[1]*r[1]+l[2]*r[2]),u[15]=1,u},translation:function(t,r){const e=r??new n(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e},translate:function(t,r,e){const o=e??new n(16),c=r[0],u=r[1],a=r[2],s=t[0],i=t[1],f=t[2],M=t[3],h=t[4],l=t[5],w=t[6],m=t[7],d=t[8],v=t[9],q=t[10],p=t[11],b=t[12],g=t[13],x=t[14],y=t[15];return t!==o&&(o[0]=s,o[1]=i,o[2]=f,o[3]=M,o[4]=h,o[5]=l,o[6]=w,o[7]=m,o[8]=d,o[9]=v,o[10]=q,o[11]=p),o[12]=s*c+h*u+d*a+b,o[13]=i*c+l*u+v*a+g,o[14]=f*c+w*u+q*a+x,o[15]=M*c+m*u+p*a+y,o},rotationX:function(t,r){const e=r??new n(16),o=Math.cos(t),c=Math.sin(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=c,e[7]=0,e[8]=0,e[9]=-c,e[10]=o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},rotateX:function(t,r,e){const o=e??new n(16),c=t[4],u=t[5],a=t[6],s=t[7],i=t[8],f=t[9],M=t[10],h=t[11],l=Math.cos(r),w=Math.sin(r);return o[4]=l*c+w*i,o[5]=l*u+w*f,o[6]=l*a+w*M,o[7]=l*s+w*h,o[8]=l*i-w*c,o[9]=l*f-w*u,o[10]=l*M-w*a,o[11]=l*h-w*s,t!==o&&(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationY:function(t,r){const e=r??new n(16),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=0,e[2]=-c,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=c,e[9]=0,e[10]=o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},rotateY:function(t,r,e){const o=e??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[8],f=t[9],M=t[10],h=t[11],l=Math.cos(r),w=Math.sin(r);return o[0]=l*c-w*i,o[1]=l*u-w*f,o[2]=l*a-w*M,o[3]=l*s-w*h,o[8]=l*i+w*c,o[9]=l*f+w*u,o[10]=l*M+w*a,o[11]=l*h+w*s,t!==o&&(o[4]=t[4],o[5]=t[5],o[6]=t[6],o[7]=t[7],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},rotationZ:function(t,r){const e=r??new n(16),o=Math.cos(t),c=Math.sin(t);return e[0]=o,e[1]=c,e[2]=0,e[3]=0,e[4]=-c,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},rotateZ:function(t,r,e){const o=e??new n(16),c=t[0],u=t[1],a=t[2],s=t[3],i=t[4],f=t[5],M=t[6],h=t[7],l=Math.cos(r),w=Math.sin(r);return o[0]=l*c+w*i,o[1]=l*u+w*f,o[2]=l*a+w*M,o[3]=l*s+w*h,o[4]=l*i-w*c,o[5]=l*f-w*u,o[6]=l*M-w*a,o[7]=l*h-w*s,t!==o&&(o[8]=t[8],o[9]=t[9],o[10]=t[10],o[11]=t[11],o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},axisRotation:w,rotation:w,axisRotate:m,rotate:m,scaling:function(t,r){const e=r??new n(16);return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},scale:function(t,r,e){const o=e??new n(16),c=r[0],u=r[1],a=r[2];return o[0]=c*t[0],o[1]=c*t[1],o[2]=c*t[2],o[3]=c*t[3],o[4]=u*t[4],o[5]=u*t[5],o[6]=u*t[6],o[7]=u*t[7],o[8]=a*t[8],o[9]=a*t[9],o[10]=a*t[10],o[11]=a*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o},uniformScaling:function(t,r){const e=r??new n(16);return e[0]=t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},uniformScale:function(t,r,e){const o=e??new n(16);return o[0]=r*t[0],o[1]=r*t[1],o[2]=r*t[2],o[3]=r*t[3],o[4]=r*t[4],o[5]=r*t[5],o[6]=r*t[6],o[7]=r*t[7],o[8]=r*t[8],o[9]=r*t[9],o[10]=r*t[10],o[11]=r*t[11],t!==o&&(o[12]=t[12],o[13]=t[13],o[14]=t[14],o[15]=t[15]),o}}}(n),M.set(n,t)),t}const l=new Map;function w(n){let t=l.get(n);return t||(t=function(n){const t=s(n);function r(t,r,e,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==r&&(c[1]=r,void 0!==e&&(c[2]=e,void 0!==o&&(c[3]=o)))),c}const o=r;function c(t,r,e){const o=e??new n(4),c=.5*r,u=Math.sin(c);return o[0]=u*t[0],o[1]=u*t[1],o[2]=u*t[2],o[3]=Math.cos(c),o}function u(t,r,e){const o=e??new n(4),c=t[0],u=t[1],a=t[2],s=t[3],i=r[0],f=r[1],M=r[2],h=r[3];return o[0]=c*h+s*i+u*M-a*f,o[1]=u*h+s*f+a*i-c*M,o[2]=a*h+s*M+c*f-u*i,o[3]=s*h-c*i-u*f-a*M,o}const a=u;function i(t,r,o,c){const u=c??new n(4),a=t[0],s=t[1],i=t[2],f=t[3];let M,h,l=r[0],w=r[1],m=r[2],d=r[3],v=a*l+s*w+i*m+f*d;if(v<0&&(v=-v,l=-l,w=-w,m=-m,d=-d),1-v>e){const n=Math.acos(v),t=Math.sin(n);M=Math.sin((1-o)*n)/t,h=Math.sin(o*n)/t}else M=1-o,h=o;return u[0]=M*a+h*l,u[1]=M*s+h*w,u[2]=M*i+h*m,u[3]=M*f+h*d,u}function f(t,r){const e=r??new n(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}const M=f;function h(t,r,e){const o=e??new n(4);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],o[3]=t[3]-r[3],o}const l=h;function w(t,r,e){const o=e??new n(4);return o[0]=t[0]*r,o[1]=t[1]*r,o[2]=t[2]*r,o[3]=t[3]*r,o}const m=w;function d(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function v(n){const t=n[0],r=n[1],e=n[2],o=n[3];return Math.sqrt(t*t+r*r+e*e+o*o)}const q=v;function p(n){const t=n[0],r=n[1],e=n[2],o=n[3];return t*t+r*r+e*e+o*o}const b=p;function g(t,r){const e=r??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(e[0]=o/s,e[1]=c/s,e[2]=u/s,e[3]=a/s):(e[0]=0,e[1]=0,e[2]=0,e[3]=1),e}const x=t.create(),y=t.create(),S=t.create(),A=new n(4),z=new n(4);return{create:r,fromValues:o,set:function(t,r,e,o,c){const u=c??new n(4);return u[0]=t,u[1]=r,u[2]=e,u[3]=o,u},fromAxisAngle:c,toAxisAngle:function(n,r){const o=r??t.create(3),c=2*Math.acos(n[3]),u=Math.sin(.5*c);return u>e?(o[0]=n[0]/u,o[1]=n[1]/u,o[2]=n[2]/u):(o[0]=1,o[1]=0,o[2]=0),{angle:c,axis:o}},angle:function(n,t){const r=d(n,t);return Math.acos(2*r*r-1)},multiply:u,mul:a,rotateX:function(t,r,e){const o=e??new n(4),c=.5*r,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),M=Math.cos(c);return o[0]=u*M+i*f,o[1]=a*M+s*f,o[2]=s*M-a*f,o[3]=i*M-u*f,o},rotateY:function(t,r,e){const o=e??new n(4),c=.5*r,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),M=Math.cos(c);return o[0]=u*M-s*f,o[1]=a*M+i*f,o[2]=s*M+u*f,o[3]=i*M-a*f,o},rotateZ:function(t,r,e){const o=e??new n(4),c=.5*r,u=t[0],a=t[1],s=t[2],i=t[3],f=Math.sin(c),M=Math.cos(c);return o[0]=u*M+a*f,o[1]=a*M-u*f,o[2]=s*M+i*f,o[3]=i*M-s*f,o},slerp:i,inverse:function(t,r){const e=r??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=o*o+c*c+u*u+a*a,i=s?1/s:0;return e[0]=-o*i,e[1]=-c*i,e[2]=-u*i,e[3]=a*i,e},conjugate:function(t,r){const e=r??new n(4);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},fromMat:function(t,r){const e=r??new n(4),o=t[0]+t[5]+t[10];if(o>0){const n=Math.sqrt(o+1);e[3]=.5*n;const r=.5/n;e[0]=(t[6]-t[9])*r,e[1]=(t[8]-t[2])*r,e[2]=(t[1]-t[4])*r}else{let n=0;t[5]>t[0]&&(n=1),t[10]>t[4*n+n]&&(n=2);const r=(n+1)%3,o=(n+2)%3,c=Math.sqrt(t[4*n+n]-t[4*r+r]-t[4*o+o]+1);e[n]=.5*c;const u=.5/c;e[3]=(t[4*r+o]-t[4*o+r])*u,e[r]=(t[4*r+n]+t[4*n+r])*u,e[o]=(t[4*o+n]+t[4*n+o])*u}return e},fromEuler:function(t,r,e,o,c){const u=c??new n(4),a=.5*t,s=.5*r,i=.5*e,f=Math.sin(a),M=Math.cos(a),h=Math.sin(s),l=Math.cos(s),w=Math.sin(i),m=Math.cos(i);switch(o){case"xyz":u[0]=f*l*m+M*h*w,u[1]=M*h*m-f*l*w,u[2]=M*l*w+f*h*m,u[3]=M*l*m-f*h*w;break;case"xzy":u[0]=f*l*m-M*h*w,u[1]=M*h*m-f*l*w,u[2]=M*l*w+f*h*m,u[3]=M*l*m+f*h*w;break;case"yxz":u[0]=f*l*m+M*h*w,u[1]=M*h*m-f*l*w,u[2]=M*l*w-f*h*m,u[3]=M*l*m+f*h*w;break;case"yzx":u[0]=f*l*m+M*h*w,u[1]=M*h*m+f*l*w,u[2]=M*l*w-f*h*m,u[3]=M*l*m-f*h*w;break;case"zxy":u[0]=f*l*m-M*h*w,u[1]=M*h*m+f*l*w,u[2]=M*l*w+f*h*m,u[3]=M*l*m-f*h*w;break;case"zyx":u[0]=f*l*m-M*h*w,u[1]=M*h*m+f*l*w,u[2]=M*l*w-f*h*m,u[3]=M*l*m+f*h*w;break;default:throw new Error(`Unknown rotation order: ${o}`)}return u},copy:f,clone:M,add:function(t,r,e){const o=e??new n(4);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o[2]=t[2]+r[2],o[3]=t[3]+r[3],o},subtract:h,sub:l,mulScalar:w,scale:m,divScalar:function(t,r,e){const o=e??new n(4);return o[0]=t[0]/r,o[1]=t[1]/r,o[2]=t[2]/r,o[3]=t[3]/r,o},dot:d,lerp:function(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c[2]=t[2]+e*(r[2]-t[2]),c[3]=t[3]+e*(r[3]-t[3]),c},length:v,len:q,lengthSq:p,lenSq:b,normalize:g,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[3]-t[3])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},identity:function(t){const r=t??new n(4);return r[0]=0,r[1]=0,r[2]=0,r[3]=1,r},rotationTo:function(r,e,o){const u=o??new n(4),a=t.dot(r,e);return a<-.999999?(t.cross(y,r,x),t.len(x)<1e-6&&t.cross(S,r,x),t.normalize(x,x),c(x,Math.PI,u),u):a>.999999?(u[0]=0,u[1]=0,u[2]=0,u[3]=1,u):(t.cross(r,e,x),u[0]=x[0],u[1]=x[1],u[2]=x[2],u[3]=1+a,g(u,u))},sqlerp:function(t,r,e,o,c,u){const a=u??new n(4);return i(t,o,c,A),i(r,e,c,z),i(A,z,2*c*(1-c),a),a}}}(n),l.set(n,t)),t}const m=new Map;function d(n){let t=m.get(n);return t||(t=function(n){function t(t,r,e,o){const c=new n(4);return void 0!==t&&(c[0]=t,void 0!==r&&(c[1]=r,void 0!==e&&(c[2]=e,void 0!==o&&(c[3]=o)))),c}function r(t,r,e){const o=e??new n(4);return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],o[3]=t[3]-r[3],o}function o(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+e*(r[0]-t[0]),c[1]=t[1]+e*(r[1]-t[1]),c[2]=t[2]+e*(r[2]-t[2]),c[3]=t[3]+e*(r[3]-t[3]),c}function c(t,r,e){const o=e??new n(4);return o[0]=t[0]*r,o[1]=t[1]*r,o[2]=t[2]*r,o[3]=t[3]*r,o}function u(t,r){const e=r??new n(4);return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e}function a(n){const t=n[0],r=n[1],e=n[2],o=n[3];return Math.sqrt(t*t+r*r+e*e+o*o)}function s(n){const t=n[0],r=n[1],e=n[2],o=n[3];return t*t+r*r+e*e+o*o}function i(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return Math.sqrt(r*r+e*e+o*o+c*c)}function f(n,t){const r=n[0]-t[0],e=n[1]-t[1],o=n[2]-t[2],c=n[3]-t[3];return r*r+e*e+o*o+c*c}function M(t,r){const e=r??new n(4),o=t[0],c=t[1],u=t[2],a=t[3],s=Math.sqrt(o*o+c*c+u*u+a*a);return s>1e-5?(e[0]=o/s,e[1]=c/s,e[2]=u/s,e[3]=a/s):(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function h(t,r){const e=r??new n(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function l(t,r,e){const o=e??new n(4);return o[0]=t[0]*r[0],o[1]=t[1]*r[1],o[2]=t[2]*r[2],o[3]=t[3]*r[3],o}function w(t,r,e){const o=e??new n(4);return o[0]=t[0]/r[0],o[1]=t[1]/r[1],o[2]=t[2]/r[2],o[3]=t[3]/r[3],o}function m(t,r,e){const o=e??new n(4);return M(t,o),c(o,r,o)}return{create:t,fromValues:t,set:function(t,r,e,o,c){const u=c??new n(4);return u[0]=t,u[1]=r,u[2]=e,u[3]=o,u},ceil:function(t,r){const e=r??new n(4);return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e[3]=Math.ceil(t[3]),e},floor:function(t,r){const e=r??new n(4);return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e[3]=Math.floor(t[3]),e},round:function(t,r){const e=r??new n(4);return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e[3]=Math.round(t[3]),e},clamp:function(t,r=0,e=1,o){const c=o??new n(4);return c[0]=Math.min(e,Math.max(r,t[0])),c[1]=Math.min(e,Math.max(r,t[1])),c[2]=Math.min(e,Math.max(r,t[2])),c[3]=Math.min(e,Math.max(r,t[3])),c},add:function(t,r,e){const o=e??new n(4);return o[0]=t[0]+r[0],o[1]=t[1]+r[1],o[2]=t[2]+r[2],o[3]=t[3]+r[3],o},addScaled:function(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+r[0]*e,c[1]=t[1]+r[1]*e,c[2]=t[2]+r[2]*e,c[3]=t[3]+r[3]*e,c},subtract:r,sub:r,equalsApproximately:function(n,t){return Math.abs(n[0]-t[0])<e&&Math.abs(n[1]-t[1])<e&&Math.abs(n[2]-t[2])<e&&Math.abs(n[3]-t[3])<e},equals:function(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]},lerp:o,lerpV:function(t,r,e,o){const c=o??new n(4);return c[0]=t[0]+e[0]*(r[0]-t[0]),c[1]=t[1]+e[1]*(r[1]-t[1]),c[2]=t[2]+e[2]*(r[2]-t[2]),c[3]=t[3]+e[3]*(r[3]-t[3]),c},max:function(t,r,e){const o=e??new n(4);return o[0]=Math.max(t[0],r[0]),o[1]=Math.max(t[1],r[1]),o[2]=Math.max(t[2],r[2]),o[3]=Math.max(t[3],r[3]),o},min:function(t,r,e){const o=e??new n(4);return o[0]=Math.min(t[0],r[0]),o[1]=Math.min(t[1],r[1]),o[2]=Math.min(t[2],r[2]),o[3]=Math.min(t[3],r[3]),o},mulScalar:c,scale:c,divScalar:function(t,r,e){const o=e??new n(4);return o[0]=t[0]/r,o[1]=t[1]/r,o[2]=t[2]/r,o[3]=t[3]/r,o},inverse:u,invert:u,dot:function(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]},length:a,len:a,lengthSq:s,lenSq:s,distance:i,dist:i,distanceSq:f,distSq:f,normalize:M,negate:function(t,r){const e=r??new n(4);return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},copy:h,clone:h,multiply:l,mul:l,divide:w,div:w,zero:function(t){const r=t??new n(4);return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r},transformMat4:function(t,r,e){const o=e??new n(4),c=t[0],u=t[1],a=t[2],s=t[3];return o[0]=r[0]*c+r[4]*u+r[8]*a+r[12]*s,o[1]=r[1]*c+r[5]*u+r[9]*a+r[13]*s,o[2]=r[2]*c+r[6]*u+r[10]*a+r[14]*s,o[3]=r[3]*c+r[7]*u+r[11]*a+r[15]*s,o},setLength:m,truncate:function(t,r,e){const o=e??new n(4);return a(t)>r?m(t,r,o):h(t,o)},midpoint:function(t,r,e){return o(t,r,.5,e??new n(4))}}}(n),m.set(n,t)),t}function v(n,t,r,e,o,c){return{mat3:f(n),mat4:h(t),quat:w(r),vec2:u(e),vec3:s(o),vec4:d(c)}}const{mat3:q,mat4:p,quat:b,vec2:g,vec3:x,vec4:y}=v(Float32Array,Float32Array,Float32Array,Float32Array,Float32Array,Float32Array),{mat3:S,mat4:A,quat:z,vec2:F,vec3:k,vec4:T}=v(Float64Array,Float64Array,Float64Array,Float64Array,Float64Array,Float64Array),{mat3:Z,mat4:I,quat:P,vec2:V,vec3:D,vec4:X}=v(n,Array,Array,Array,Array,Array);export{q as mat3,S as mat3d,Z as mat3n,p as mat4,A as mat4d,I as mat4n,b as quat,z as quatd,P as quatn,o as utils,g as vec2,F as vec2d,V as vec2n,x as vec3,k as vec3d,D as vec3n,y as vec4,T as vec4d,X as vec4n}; | ||
//# sourceMappingURL=wgpu-matrix.module.min.js.map |
{ | ||
"name": "wgpu-matrix", | ||
"version": "3.1.0", | ||
"version": "3.2.0", | ||
"description": "fast matrix math library for WebGPU", | ||
@@ -5,0 +5,0 @@ "main": "dist/3.x/wgpu-matrix.module.js", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1921156
13472