1THREE.BendModifier=function(){},THREE.BendModifier.prototype={constructor:THREE.BendModifier,set:function(t,e,s){return this.direction=new THREE.Vector3,this.direction.copy(t),this.axis=new THREE.Vector3,this.axis.copy(e),this.angle=s,this},_sign:function(t){return 0>t?-1:0<t?1:0},_cosh:function(t){return(Math.exp(t)+Math.exp(-t))/2},_sinhInverse:function(t){return Math.log(Math.abs(t)+Math.sqrt(t*t+1))},modify:function(t){var e=new THREE.Vector3;e.crossVectors(this.direction,this.axis);var s=new THREE.Matrix4;s.set(e.x,e.y,e.z,0,this.direction.x,this.direction.y,this.direction.z,0,this.axis.x,this.axis.y,this.axis.z,0,0,0,0,1).transpose();for(var i=(new THREE.Matrix4).getInverse(s),r=[],a=[],n=[],o=0,h=0,c=0,E=0,M=0;M<t.vertices.length;M++)r[M]=new THREE.Vector3,r[M].copy(t.vertices[M]).applyMatrix4(i),r[M].x>o&&(o=r[M].x),r[M].x<h&&(h=r[M].x),r[M].y>c&&(c=r[M].y),r[M].y<E&&(E=r[M].y);var v=o-h,d=c-E,l=2*this._sinhInverse(Math.tan(this.angle))/v,p=(o+h)/2,f=(c+E)/2;for(M=0;M<t.vertices.length;M++)a[M]=new THREE.Vector3,a[M].copy(r[M]),r[M].x=1*this._sign(r[M].x-p)/l*this._sinhInverse((r[M].x-p)*l);var H=2/l*this._sinhInverse(v/2*l),R=2*this._sinhInverse(Math.tan(this.angle))/H,T=new THREE.Vector3(H/2,-d/2,0);T.y=1/R*this._cosh(R*T.x)-1/R-d/2;var V=new THREE.Vector3(0,T.y+T.x/Math.tan(this.angle),0);for(M=0;M<t.vertices.length;M++){var g=1*this._sign(a[M].x-p)/l*this._sinhInverse((a[M].x-p)*l),u=1/R*this._cosh(R*g)-1/R,w=new THREE.Vector3(V.x-g,V.y-(u-d/2),V.z).normalize(),_=new THREE.Vector3;_.addVectors(new THREE.Vector3(g,u-d/2,a[M].z),w.multiplyScalar(a[M].y+d/2)),r[M].x=_.x,r[M].y=_.y}middle=p*H/v;for(M=0;M<t.vertices.length;M++){var m=new THREE.Vector3(p,f,a[M].z);(new THREE.Vector3).subVectors(a[M],m),(new THREE.Vector3).subVectors(r[M],m),n[M]=Math.acos(1/this._cosh(l*r[M].x))*this._sign(r[M].x),r[M].x=r[M].x+middle,t.vertices[M].copy(r[M].applyMatrix4(s))}t.computeFaceNormals(),t.verticesNeedUpdate=!0,t.normalsNeedUpdate=!0;for(var I=["a","b","c","d"],N=0,b=t.faces.length;N<b;N++){var B=t.faces[N];if(void 0!==B.vertexNormals)for(var U=0,q=B.vertexNormals.length;U<q;U++){var F=n[B[I[U]]];x=this.axis.x,y=this.axis.y,z=this.axis.z;var S=new THREE.Matrix3;S.set(Math.cos(F)+(1-Math.cos(F))*x*x,(1-Math.cos(F))*x*y-Math.sin(F)*z,(1-Math.cos(F))*x*z+Math.sin(F)*y,(1-Math.cos(F))*y*x+Math.sin(F)*z,Math.cos(F)+(1-Math.cos(F))*y*y,(1-Math.cos(F))*y*z-Math.sin(F)*x,(1-Math.cos(F))*z*x-Math.sin(F)*y,(1-Math.cos(F))*z*y+Math.sin(F)*x,Math.cos(F)+(1-Math.cos(F))*z*z),B.vertexNormals[U].applyMatrix3(S)}}return this}};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.