@turbox3d/math
Version:
Large-scale graphics application math library
1 lines • 73.6 kB
JavaScript
!function(t,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports["@turbox3d/math"]=i():t.Math=i()}(self,(()=>(()=>{"use strict";var t={d:(i,e)=>{for(var n in e)t.o(e,n)&&!t.o(i,n)&&Object.defineProperty(i,n,{enumerable:!0,get:e[n]})},o:(t,i)=>Object.prototype.hasOwnProperty.call(t,i),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},i={};function e(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function s(t){var i=function(t){if("object"!=n(t)||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var e=i.call(t,"string");if("object"!=n(e))return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==n(i)?i:i+""}function r(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,s(n.key),n)}}function a(t,i,e){return i&&r(t.prototype,i),e&&r(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function h(t,i){(null==i||i>t.length)&&(i=t.length);for(var e=0,n=Array(i);e<i;e++)n[e]=t[e];return n}function u(t){return function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,i){if(t){if("string"==typeof t)return h(t,i);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?h(t,i):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}t.r(i),t.d(i,{Box2:()=>g,Box3:()=>z,Euler:()=>F,Interval:()=>O,Line3:()=>Y,MathUtils:()=>m,Matrix3:()=>N,Matrix4:()=>E,Quaternion:()=>v,Ray:()=>L,Tolerance:()=>o,Vector2:()=>k,Vector3:()=>f,Vector4:()=>Q});var o=function(){function t(i,n,s){e(this,t),this.cosTol=i||t.COS_TOL,this.distTol=n||t.DIST_TOL,this.numTol=s||t.NUM_TOL}return a(t,[{key:"setCosTolByAngle",value:function(t,i){var e=i?1:Math.PI/180;this.cosTol=1-Math.cos(t*e)}},{key:"clone",value:function(){return new t(this.cosTol,this.distTol,this.numTol)}}],[{key:"setGlobal",value:function(i,e,n){t.global=new t(i,e,n)}}])}();o.COS_TOL=1e-6,o.DIST_TOL=1e-6,o.NUM_TOL=1e-6,o.global=new o;for(var l=[],y=0;y<256;y++)l[y]=(y<16?"0":"")+y.toString(16);var c=1234567,m={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){var t=4294967295*Math.random()|0,i=4294967295*Math.random()|0,e=4294967295*Math.random()|0,n=4294967295*Math.random()|0;return"".concat(l[255&t]+l[t>>8&255]+l[t>>16&255]+l[t>>24&255],"-").concat(l[255&i]).concat(l[i>>8&255],"-").concat(l[i>>16&15|64]).concat(l[i>>24&255],"-").concat(l[63&e|128]).concat(l[e>>8&255],"-").concat(l[e>>16&255]).concat(l[e>>24&255]).concat(l[255&n]).concat(l[n>>8&255]).concat(l[n>>16&255]).concat(l[n>>24&255]).toUpperCase()},clamp:function(t,i,e){return Math.max(i,Math.min(e,t))},euclideanModulo:function(t,i){return(t%i+i)%i},mapLinear:function(t,i,e,n,s){return n+(t-i)*(s-n)/(e-i)},lerp:function(t,i,e){return(1-e)*t+e*i},damp:function(t,i,e,n){return m.lerp(t,i,1-Math.exp(-e*n))},pingpong:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return i-Math.abs(m.euclideanModulo(t,2*i)-i)},smoothstep:function(t,i,e){return t<=i?0:t>=e?1:(t=(t-i)/(e-i))*t*(3-2*t)},smootherstep:function(t,i,e){return t<=i?0:t>=e?1:(t=(t-i)/(e-i))*t*t*(t*(6*t-15)+10)},randInt:function(t,i){return t+Math.floor(Math.random()*(i-t+1))},randFloat:function(t,i){return t+Math.random()*(i-t)},randFloatSpread:function(t){return t*(.5-Math.random())},seededRandom:function(t){return void 0!==t&&(c=t%2147483647),((c=16807*c%2147483647)-1)/2147483646},degToRad:function(t){return t*m.DEG2RAD},radToDeg:function(t){return t*m.RAD2DEG},isPowerOfTwo:function(t){return!(t&t-1)&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,i,e,n,s){var r=Math.cos,a=Math.sin,h=r(e/2),u=a(e/2),o=r((i+n)/2),l=a((i+n)/2),y=r((i-n)/2),c=a((i-n)/2),m=r((n-i)/2),v=a((n-i)/2);switch(s){case"XYX":t.set(h*l,u*y,u*c,h*o);break;case"YZY":t.set(u*c,h*l,u*y,h*o);break;case"ZXZ":t.set(u*y,u*c,h*l,h*o);break;case"XZX":t.set(h*l,u*v,u*m,h*o);break;case"YXY":t.set(u*m,h*l,u*v,h*o);break;case"ZYZ":t.set(u*v,u*m,h*l,h*o);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ".concat(s))}},isEqual:function(t,i,e){var n=e||o.global.numTol;return t===i||Math.abs(t-i)<=n},isZero:function(t,i){return m.isEqual(t,0,i)},isSmaller:function(t,i,e){return t-i<-(e||o.global.numTol)},isBigger:function(t,i,e){return t-i>(e||o.global.numTol)},isSmallerOrEqual:function(t,i,e){return t-i<=(e||o.global.numTol)},isBiggerOrEqual:function(t,i,e){return t-i>=-(e||o.global.numTol)},isInRange:function(t,i,e,n,s,r){var a=r||o.global.numTol,h=t-i,u=t-e;return(n?h>a:h>=-a)&&(s?u<-a:u<=a)},compare:function(t,i,e){if(Number.isNaN(t)||Number.isNaN(i))throw Error("Invalid NaN number");return m.isEqual(t,i,e)?0:t<i?-1:1},interpolation:function(t,i){for(var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,n=i.subtracted(t),s=n.length/e,r=[],a=n.normalized(),h=0;h<e-1;h++)r.push(t.added(a.clone().multiplyScalar(s*(h+1))));return r.unshift(t.clone()),r.push(i.clone()),r},generateMeshByQuad:function(t){for(var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,n=[],s=[],r=[],a=[],h=m.interpolation(t[0],t[1],i),o=m.interpolation(t[3],t[2],i),l=h.map((function(t,i){return m.interpolation(t.clone(),o[i].clone(),e)})),y=function(t){0===t?s.push.apply(s,u(h.flatMap((function(t){return t.toArray()})))):t===e?s.push.apply(s,u(o.flatMap((function(t){return t.toArray()})))):s.push.apply(s,u(l.flatMap((function(i){return i[t].toArray()}))));for(var n=0;n<=i;n++)r.push(0,0,1),a.push(n*(1/i),t*(1/e))},c=0;c<=e;c++)y(c);for(var v=0;v<e;v++)for(var x=0;x<i;x++){var f=v*(i+1)+(x+1),d=v*(i+1)+x,k=(v+1)*(i+1)+x,M=(v+1)*(i+1)+(x+1);n.push(f,d,M),n.push(d,k,M)}return{indices:n,vertices:s,normals:r,uvs:a}},clockwisePoints:function(t){for(var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=[t[0]],n=function(){for(var n=e[e.length-1],s=t.filter((function(t){return t!==n})),r=function(){var r=s[a],h=new k(r.x-n.x,r.y-n.y);if(t.filter((function(t){return t!==n&&t!==r})).map((function(t){return new k(t.x-n.x,t.y-n.y)})).every((function(t){return i?h.cross(t)<0:h.cross(t)>0})))return e.push(r),1},a=0;a<s.length&&!r();a++);},s=0;s<t.length-1;s++)n();return e}},v=function(){function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;e(this,t),this._onChangeCallback=function(){},this.isQuaternion=!0,this._x=i,this._y=n,this._z=s,this._w=r}return a(t,[{key:"x",get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},{key:"w",get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()}},{key:"set",value:function(t,i,e,n){return this._x=t,this._y=i,this._z=e,this._w=n,this._onChangeCallback(),this}},{key:"clone",value:function(){return new t(this._x,this._y,this._z,this._w)}},{key:"copy",value:function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}},{key:"setFromEuler",value:function(t){var i=t._x,e=t._y,n=t._z,s=t._order,r=Math.cos,a=Math.sin,h=r(i/2),u=r(e/2),o=r(n/2),l=a(i/2),y=a(e/2),c=a(n/2);switch(s){case"XYZ":this._x=l*u*o+h*y*c,this._y=h*y*o-l*u*c,this._z=h*u*c+l*y*o,this._w=h*u*o-l*y*c;break;case"YXZ":this._x=l*u*o+h*y*c,this._y=h*y*o-l*u*c,this._z=h*u*c-l*y*o,this._w=h*u*o+l*y*c;break;case"ZXY":this._x=l*u*o-h*y*c,this._y=h*y*o+l*u*c,this._z=h*u*c+l*y*o,this._w=h*u*o-l*y*c;break;case"ZYX":this._x=l*u*o-h*y*c,this._y=h*y*o+l*u*c,this._z=h*u*c-l*y*o,this._w=h*u*o+l*y*c;break;case"YZX":this._x=l*u*o+h*y*c,this._y=h*y*o+l*u*c,this._z=h*u*c-l*y*o,this._w=h*u*o-l*y*c;break;case"XZY":this._x=l*u*o-h*y*c,this._y=h*y*o-l*u*c,this._z=h*u*c+l*y*o,this._w=h*u*o+l*y*c;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: ".concat(s))}return this._onChangeCallback(),this}},{key:"setFromAxisAngle",value:function(t,i){var e=i/2,n=Math.sin(e);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(e),this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(t){var i=t.elements,e=i[0],n=i[4],s=i[8],r=i[1],a=i[5],h=i[9],u=i[2],o=i[6],l=i[10],y=e+a+l;if(y>0){var c=.5/Math.sqrt(y+1);this._w=.25/c,this._x=(o-h)*c,this._y=(s-u)*c,this._z=(r-n)*c}else if(e>a&&e>l){var m=2*Math.sqrt(1+e-a-l);this._w=(o-h)/m,this._x=.25*m,this._y=(n+r)/m,this._z=(s+u)/m}else if(a>l){var v=2*Math.sqrt(1+a-e-l);this._w=(s-u)/v,this._x=(n+r)/v,this._y=.25*v,this._z=(h+o)/v}else{var x=2*Math.sqrt(1+l-e-a);this._w=(r-n)/x,this._x=(s+u)/x,this._y=(h+o)/x,this._z=.25*x}return this._onChangeCallback(),this}},{key:"setFromUnitVectors",value:function(t,i){var e=t.dot(i)+1;return e<1e-6?(e=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=e):(this._x=0,this._y=-t.z,this._z=t.y,this._w=e)):(this._x=t.y*i.z-t.z*i.y,this._y=t.z*i.x-t.x*i.z,this._z=t.x*i.y-t.y*i.x,this._w=e),this.normalize()}},{key:"angleTo",value:function(t){return 2*Math.acos(Math.abs(m.clamp(this.dot(t),-1,1)))}},{key:"rotateTowards",value:function(t,i){var e=this.angleTo(t);if(0===e)return this;var n=Math.min(1,i/e);return this.slerp(t,n),this}},{key:"identity",value:function(){return this.set(0,0,0,1)}},{key:"invert",value:function(){return this.conjugate()}},{key:"conjugate",value:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}},{key:"dot",value:function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}},{key:"lengthSq",value:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}},{key:"length",value:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}},{key:"normalize",value:function(){var t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x*=t,this._y*=t,this._z*=t,this._w*=t),this._onChangeCallback(),this}},{key:"multiply",value:function(t){return this.multiplyQuaternions(this,t)}},{key:"premultiply",value:function(t){return this.multiplyQuaternions(t,this)}},{key:"multiplyQuaternions",value:function(t,i){var e=t._x,n=t._y,s=t._z,r=t._w,a=i._x,h=i._y,u=i._z,o=i._w;return this._x=e*o+r*a+n*u-s*h,this._y=n*o+r*h+s*a-e*u,this._z=s*o+r*u+e*h-n*a,this._w=r*o-e*a-n*h-s*u,this._onChangeCallback(),this}},{key:"slerp",value:function(t,i){if(0===i)return this;if(1===i)return this.copy(t);var e=this._x,n=this._y,s=this._z,r=this._w,a=r*t._w+e*t._x+n*t._y+s*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=r,this._x=e,this._y=n,this._z=s,this;var h=1-a*a;if(h<=Number.EPSILON){var u=1-i;return this._w=u*r+i*this._w,this._x=u*e+i*this._x,this._y=u*n+i*this._y,this._z=u*s+i*this._z,this.normalize(),this._onChangeCallback(),this}var o=Math.sqrt(h),l=Math.atan2(o,a),y=Math.sin((1-i)*l)/o,c=Math.sin(i*l)/o;return this._w=r*y+this._w*c,this._x=e*y+this._x*c,this._y=n*y+this._y*c,this._z=s*y+this._z*c,this._onChangeCallback(),this}},{key:"equals",value:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}},{key:"fromArray",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._x=t[i],this._y=t[i+1],this._z=t[i+2],this._w=t[i+3],this._onChangeCallback(),this}},{key:"toArray",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[i]=this._x,t[i+1]=this._y,t[i+2]=this._z,t[i+3]=this._w,t}},{key:"_onChange",value:function(t){return this._onChangeCallback=t,this}}],[{key:"slerp",value:function(t,i,e,n){return e.copy(t).slerp(i,n)}},{key:"slerpFlat",value:function(t,i,e,n,s,r,a){var h=e[n+0],u=e[n+1],o=e[n+2],l=e[n+3],y=s[r+0],c=s[r+1],m=s[r+2],v=s[r+3];if(0===a)return t[i+0]=h,t[i+1]=u,t[i+2]=o,void(t[i+3]=l);if(1===a)return t[i+0]=y,t[i+1]=c,t[i+2]=m,void(t[i+3]=v);if(l!==v||h!==y||u!==c||o!==m){var x=1-a,f=h*y+u*c+o*m+l*v,d=f>=0?1:-1,k=1-f*f;if(k>Number.EPSILON){var M=Math.sqrt(k),g=Math.atan2(M,f*d);x=Math.sin(x*g)/M,a=Math.sin(a*g)/M}var _=a*d;if(h=h*x+y*_,u=u*x+c*_,o=o*x+m*_,l=l*x+v*_,x===1-a){var p=1/Math.sqrt(h*h+u*u+o*o+l*l);h*=p,u*=p,o*=p,l*=p}}t[i]=h,t[i+1]=u,t[i+2]=o,t[i+3]=l}},{key:"multiplyQuaternionsFlat",value:function(t,i,e,n,s,r){var a=e[n],h=e[n+1],u=e[n+2],o=e[n+3],l=s[r],y=s[r+1],c=s[r+2],m=s[r+3];return t[i]=a*m+o*l+h*c-u*y,t[i+1]=h*m+o*y+u*l-a*c,t[i+2]=u*m+o*c+a*y-h*l,t[i+3]=o*m-a*l-h*y-u*c,t}}])}(),x=new v,f=function(){function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;e(this,t),this.isVector3=!0,this.x=i,this.y=n,this.z=s}return a(t,[{key:"set",value:function(t,i,e){return void 0===e&&(e=this.z),this.x=t,this.y=i,this.z=e,this}},{key:"setScalar",value:function(t){return this.x=t,this.y=t,this.z=t,this}},{key:"setX",value:function(t){return this.x=t,this}},{key:"setY",value:function(t){return this.y=t,this}},{key:"setZ",value:function(t){return this.z=t,this}},{key:"setComponent",value:function(t,i){switch(t){case 0:this.x=i;break;case 1:this.y=i;break;case 2:this.z=i;break;default:throw new Error("index is out of range: ".concat(t))}return this}},{key:"getComponent",value:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: ".concat(t))}}},{key:"clone",value:function(){return new t(this.x,this.y,this.z)}},{key:"copy",value:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}},{key:"add",value:function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}},{key:"added",value:function(i){return new t(this.x+i.x,this.y+i.y,this.z+i.z)}},{key:"addScalar",value:function(t){return this.x+=t,this.y+=t,this.z+=t,this}},{key:"addVectors",value:function(t,i){return this.x=t.x+i.x,this.y=t.y+i.y,this.z=t.z+i.z,this}},{key:"addScaledVector",value:function(t,i){return this.x+=t.x*i,this.y+=t.y*i,this.z+=t.z*i,this}},{key:"sub",value:function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}},{key:"subtracted",value:function(i){return new t(this.x-i.x,this.y-i.y,this.z-i.z)}},{key:"subScalar",value:function(t){return this.x-=t,this.y-=t,this.z-=t,this}},{key:"subVectors",value:function(t,i){return this.x=t.x-i.x,this.y=t.y-i.y,this.z=t.z-i.z,this}},{key:"multiply",value:function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}},{key:"multiplied",value:function(i){return new t(this.x*i.x,this.y*i.y,this.z*i.z)}},{key:"multiplyScalar",value:function(t){return this.x*=t,this.y*=t,this.z*=t,this}},{key:"multiplyVectors",value:function(t,i){return this.x=t.x*i.x,this.y=t.y*i.y,this.z=t.z*i.z,this}},{key:"applyEuler",value:function(t){return this.applyQuaternion(x.setFromEuler(t))}},{key:"appliedEuler",value:function(t){return this.appliedQuaternion(x.setFromEuler(t))}},{key:"applyAxisAngle",value:function(t,i){return this.applyQuaternion(x.setFromAxisAngle(t,i))}},{key:"applyMatrix3",value:function(t){var i=this.x,e=this.y,n=this.z,s=t.elements;return this.x=s[0]*i+s[3]*e+s[6]*n,this.y=s[1]*i+s[4]*e+s[7]*n,this.z=s[2]*i+s[5]*e+s[8]*n,this}},{key:"applyNormalMatrix",value:function(t){return this.applyMatrix3(t).normalize()}},{key:"applyMatrix4",value:function(t){var i=this.x,e=this.y,n=this.z,s=t.elements,r=1/(s[3]*i+s[7]*e+s[11]*n+s[15]);return this.x=(s[0]*i+s[4]*e+s[8]*n+s[12])*r,this.y=(s[1]*i+s[5]*e+s[9]*n+s[13])*r,this.z=(s[2]*i+s[6]*e+s[10]*n+s[14])*r,this}},{key:"appliedMatrix4",value:function(i){var e=this.x,n=this.y,s=this.z,r=i.elements,a=1/(r[3]*e+r[7]*n+r[11]*s+r[15]),h=(r[0]*e+r[4]*n+r[8]*s+r[12])*a,u=(r[1]*e+r[5]*n+r[9]*s+r[13])*a,o=(r[2]*e+r[6]*n+r[10]*s+r[14])*a;return new t(h-r[12]*a,u-r[13]*a,o-r[14]*a)}},{key:"applyQuaternion",value:function(t){var i=this.x,e=this.y,n=this.z,s=t.x,r=t.y,a=t.z,h=t.w,u=h*i+r*n-a*e,o=h*e+a*i-s*n,l=h*n+s*e-r*i,y=-s*i-r*e-a*n;return this.x=u*h+y*-s+o*-a-l*-r,this.y=o*h+y*-r+l*-s-u*-a,this.z=l*h+y*-a+u*-r-o*-s,this}},{key:"appliedQuaternion",value:function(i){var e=this.x,n=this.y,s=this.z,r=i.x,a=i.y,h=i.z,u=i.w,o=u*e+a*s-h*n,l=u*n+h*e-r*s,y=u*s+r*n-a*e,c=-r*e-a*n-h*s;return new t(o*u+c*-r+l*-h-y*-a,l*u+c*-a+y*-r-o*-h,y*u+c*-h+o*-a-l*-r)}},{key:"transformDirection",value:function(t){var i=this.x,e=this.y,n=this.z,s=t.elements;return this.x=s[0]*i+s[4]*e+s[8]*n,this.y=s[1]*i+s[5]*e+s[9]*n,this.z=s[2]*i+s[6]*e+s[10]*n,this.normalize()}},{key:"divide",value:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}},{key:"divideScalar",value:function(t){return this.multiplyScalar(1/t)}},{key:"min",value:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}},{key:"max",value:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}},{key:"clamp",value:function(t,i){return this.x=Math.max(t.x,Math.min(i.x,this.x)),this.y=Math.max(t.y,Math.min(i.y,this.y)),this.z=Math.max(t.z,Math.min(i.z,this.z)),this}},{key:"clampScalar",value:function(t,i){return this.x=Math.max(t,Math.min(i,this.x)),this.y=Math.max(t,Math.min(i,this.y)),this.z=Math.max(t,Math.min(i,this.z)),this}},{key:"clampLength",value:function(t,i){var e=this.length;return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(i,e)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}},{key:"dot",value:function(t){return this.x*t.x+this.y*t.y+this.z*t.z}},{key:"lengthSq",get:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",get:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"manhattanLength",get:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}},{key:"normalize",value:function(){return this.divideScalar(this.length||1)}},{key:"normalized",value:function(){var i=this.lengthSq;if(0===i||m.isEqual(i,1,1e-16))return new t(this.x,this.y,this.z);i=Math.sqrt(i);var e=this.x/i,n=this.y/i,s=this.z/i;return Number.isFinite(e)&&Number.isFinite(n)&&Number.isFinite(s)?new t(e,n,s):new t(this.x,this.y,this.z)}},{key:"reverse",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}},{key:"reversed",value:function(){return new t(-this.x,-this.y,-this.z)}},{key:"setLength",value:function(t){return this.normalize().multiplyScalar(t)}},{key:"lerp",value:function(t,i){return this.x+=(t.x-this.x)*i,this.y+=(t.y-this.y)*i,this.z+=(t.z-this.z)*i,this}},{key:"lerpVectors",value:function(t,i,e){return this.x=t.x+(i.x-t.x)*e,this.y=t.y+(i.y-t.y)*e,this.z=t.z+(i.z-t.z)*e,this}},{key:"toVector2",value:function(){return new k(this.x,this.y)}},{key:"cross",value:function(t){return this.crossVectors(this,t)}},{key:"crossed",value:function(i){return new t(this.y*i.z-this.z*i.y,this.z*i.x-this.x*i.z,this.x*i.y-this.y*i.x)}},{key:"crossVectors",value:function(t,i){var e=t.x,n=t.y,s=t.z,r=i.x,a=i.y,h=i.z;return this.x=n*h-s*a,this.y=s*r-e*h,this.z=e*a-n*r,this}},{key:"projectOnVector",value:function(t){var i=t.lengthSq;if(0===i)return this.set(0,0,0);var e=t.dot(this)/i;return this.copy(t).multiplyScalar(e)}},{key:"projectOnPlane",value:function(t){return d.copy(this).projectOnVector(t),this.sub(d)}},{key:"reflect",value:function(t){return this.sub(d.copy(t).multiplyScalar(2*this.dot(t)))}},{key:"angle",value:function(t){return Math.atan2(this.crossed(t).length,this.dot(t))}},{key:"angleTo",value:function(t,i){var e=this.crossed(t),n=this.angle(t),s=2*Math.PI;return e.dot(i)<0&&n<Math.PI&&n>0?s-n:n}},{key:"distanceTo",value:function(t){return Math.sqrt(this.distanceToSquared(t))}},{key:"distanceToSquared",value:function(t){var i=this.x-t.x,e=this.y-t.y,n=this.z-t.z;return i*i+e*e+n*n}},{key:"manhattanDistanceTo",value:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}},{key:"setFromMatrixPosition",value:function(t){var i=t.elements;return this.x=i[12],this.y=i[13],this.z=i[14],this}},{key:"setFromMatrixScale",value:function(t){var i=this.setFromMatrixColumn(t,0).length,e=this.setFromMatrixColumn(t,1).length,n=this.setFromMatrixColumn(t,2).length;return this.x=i,this.y=e,this.z=n,this}},{key:"setFromMatrixColumn",value:function(t,i){return this.fromArray(t.elements,4*i)}},{key:"setFromMatrix3Column",value:function(t,i){return this.fromArray(t.elements,3*i)}},{key:"equals",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.global.cosTol,n=this.lengthSq,s=t.lengthSq;return!(!m.isZero(n,i*i)||!m.isZero(s,i*i))||m.isEqual(Math.sqrt(n),Math.sqrt(s),i)&&this.isSameDirection(t,new o(e,i,o.global.numTol),!1)}},{key:"isPerpendicular",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return this.cross(t).lengthSq>=Math.pow(h-n*h,2)}},{key:"isParallel",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h-Math.abs(this.dot(t)))<=n*h}},{key:"isSameDirection",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h-this.dot(t))<=n*h}},{key:"isOpposite",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h+this.dot(t))<=n*h}},{key:"isZero",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.global.distTol;return this.lengthSq<t*t}},{key:"fromArray",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[i],this.y=t[i+1],this.z=t[i+2],this}},{key:"toArray",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[i]=this.x,t[i+1]=this.y,t[i+2]=this.z,t}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}}],[{key:"fromObject",value:function(i){return new t(i.x,i.y,i.z)}}])}(),d=new f,k=function(){function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e(this,t),this.isVector2=!0,this.x=i,this.y=n}return a(t,[{key:"width",get:function(){return this.x},set:function(t){this.x=t}},{key:"height",get:function(){return this.y},set:function(t){this.y=t}},{key:"set",value:function(t,i){return this.x=t,this.y=i,this}},{key:"setScalar",value:function(t){return this.x=t,this.y=t,this}},{key:"setX",value:function(t){return this.x=t,this}},{key:"setY",value:function(t){return this.y=t,this}},{key:"setComponent",value:function(t,i){switch(t){case 0:this.x=i;break;case 1:this.y=i;break;default:throw new Error("index is out of range: ".concat(t))}return this}},{key:"getComponent",value:function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: ".concat(t))}}},{key:"clone",value:function(){return new t(this.x,this.y)}},{key:"copy",value:function(t){return this.x=t.x,this.y=t.y,this}},{key:"add",value:function(t){return this.x+=t.x,this.y+=t.y,this}},{key:"added",value:function(i){return new t(this.x+i.x,this.y+i.y)}},{key:"addScalar",value:function(t){return this.x+=t,this.y+=t,this}},{key:"addVectors",value:function(t,i){return this.x=t.x+i.x,this.y=t.y+i.y,this}},{key:"addScaledVector",value:function(t,i){return this.x+=t.x*i,this.y+=t.y*i,this}},{key:"sub",value:function(t){return this.x-=t.x,this.y-=t.y,this}},{key:"subtracted",value:function(i){return new t(this.x-i.x,this.y-i.y)}},{key:"subScalar",value:function(t){return this.x-=t,this.y-=t,this}},{key:"subVectors",value:function(t,i){return this.x=t.x-i.x,this.y=t.y-i.y,this}},{key:"reverse",value:function(){return this.x=-this.x,this.y=-this.y,this}},{key:"reversed",value:function(){return new t(-this.x,-this.y)}},{key:"multiply",value:function(t){return this.x*=t.x,this.y*=t.y,this}},{key:"multiplied",value:function(i){return new t(this.x*i,this.y*i)}},{key:"multiplyScalar",value:function(t){return this.x*=t,this.y*=t,this}},{key:"divide",value:function(t){return this.x/=t.x,this.y/=t.y,this}},{key:"divideScalar",value:function(t){return this.multiplyScalar(1/t)}},{key:"applyMatrix3",value:function(t){var i=this.x,e=this.y,n=t.elements;return this.x=n[0]*i+n[3]*e+n[6],this.y=n[1]*i+n[4]*e+n[7],this}},{key:"min",value:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}},{key:"max",value:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}},{key:"clamp",value:function(t,i){return this.x=Math.max(t.x,Math.min(i.x,this.x)),this.y=Math.max(t.y,Math.min(i.y,this.y)),this}},{key:"clampScalar",value:function(t,i){return this.x=Math.max(t,Math.min(i,this.x)),this.y=Math.max(t,Math.min(i,this.y)),this}},{key:"clampLength",value:function(t,i){var e=this.length;return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(i,e)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this}},{key:"dot",value:function(t){return this.x*t.x+this.y*t.y}},{key:"cross",value:function(t){return this.x*t.y-this.y*t.x}},{key:"lengthSq",get:function(){return this.x*this.x+this.y*this.y}},{key:"length",get:function(){return Math.sqrt(this.x*this.x+this.y*this.y)}},{key:"manhattanLength",get:function(){return Math.abs(this.x)+Math.abs(this.y)}},{key:"normalize",value:function(){return this.divideScalar(this.length||1)}},{key:"angle",value:function(t){return t?Math.atan2(Math.abs(this.cross(t)),this.dot(t)):Math.atan2(-this.y,-this.x)+Math.PI}},{key:"angleTo",value:function(t){var i=this.cross(t),e=this.angle(t),n=2*Math.PI;return i<0&&e<Math.PI&&e>0?n-e:e}},{key:"normalized",value:function(){var i=this.lengthSq;if(0===i||m.isEqual(i,1,1e-16))return new t(this.x,this.y);i=Math.sqrt(i);var e=this.x/i,n=this.y/i;return Number.isFinite(e)&&Number.isFinite(n)?new t(e,n):new t(this.x,this.y)}},{key:"distanceTo",value:function(t){return Math.sqrt(this.distanceToSquared(t))}},{key:"distanceToSquared",value:function(t){var i=this.x-t.x,e=this.y-t.y;return i*i+e*e}},{key:"manhattanDistanceTo",value:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}},{key:"setLength",value:function(t){return this.normalize().multiplyScalar(t)}},{key:"lerp",value:function(t,i){return this.x+=(t.x-this.x)*i,this.y+=(t.y-this.y)*i,this}},{key:"lerpVectors",value:function(t,i,e){return this.x=t.x+(i.x-t.x)*e,this.y=t.y+(i.y-t.y)*e,this}},{key:"equals",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.global.cosTol,n=this.lengthSq,s=t.lengthSq;return!(!m.isZero(n,i*i)||!m.isZero(s,i*i))||m.isEqual(Math.sqrt(n),Math.sqrt(s),i)&&this.isSameDirection(t,new o(e,i,o.global.numTol),!1)}},{key:"isZero",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.global.distTol;return this.lengthSq<t*t}},{key:"isParallel",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h-Math.abs(this.dot(t)))<=n*h}},{key:"isPerpendicular",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h-Math.abs(this.cross(t)))<=n*h}},{key:"isSameDirection",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h-this.dot(t))<=n*h}},{key:"isOpposite",value:function(t,i){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=i?i.cosTol:o.global.cosTol,s=i?i.distTol:o.global.distTol,r=this.length,a=t.length;if(0===r||0===a||e&&(m.isZero(r,s)||m.isZero(a,s)))return!1;var h=r*a;return Math.abs(h+this.dot(t))<=n*h}},{key:"fromArray",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.x=t[i],this.y=t[i+1],this}},{key:"toArray",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t[i]=this.x,t[i+1]=this.y,t}},{key:"toVector3",value:function(){return new f(this.x,this.y,0)}},{key:"rotateAround",value:function(t,i){var e=Math.cos(i),n=Math.sin(i),s=this.x-t.x,r=this.y-t.y;return this.x=s*e-r*n+t.x,this.y=s*n+r*e+t.y,this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this}}],[{key:"fromObject",value:function(i){return new t(i.x,i.y)}}])}(),M=new k,g=function(){function t(i,n){e(this,t),this.isBox2=!0,this.min=void 0!==i?i:new k(1/0,1/0),this.max=void 0!==n?n:new k(-1/0,-1/0)}return a(t,[{key:"set",value:function(t,i){return this.min.copy(t),this.max.copy(i),this}},{key:"setFromPoints",value:function(t){this.makeEmpty();for(var i=0,e=t.length;i<e;i++)this.expandByPoint(t[i]);return this}},{key:"setFromCenterAndSize",value:function(t,i){var e=M.copy(i).multiplyScalar(.5);return this.min.copy(t).sub(e),this.max.copy(t).add(e),this}},{key:"clone",value:function(){return(new t).copy(this)}},{key:"copy",value:function(t){return this.min.copy(t.min),this.max.copy(t.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x<this.min.x||this.max.y<this.min.y}},{key:"equals",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return this.min.equals(t.min,i)&&this.max.equals(t.max,i)}},{key:"getCenter",value:function(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}},{key:"getSize",value:function(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}},{key:"expandByPoint",value:function(t){return this.min.min(t),this.max.max(t),this}},{key:"expandByVector",value:function(t){return this.min.sub(t),this.max.add(t),this}},{key:"expandByScalar",value:function(t){return this.min.addScalar(-t),this.max.addScalar(t),this}},{key:"containsPoint",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return!(m.isSmaller(t.x,this.min.x,i)||m.isBigger(t.x,this.max.x,i)||m.isSmaller(t.y,this.min.y,i)||m.isBigger(t.y,this.max.y,i))}},{key:"containsBox",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return m.isSmallerOrEqual(this.min.x,t.min.x,i)&&m.isSmallerOrEqual(t.max.x,this.max.x,i)&&m.isSmallerOrEqual(this.min.y,t.min.y,i)&&m.isSmallerOrEqual(t.max.y,this.max.y,i)}},{key:"isValid",value:function(){return this.min.x<=this.max.x&&this.min.y<=this.max.y}},{key:"isOverlapping",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return!(!t.isValid()||m.isSmaller(this.max.x,t.min.x,i)||m.isBigger(this.min.x,t.max.x,i)||m.isSmaller(this.max.y,t.min.y,i)||m.isBigger(this.min.y,t.max.y,i))}},{key:"getParameter",value:function(t,i){return i.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}},{key:"intersectsBox",value:function(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y)}},{key:"clampPoint",value:function(t,i){return i.copy(t).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(t){return M.copy(t).clamp(this.min,this.max).sub(t).length}},{key:"intersect",value:function(t){return this.min.max(t.min),this.max.min(t.max),this}},{key:"union",value:function(t){return this.min.min(t.min),this.max.max(t.max),this}},{key:"translate",value:function(t){return this.min.add(t),this.max.add(t),this}}])}(),_=[new f,new f,new f,new f,new f,new f,new f,new f],p=new f,z=function(){function t(i,n){e(this,t),this.isBox3=!0,this.min=void 0!==i?i:new f(1/0,1/0,1/0),this.max=void 0!==n?n:new f(-1/0,-1/0,-1/0)}return a(t,[{key:"set",value:function(t,i){return this.min.copy(t),this.max.copy(i),this}},{key:"setFromArray",value:function(t){for(var i=1/0,e=1/0,n=1/0,s=-1/0,r=-1/0,a=-1/0,h=0,u=t.length;h<u;h+=3){var o=t[h],l=t[h+1],y=t[h+2];o<i&&(i=o),l<e&&(e=l),y<n&&(n=y),o>s&&(s=o),l>r&&(r=l),y>a&&(a=y)}return this.min.set(i,e,n),this.max.set(s,r,a),this}},{key:"setFromPoints",value:function(t){this.makeEmpty();for(var i=0,e=t.length;i<e;i++)this.expandByPoint(t[i]);return this}},{key:"setFromCenterAndSize",value:function(t,i){var e=p.copy(i).multiplyScalar(.5);return this.min.copy(t).sub(e),this.max.copy(t).add(e),this}},{key:"clone",value:function(){return(new t).copy(this)}},{key:"copy",value:function(t){return this.min.copy(t.min),this.max.copy(t.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}},{key:"getCenter",value:function(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}},{key:"getSize",value:function(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}},{key:"expandByPoint",value:function(t){return this.min.min(t),this.max.max(t),this}},{key:"expandByVector",value:function(t){return this.min.sub(t),this.max.add(t),this}},{key:"expandByScalar",value:function(t){return this.min.addScalar(-t),this.max.addScalar(t),this}},{key:"containsPoint",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return!(m.isSmaller(t.x,this.min.x,i)||m.isBigger(t.x,this.max.x,i)||m.isSmaller(t.y,this.min.y,i)||m.isBigger(t.y,this.max.y,i)||m.isSmaller(t.z,this.min.z,i)||m.isBigger(t.z,this.max.z,i))}},{key:"containsBox",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return m.isSmallerOrEqual(this.min.x,t.min.x,i)&&m.isSmallerOrEqual(t.max.x,this.max.x,i)&&m.isSmallerOrEqual(this.min.y,t.min.y,i)&&m.isSmallerOrEqual(t.max.y,this.max.y,i)&&m.isSmallerOrEqual(this.min.z,t.min.z,i)&&m.isSmallerOrEqual(t.max.z,this.max.z,i)}},{key:"isOverlapping",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return!(!t.isValid()||m.isSmaller(this.max.x,t.min.x,i)||m.isBigger(this.min.x,t.max.x,i)||m.isSmaller(this.max.y,t.min.y,i)||m.isBigger(this.min.y,t.max.y,i)||m.isSmaller(this.max.z,t.min.z,i)||m.isBigger(this.min.z,t.max.z,i))}},{key:"getParameter",value:function(t,i){return i.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}},{key:"intersectsBox",value:function(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}},{key:"clampPoint",value:function(t,i){return i.copy(t).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(t){return p.copy(t).clamp(this.min,this.max).sub(t).length}},{key:"intersect",value:function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}},{key:"union",value:function(t){return this.min.min(t.min),this.max.max(t.max),this}},{key:"applyMatrix4",value:function(t){return this.isEmpty()||(_[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),_[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),_[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),_[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),_[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),_[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),_[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),_[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(_)),this}},{key:"translate",value:function(t){return this.min.add(t),this.max.add(t),this}},{key:"equals",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.global.distTol;return t.min.equals(this.min,i)&&t.max.equals(this.max,i)}},{key:"isValid",value:function(){return this.min.x<=this.max.x&&this.min.y<=this.max.y&&this.min.z<=this.max.z}}])}(),w=new f,b=new f(0,0,0),S=new f(1,1,1),T=new f,q=new f,C=new f,E=function(){function t(){e(this,t),this.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}return a(t,[{key:"set",value:function(t,i,e,n,s,r,a,h,u,o,l,y,c,m,v,x){var f=this.elements;return f[0]=t,f[4]=i,f[8]=e,f[12]=n,f[1]=s,f[5]=r,f[9]=a,f[13]=h,f[2]=u,f[6]=o,f[10]=l,f[14]=y,f[3]=c,f[7]=m,f[11]=v,f[15]=x,this}},{key:"identity",value:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}},{key:"clone",value:function(){return(new t).fromArray(this.elements)}},{key:"copy",value:function(t){var i=this.elements,e=t.elements;return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],this}},{key:"copyPosition",value:function(t){var i=this.elements,e=t.elements;return i[12]=e[12],i[13]=e[13],i[14]=e[14],this}},{key:"setFromMatrix3",value:function(t){var i=t.elements;return this.set(i[0],i[3],i[6],0,i[1],i[4],i[7],0,i[2],i[5],i[8],0,0,0,0,1),this}},{key:"extractBasis",value:function(t,i,e){return t.setFromMatrixColumn(this,0),i.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this}},{key:"makeBasis",value:function(t,i,e){return this.set(t.x,i.x,e.x,0,t.y,i.y,e.y,0,t.z,i.z,e.z,0,0,0,0,1),this}},{key:"extractRotation",value:function(t){var i=this.elements,e=t.elements,n=1/w.setFromMatrixColumn(t,0).length,s=1/w.setFromMatrixColumn(t,1).length,r=1/w.setFromMatrixColumn(t,2).length;return i[0]=e[0]*n,i[1]=e[1]*n,i[2]=e[2]*n,i[3]=0,i[4]=e[4]*s,i[5]=e[5]*s,i[6]=e[6]*s,i[7]=0,i[8]=e[8]*r,i[9]=e[9]*r,i[10]=e[10]*r,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}},{key:"makeRotationFromEuler",value:function(t){var i=this.elements,e=t.x,n=t.y,s=t.z,r=Math.cos(e),a=Math.sin(e),h=Math.cos(n),u=Math.sin(n),o=Math.cos(s),l=Math.sin(s);if("XYZ"===t.order){var y=r*o,c=r*l,m=a*o,v=a*l;i[0]=h*o,i[4]=-h*l,i[8]=u,i[1]=c+m*u,i[5]=y-v*u,i[9]=-a*h,i[2]=v-y*u,i[6]=m+c*u,i[10]=r*h}else if("YXZ"===t.order){var x=h*o,f=h*l,d=u*o,k=u*l;i[0]=x+k*a,i[4]=d*a-f,i[8]=r*u,i[1]=r*l,i[5]=r*o,i[9]=-a,i[2]=f*a-d,i[6]=k+x*a,i[10]=r*h}else if("ZXY"===t.order){var M=h*o,g=h*l,_=u*o,p=u*l;i[0]=M-p*a,i[4]=-r*l,i[8]=_+g*a,i[1]=g+_*a,i[5]=r*o,i[9]=p-M*a,i[2]=-r*u,i[6]=a,i[10]=r*h}else if("ZYX"===t.order){var z=r*o,w=r*l,b=a*o,S=a*l;i[0]=h*o,i[4]=b*u-w,i[8]=z*u+S,i[1]=h*l,i[5]=S*u+z,i[9]=w*u-b,i[2]=-u,i[6]=a*h,i[10]=r*h}else if("YZX"===t.order){var T=r*h,q=r*u,C=a*h,E=a*u;i[0]=h*o,i[4]=E-T*l,i[8]=C*l+q,i[1]=l,i[5]=r*o,i[9]=-a*o,i[2]=-u*o,i[6]=q*l+C,i[10]=T-E*l}else if("XZY"===t.order){var P=r*h,Z=r*u,A=a*h,F=a*u;i[0]=h*o,i[4]=-l,i[8]=u*o,i[1]=P*l+F,i[5]=r*o,i[9]=Z*l-A,i[2]=A*l-Z,i[6]=a*o,i[10]=F*l+P}return i[3]=0,i[7]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}},{key:"makeRotationFromQuaternion",value:function(t){return this.compose(b,t,S)}},{key:"lookAt",value:function(t,i,e){var n=this.elements;return C.subVectors(t,i),0===C.lengthSq&&(C.z=1),C.normalize(),T.crossVectors(e,C),0===T.lengthSq&&(1===Math.abs(e.z)?C.x+=1e-4:C.z+=1e-4,C.normalize(),T.crossVectors(e,C)),T.normalize(),q.crossVectors(C,T),n[0]=T.x,n[4]=q.x,n[8]=C.x,n[1]=T.y,n[5]=q.y,n[9]=C.y,n[2]=T.z,n[6]=q.z,n[10]=C.z,this}},{key:"multiply",value:function(t){return this.multiplyMatrices(this,t)}},{key:"multiplied",value:function(i){return(new t).multiplyMatrices(this,i)}},{key:"premultiply",value:function(t){return this.multiplyMatrices(t,this)}},{key:"premultiplied",value:function(i){return(new t).multiplyMatrices(i,this)}},{key:"multiplyMatrices",value:function(t,i){var e=t.elements,n=i.elements,s=this.elements,r=e[0],a=e[4],h=e[8],u=e[12],o=e[1],l=e[5],y=e[9],c=e[13],m=e[2],v=e[6],x=e[10],f=e[14],d=e[3],k=e[7],M=e[11],g=e[15],_=n[0],p=n[4],z=n[8],w=n[12],b=n[1],S=n[5],T=n[9],q=n[13],C=n[2],E=n[6],P=n[10],Z=n[14],A=n[3],F=n[7],V=n[11],O=n[15];return s[0]=r*_+a*b+h*C+u*A,s[4]=r*p+a*S+h*E+u*F,s[8]=r*z+a*T+h*P+u*V,s[12]=r*w+a*q+h*Z+u*O,s[1]=o*_+l*b+y*C+c*A,s[5]=o*p+l*S+y*E+c*F,s[9]=o*z+l*T+y*P+c*V,s[13]=o*w+l*q+y*Z+c*O,s[2]=m*_+v*b+x*C+f*A,s[6]=m*p+v*S+x*E+f*F,s[10]=m*z+v*T+x*P+f*V,s[14]=m*w+v*q+x*Z+f*O,s[3]=d*_+k*b+M*C+g*A,s[7]=d*p+k*S+M*E+g*F,s[11]=d*z+k*T+M*P+g*V,s[15]=d*w+k*q+M*Z+g*O,this}},{key:"multiplyScalar",value:function(t){var i=this.elements;return i[0]*=t,i[4]*=t,i[8]*=t,i[12]*=t,i[1]*=t,i[5]*=t,i[9]*=t,i[13]*=t,i[2]*=t,i[6]*=t,i[10]*=t,i[14]*=t,i[3]*=t,i[7]*=t,i[11]*=t,i[15]*=t,this}},{key:"determinant",value:function(){var t=this.elements,i=t[0],e=t[4],n=t[8],s=t[12],r=t[1],a=t[5],h=t[9],u=t[13],o=t[2],l=t[6],y=t[10],c=t[14];return t[3]*(+s*h*l-n*u*l-s*a*y+e*u*y+n*a*c-e*h*c)+t[7]*(+i*h*c-i*u*y+s*r*y-n*r*c+n*u*o-s*h*o)+t[11]*(+i*u*l-i*a*c-s*r*l+e*r*c+s*a*o-e*u*o)+t[15]*(-n*a*o-i*h*l+i*a*y+n*r*l-e*r*y+e*h*o)}},{key:"transpose",value:function(){var t,i=this.elements;return t=i[1],i[1]=i[4],i[4]=t,t=i[2],i[2]=i[8],i[8]=t,t=i[6],i[6]=i[9],i[9]=t,t=i[3],i[3]=i[12],i[12]=t,t=i[7],i[7]=i[13],i[13]=t,t=i[11],i[11]=i[14],i[14]=t,this}},{key:"setPosition",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=this.elements;return n[12]=t,n[13]=i,n[14]=e,this}},{key:"invert",value:function(){var t=this.elements,i=t[0],e=t[1],n=t[2],s=t[3],r=t[4],a=t[5],h=t[6],u=t[7],o=t[8],l=t[9],y=t[10],c=t[11],m=t[12],v=t[13],x=t[14],f=t[15],d=l*x*u-v*y*u+v*h*c-a*x*c-l*h*f+a*y*f,k=m*y*u-o*x*u-m*h*c+r*x*c+o*h*f-r*y*f,M=o*v*u-m*l*u+m*a*c-r*v*c-o*a*f+r*l*f,g=m*l*h-o*v*h-m*a*y+r*v*y+o*a*x-r*l*x,_=i*d+e*k+n*M+s*g;if(0===_)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var p=1/_;return t[0]=d*p,t[1]=(v*y*s-l*x*s-v*n*c+e*x*c+l*n*f-e*y*f)*p,t[2]=(a*x*s-v*h*s+v*n*u-e*x*u-a*n*f+e*h*f)*p,t[3]=(l*h*s-a*y*s-l*n*u+e*y*u+a*n*c-e*h*c)*p,t[4]=k*p,t[5]=(o*x*s-m*y*s+m*n*c-i*x*c-o*n*f+i*y*f)*p,t[6]=(m*h*s-r*x*s-m*n*u+i*x*u+r*n*f-i*h*f)*p,t[7]=(r*y*s-o*h*s+o*n*u-i*y*u-r*n*c+i*h*c)*p,t[8]=M*p,t[9]=(m*l*s-o*v*s-m*e*c+i*v*c+o*e*f-i*l*f)*p,t[10]=(r*v*s-m*a*s+m*e*u-i*v*u-r*e*f+i*a*f)*p,t[11]=(o*a*s-r*l*s-o*e*u+i*l*u+r*e*c-i*a*c)*p,t[12]=g*p,t[13]=(o*v*n-m*l*n+m*e*y-i*v*y-o*e*x+i*l*x)*p,t[14]=(m*a*n-r*v*n-m*e*h+i*v*h+r*e*x-i*a*x)*p,t[15]=(r*l*n-o*a*n+o*e*h-i*l*h-r*e*y+i*a*y)*p,this}},{key:"inverted",value:function(){var i=this.elements,e=i[0],n=i[1],s=i[2],r=i[3],a=i[4],h=i[5],u=i[6],o=i[7],l=i[8],y=i[9],c=i[10],m=i[11],v=i[12],x=i[13],f=i[14],d=i[15],k=y*f*o-x*c*o+x*u*m-h*f*m-y*u*d+h*c*d,M=v*c*o-l*f*o-v*u*m+a*f*m+l*u*d-a*c*d,g=l*x*o-v*y*o+v*h*m-a*x*m-l*h*d+a*y*d,_=v*y*u-l*x*u-v*h*c+a*x*c+l*h*f-a*y*f,p=e*k+n*M+s*g+r*_;if(0===p)return new t;var z=1/p,w=new Array(16);w[0]=k*z,w[1]=(x*c*r-y*f*r-x*s*m+n*f*m+y*s*d-n*c*d)*z,w[2]=(h*f*r-x*u*r+x*s*o-n*f*o-h*s*d+n*u*d)*z,w[3]=(y*u*r-h*c*r-y*s*o+n*c*o+h*s*m-n*u*m)*z,w[4]=M*z,w[5]=(l*f*r-v*c*r+v*s*m-e*f*m-l*s*d+e*c*d)*z,w[6]=(v*u*r-a*f*r-v*s*o+e*f*o+a*s*d-e*u*d)*z,w[7]=(a*c*r-l*u*r+l*s*o-e*c*o-a*s*m+e*u*m)*z,w[8]=g*z,w[9]=(v*y*r-l*x*r-v*n*m+e*x*m+l*n*d-e*y*d)*z,w[10]=(a*x*r-v*h*r+v*n*o-e*x*o-a*n*d+e*h*d)*z,w[11]=(l*h*r-a*y*r-l*n*o+e*y*o+a*n*m-e*h*m)*z,w[12]=_*z,w[13]=(l*x*s-v*y*s+v*n*c-e*x*c-l*n*f+e*y*f)*z,w[14]=(v*h*s-a*x*s-v*n*u+e*x*u+a*n*f-e*h*f)*z,w[15]=(a*y*s-l*h*s+l*n*u-e*y*u-a*n*c+e*h*c)*z;var b=new t;return b.elements=w,b}},{key:"scale",value:function(t){var i=this.elements,e=t.x,n=t.y,s=t.z;return i[0]*=e,i[4]*=n,i[8]*=s,i[1]*=e,i[5]*=n,i[9]*=s,i[2]*=e,i[6]*=n,i[10]*=s,i[3]*=e,i[7]*=n,i[11]*=s,this}},{key:"getMaxScaleOnAxis",value:function(){var t=this.elements,i=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],e=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(i,e,n))}},{key:"makeTranslation",value:function(t,i,e){return this.set(1,0,0,t,0,1,0,i,0,0,1,e,0,0,0,1),this}},{key:"makeRotationX",value:function(t){var i=Math.cos(t),e=Math.sin(t);return this.set(1,0,0,0,0,i,-e,0,0,e,i,0,0,0,0,1),this}},{key:"makeRotationY",value:function(t){var i=Math.cos(t),e=Math.sin(t);return this.set(i,0,e,0,0,1,0,0,-e,0,i,0,0,0,0,1),this}},{key:"makeRotationZ",value:function(t){var i=Math.cos(t),e=Math.sin(t);return this.set(i,-e,0,0,e,i,0,0,0,0,1,0,0,0,0,1),this}},{key:"makeRotationAxis",value:function(t,i){var e=Math.cos(i),n=Math.sin(i),s=1-e,r=t.x,a=t.y,h=t.z,u=s*r,o=s*a;return this.set(u*r+e,u*a-n*h,u*h+n*a,0,u*a+n*h,o*a+e,o*h-n*r,0,u*h-n*a,o*h+n*r,s*h*h+e,0,0,0,0,1),this}},{key:"makeScale",value:function(t,i,e){return this.set(t,0,0,0,0,i,0,0,0,0,e,0,0,0,0,1),this}},{key:"makeShear",value:function(t,i,e){return this.set(1,i,e,0,t,1,e,0,t,i,1,0,0,0,0,1),this}},{key:"compose",value:function(t,i,e){var n=this.elements,s=i._x,r=i._y,a=i._z,h=i._w,u=s+s,o=r+r,l=a+a,y=s*u,c=s*o,m=s*l,v=r*o,x=r*l,f=a*l,d=h*u,k=h*o,M=h*l,g=e.x,_=e.y,p=e.z;return n[0]=(1-(v+f))*g,n[1]=(c+M)*g,n[2]=(m-k)*g,n[3]=0,n[4]=(c-M)*_,n[5]=(1-(y+f))*_,n[6]=(x+d)*_,n[7]=0,n[8]=(m+k)*p,n[9]=(x-d)*p,n[10]=(1-(y+v))*p,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}},{key:"decompose",value:function(t,i,e){var n=this.elements,s=w.set(n[0],n[1],n[2]).length,r=w.set(n[4],n[5],n[6]).length,a=w.set(n[8],n[9],n[10]).length;this.determinant()<0&&(s=-s),t.x=n[12],t.y=n[13],t.z=n[14],P.copy(this);var h=1/s,u=1/r,o=1/a;return P.elements[0]*=h,P.elements[1]*=h,P.elements[2]*=h,P.elements[4]*=u,P.elements[5]*=u,P.elements[6]*=u,P.elements[8]*=o,P.elements[9]*=o,P.elements[10]*=o,i.setFromRotationMatrix(P),e.x=s,e.y=r,e.z=a,this}},{key:"makePerspective",value:function(t,i,e,n,s,r){void 0===r&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var a=this.elements,h=2*s/(i-t),u=2*s/(e-n),o=(i+t)/(i-t),l=(e+n)/(e-n),y=-(r+s)/(r-s),c=-2*r*s/(r-s);return a[0]=h,a[4]=0,a[8]=o,a[12]=0,a[1]=0,a[5]=u,a[9]=l,a[13]=0,a[2]=0,a[6]=0,a[10]=y,a[14]=c,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}},{key:"makeOrthographic",value:function(t,i,e,n,s,r){var a=this.elements,h=1/(i-t),u=1/(e-n),o=1/(r-s),l=(i+t)*h,y=(e+n)*u,c=(r+s)*o;return a[0]=2*h,a[4]=0,a[8]=0,a[12]=-l,a[1]=0,a[5]=2*u,a[9]=0,a[13]=-y,a[2]=0,a[6]=0,a[10]=-2*o,a[14]=-c,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}},{key:"equals",value:function(t){for(var i=this.elements,e=t.elements,n=0;n<16;n++)if(!m.isEqual(i[n],e[n]))return!1;return!0}},{key:"fromArray",value:function(t){for(var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=0;e<16;e++)this.elements[e]=t[e+i];return this}},{key:"toArray",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=this.elements;return t[i]=e[0],t[i+1]=e[1],t[i+2]=e[2],t[i+3]=e[3],t[i+4]=e[4],t[i+5]=e[5],t[i+6]=e[6],t[i+7]=e[7],t[i+8]=e[8],t[i+9]=e[9],t[i+10]=e[10],t[i+11]=e[11],t[i+12]=e[12],t[i+13]=e[13],t[i+14]=e[14],t[i+15]=e[15],t}}])}(),P=new