define(["./when-cbf8cd21","./Check-35e1a91d","./Math-e66fad2a","./Cartesian2-44433f55","./Matrix3-146a3f23","./Transforms-fc4c03e8","./RuntimeError-f4c64df1","./WebGLConstants-95ceb4e9","./ComponentDatatype-7ee14e67","./AttributeCompression-170b3be0","./IndexDatatype-66caba23","./IntersectionTests-caa0ba1a","./Plane-e04c899a","./createTaskProcessorWorker","./EllipsoidTangentPlane-d27aa001","./OrientedBoundingBox-6e047f5d","./TerrainEncoding-5829782a"],function(v,e,xe,Ce,t,ve,i,n,s,r,we,ye,h,u,o,Be,Ie){"use strict";var Ae={clipTriangleAtAxisAlignedThreshold:function(e,t,i,n,s,r){var h,u,o;v.defined(r)?r.length=0:r=[],o=t?(h=i<e,u=n<e,s<e):(h=e<i,u=e<n,e<s);var a,p,d,f,l,g,c=h+u+o;return 1===c?h?(a=(e-i)/(n-i),p=(e-i)/(s-i),r.push(1),r.push(2),1!==p&&(r.push(-1),r.push(0),r.push(2),r.push(p)),1!==a&&(r.push(-1),r.push(0),r.push(1),r.push(a))):u?(d=(e-n)/(s-n),f=(e-n)/(i-n),r.push(2),r.push(0),1!==f&&(r.push(-1),r.push(1),r.push(0),r.push(f)),1!==d&&(r.push(-1),r.push(1),r.push(2),r.push(d))):o&&(l=(e-s)/(i-s),g=(e-s)/(n-s),r.push(0),r.push(1),1!==g&&(r.push(-1),r.push(2),r.push(1),r.push(g)),1!==l&&(r.push(-1),r.push(2),r.push(0),r.push(l))):2===c?h||i===e?u||n===e?o||s===e||(p=(e-i)/(s-i),d=(e-n)/(s-n),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(p),r.push(-1),r.push(1),r.push(2),r.push(d)):(g=(e-s)/(n-s),a=(e-i)/(n-i),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(g),r.push(-1),r.push(0),r.push(1),r.push(a)):(f=(e-n)/(i-n),l=(e-s)/(i-s),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(f),r.push(-1),r.push(2),r.push(0),r.push(l)):3!==c&&(r.push(0),r.push(1),r.push(2)),r},computeBarycentricCoordinates:function(e,t,i,n,s,r,h,u,o){var a=i-h,p=h-s,d=r-u,f=n-u,l=1/(d*a+p*f),g=t-u,c=e-h,m=(d*c+p*g)*l,x=(-f*c+a*g)*l,C=1-m-x;return v.defined(o)?(o.x=m,o.y=x,o.z=C,o):new Ce.Cartesian3(m,x,C)},computeLineSegmentLineSegmentIntersection:function(e,t,i,n,s,r,h,u,o){var a=(u-r)*(i-e)-(h-s)*(n-t);if(0!=a){var p=((h-s)*(t-r)-(u-r)*(e-s))/a,d=((i-e)*(t-r)-(n-t)*(e-s))/a;return 0<=p&&p<=1&&0<=d&&d<=1?(v.defined(o)||(o=new Ce.Cartesian2),o.x=e+p*(i-e),o.y=t+p*(n-t),o):void 0}}},Te=32767,be=16383,Me=[],Re=[],ze=[],Ee=new Ce.Cartographic,Ne=new Ce.Cartesian3,Ve=[],Oe=[],Se=[],He=[],Fe=[],Ue=new Ce.Cartesian3,Pe=new ve.BoundingSphere,We=new Be.OrientedBoundingBox,ke=new Ce.Cartesian2,De=new Ce.Cartesian3;function Xe(){this.vertexBuffer=void 0,this.index=void 0,this.first=void 0,this.second=void 0,this.ratio=void 0}Xe.prototype.clone=function(e){return v.defined(e)||(e=new Xe),e.uBuffer=this.uBuffer,e.vBuffer=this.vBuffer,e.heightBuffer=this.heightBuffer,e.normalBuffer=this.normalBuffer,e.index=this.index,e.first=this.first,e.second=this.second,e.ratio=this.ratio,e},Xe.prototype.initializeIndexed=function(e,t,i,n,s){this.uBuffer=e,this.vBuffer=t,this.heightBuffer=i,this.normalBuffer=n,this.index=s,this.first=void 0,this.second=void 0,this.ratio=void 0},Xe.prototype.initializeFromClipResult=function(e,t,i){var n=t+1;return-1!==e[t]?i[e[t]].clone(this):(this.vertexBuffer=void 0,this.index=void 0,this.first=i[e[n]],++n,this.second=i[e[n]],++n,this.ratio=e[n],++n),n},Xe.prototype.getKey=function(){return this.isIndexed()?this.index:JSON.stringify({first:this.first.getKey(),second:this.second.getKey(),ratio:this.ratio})},Xe.prototype.isIndexed=function(){return v.defined(this.index)},Xe.prototype.getH=function(){return v.defined(this.index)?this.heightBuffer[this.index]:xe.CesiumMath.lerp(this.first.getH(),this.second.getH(),this.ratio)},Xe.prototype.getU=function(){return v.defined(this.index)?this.uBuffer[this.index]:xe.CesiumMath.lerp(this.first.getU(),this.second.getU(),this.ratio)},Xe.prototype.getV=function(){return v.defined(this.index)?this.vBuffer[this.index]:xe.CesiumMath.lerp(this.first.getV(),this.second.getV(),this.ratio)};var a=new Ce.Cartesian2,p=-1,d=[new Ce.Cartesian3,new Ce.Cartesian3],f=[new Ce.Cartesian3,new Ce.Cartesian3];function l(e,t){var i=d[++p],n=f[p],i=r.AttributeCompression.octDecode(e.first.getNormalX(),e.first.getNormalY(),i),n=r.AttributeCompression.octDecode(e.second.getNormalX(),e.second.getNormalY(),n);return Ne=Ce.Cartesian3.lerp(i,n,e.ratio,Ne),Ce.Cartesian3.normalize(Ne,Ne),r.AttributeCompression.octEncode(Ne,t),--p,t}Xe.prototype.getNormalX=function(){return v.defined(this.index)?this.normalBuffer[2*this.index]:(a=l(this,a)).x},Xe.prototype.getNormalY=function(){return v.defined(this.index)?this.normalBuffer[2*this.index+1]:(a=l(this,a)).y};var c=[];function Ke(e,t,i,n,s,r,h,u,o){if(0!==h.length){for(var a=0,p=0;p<h.length;)p=c[a++].initializeFromClipResult(h,p,u);for(var d=0;d<a;++d){var f,l,g=c[d];g.isIndexed()?(g.newIndex=r[g.index],g.uBuffer=e,g.vBuffer=t,g.heightBuffer=i,o&&(g.normalBuffer=n)):(f=g.getKey(),v.defined(r[f])?g.newIndex=r[f]:(l=e.length,e.push(g.getU()),t.push(g.getV()),i.push(g.getH()),o&&(n.push(g.getNormalX()),n.push(g.getNormalY())),g.newIndex=l,r[f]=l))}3===a?(s.push(c[0].newIndex),s.push(c[1].newIndex),s.push(c[2].newIndex)):4===a&&(s.push(c[0].newIndex),s.push(c[1].newIndex),s.push(c[2].newIndex),s.push(c[0].newIndex),s.push(c[2].newIndex),s.push(c[3].newIndex))}}return c.push(new Xe),c.push(new Xe),c.push(new Xe),c.push(new Xe),u(function(e,t){var i=e.isEastChild,n=e.isNorthChild,s=i?be:0,r=i?Te:be,h=n?be:0,u=n?Te:be,o=Ve,a=Oe,p=Se,d=Fe;o.length=0,a.length=0,p.length=0,d.length=0;var f=He;f.length=0;for(var l={},g=e.vertices,c=(c=e.indices).subarray(0,e.indexCountWithoutSkirts),m=Ie.TerrainEncoding.clone(e.encoding),x=m.hasVertexNormals,C=e.exaggeration,v=0,w=e.vertexCountWithoutSkirts,y=e.minimumHeight,B=e.maximumHeight,I=new Array(w),A=new Array(w),T=new Array(w),b=x?new Array(2*w):void 0,M=0,R=0;M<w;++M,R+=2){var z,E=m.decodeTextureCoordinates(g,M,ke),N=m.decodeHeight(g,M)/C,V=xe.CesiumMath.clamp(E.x*Te|0,0,Te),O=xe.CesiumMath.clamp(E.y*Te|0,0,Te);T[M]=xe.CesiumMath.clamp((N-y)/(B-y)*Te|0,0,Te),V<20&&(V=0),O<20&&(O=0),Te-V<20&&(V=Te),Te-O<20&&(O=Te),I[M]=V,A[M]=O,x&&(z=m.getOctEncodedNormal(g,M,De),b[R]=z.x,b[R+1]=z.y),(i&&be<=V||!i&&V<=be)&&(n&&be<=O||!n&&O<=be)&&(l[M]=v,o.push(V),a.push(O),p.push(T[M]),x&&(d.push(b[R]),d.push(b[R+1])),++v)}var S=[];S.push(new Xe),S.push(new Xe),S.push(new Xe);var H=[];for(H.push(new Xe),H.push(new Xe),H.push(new Xe),M=0;M<c.length;M+=3){var F=c[M],U=c[M+1],P=c[M+2],W=I[F],k=I[U],D=I[P];S[0].initializeIndexed(I,A,T,b,F),S[1].initializeIndexed(I,A,T,b,U),S[2].initializeIndexed(I,A,T,b,P);var X,K=Ae.clipTriangleAtAxisAlignedThreshold(be,i,W,k,D,Me);K.length<=0||(X=H[0].initializeFromClipResult(K,0,S))>=K.length||(X=H[1].initializeFromClipResult(K,X,S))>=K.length||(X=H[2].initializeFromClipResult(K,X,S),Ke(o,a,p,d,f,l,Ae.clipTriangleAtAxisAlignedThreshold(be,n,H[0].getV(),H[1].getV(),H[2].getV(),Re),H,x),X<K.length&&(H[2].clone(H[1]),H[2].initializeFromClipResult(K,X,S),Ke(o,a,p,d,f,l,Ae.clipTriangleAtAxisAlignedThreshold(be,n,H[0].getV(),H[1].getV(),H[2].getV(),Re),H,x)))}var L=i?-Te:0,Y=n?-Te:0,_=[],G=[],J=[],Z=[],j=Number.MAX_VALUE,q=-j,Q=ze;Q.length=0;var $,ee=Ce.Ellipsoid.clone(e.ellipsoid),te=Ce.Rectangle.clone(e.childRectangle),ie=e.constraintRegions,ne=ye.IntersectionTests.intersetRectangleWithConstraintRegion(te,ie),se=te.north,re=te.south,he=te.east,ue=te.west;for(he<ue&&(he+=xe.CesiumMath.TWO_PI),M=0;M<o.length;++M){V=(V=Math.round(o[M]))<=s?(_.push(M),0):r<=V?(J.push(M),Te):2*V+L,o[M]=V,O=(O=Math.round(a[M]))<=h?(G.push(M),0):u<=O?(Z.push(M),Te):2*O+Y,a[M]=O,N=xe.CesiumMath.lerp(y,B,p[M]/Te),Ee.longitude=xe.CesiumMath.lerp(ue,he,V/Te),Ee.latitude=xe.CesiumMath.lerp(re,se,O/Te),Ee.height=N,-1===ne||-1!==($=ye.IntersectionTests.isCartographicInConstraintRegion(Ee,ne,ie))&&("ERASE"===ie[$].eraseType?N=ie[$].height:"OFFSET"===ie[$].eraseType?N+=ie[$].height:"SMOOTH"===ie[$].eraseType&&(N=ye.IntersectionTests.interoplateCartographicWhenSmooth(Ee,ie[$]))<ie[$].height&&(N=ie[$].height),p[M]=N,Ee.height=N),(p[M]=N)<j&&(j=N),q<N&&(q=N),ee.cartographicToCartesian(Ee,Ne),Q.push(Ne.x),Q.push(Ne.y),Q.push(Ne.z)}var oe=ve.BoundingSphere.fromVertices(Q,Ce.Cartesian3.ZERO,3,Pe),ae=Be.OrientedBoundingBox.fromRectangle(te,j,q,ee,We),pe=new Ie.EllipsoidalOccluder(ee).computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid(oe.center,Q,3,oe.center,j,Ue),de=q-j,fe=new Uint16Array(o.length+a.length+p.length);for(M=0;M<o.length;++M)fe[M]=o[M];var le=o.length;for(M=0;M<a.length;++M)fe[le+M]=a[M];for(le+=a.length,M=0;M<p.length;++M)fe[le+M]=Te*(p[M]-j)/de;var ge,ce,me=we.IndexDatatype.createTypedArray(o.length,f);return x?(ce=new Uint8Array(d),t.push(fe.buffer,me.buffer,ce.buffer),ge=ce.buffer):t.push(fe.buffer,me.buffer),{vertices:fe.buffer,encodedNormals:ge,indices:me.buffer,minimumHeight:j,maximumHeight:q,westIndices:_,southIndices:G,eastIndices:J,northIndices:Z,boundingSphere:oe,orientedBoundingBox:ae,horizonOcclusionPoint:pe}})});