define(["./when-cbf8cd21","./Check-35e1a91d","./Math-e66fad2a","./Rectangle-53325d53","./WebGLConstants-95ceb4e9","./PixelFormat-d198afce","./Transforms-00c25a19","./RuntimeError-f4c64df1","./ComponentDatatype-7ee14e67","./AttributeCompression-fd688b33","./IntersectionTests-fdc68d04","./Plane-353c5ea0","./WebMercatorProjection-9acf7e8b","./createTaskProcessorWorker","./EllipsoidTangentPlane-c89e3523","./OrientedBoundingBox-a499af21","./TerrainEncoding-bf491fa9"],function(Fe,e,We,Oe,t,i,Ye,ke,a,n,r,o,Ue,s,Ve,He,Le){"use strict";var De=Uint16Array.BYTES_PER_ELEMENT,Ge=Int32Array.BYTES_PER_ELEMENT,je=Uint32Array.BYTES_PER_ELEMENT,ze=Float32Array.BYTES_PER_ELEMENT,qe=Float64Array.BYTES_PER_ELEMENT;function Je(e,t,i){i=Fe.defaultValue(i,We.CesiumMath);for(var a=e.length,n=0;n<a;++n)if(i.equalsEpsilon(e[n],t,We.CesiumMath.EPSILON12))return n;return-1}var Ke=new Oe.Cartographic,Qe=new Oe.Cartesian3,Xe=new Oe.Cartesian3,Ze=new Oe.Cartesian3,$e=new Ye.Matrix4;function et(e,t,i,a,n,r,o,s,u,h){for(var c=o.length,d=0;d<c;++d){var l=o[d],g=l.cartographic,m=l.index,p=e.length,I=g.longitude,v=g.latitude,v=We.CesiumMath.clamp(v,-We.CesiumMath.PI_OVER_TWO,We.CesiumMath.PI_OVER_TWO),f=g.height-r.skirtHeight;r.hMin=Math.min(r.hMin,f),Oe.Cartographic.fromRadians(I,v,f,Ke),u&&(Ke.longitude+=s),u?d===c-1?Ke.latitude+=h:0===d&&(Ke.latitude-=h):Ke.latitude+=s;var E=r.ellipsoid.cartographicToCartesian(Ke);e.push(E),t.push(f),i.push(Oe.Cartesian2.clone(i[m])),0<a.length&&a.push(a[m]),Ye.Matrix4.multiplyByPoint(r.toENU,E,Qe);var T=r.minimum,C=r.maximum;Oe.Cartesian3.minimumByComponent(Qe,T,T),Oe.Cartesian3.maximumByComponent(Qe,C,C);var M,x=r.lastBorderPoint;Fe.defined(x)&&(M=x.index,n.push(M,p-1,p,p,m,M)),r.lastBorderPoint=l}}return s(function(e,t){e.ellipsoid=Oe.Ellipsoid.clone(e.ellipsoid),e.rectangle=Oe.Rectangle.clone(e.rectangle);var i=function(e,t,i,a,n,r,o,s,u,h){var c,d,l,g,m,p;p=Fe.defined(a)?(c=a.west,d=a.south,l=a.east,g=a.north,m=a.width,a.height):(c=We.CesiumMath.toRadians(n.west),d=We.CesiumMath.toRadians(n.south),l=We.CesiumMath.toRadians(n.east),g=We.CesiumMath.toRadians(n.north),m=We.CesiumMath.toRadians(a.width),We.CesiumMath.toRadians(a.height));var I,v,f=[d,g],E=[c,l],T=Ye.Transforms.eastNorthUpToFixedFrame(t,i),C=Ye.Matrix4.inverseTransformation(T,$e);s&&(I=Ue.WebMercatorProjection.geodeticLatitudeToMercatorAngle(d),v=1/(Ue.WebMercatorProjection.geodeticLatitudeToMercatorAngle(g)-I));var M=new DataView(e),x=Number.POSITIVE_INFINITY,N=Number.NEGATIVE_INFINITY,b=Xe;b.x=Number.POSITIVE_INFINITY,b.y=Number.POSITIVE_INFINITY,b.z=Number.POSITIVE_INFINITY;var S=Ze;S.x=Number.NEGATIVE_INFINITY,S.y=Number.NEGATIVE_INFINITY,S.z=Number.NEGATIVE_INFINITY;var P,w,B=0,R=0,y=0;for(w=0;w<4;++w){var A=B;P=M.getUint32(A,!0),A+=je;var _=We.CesiumMath.toRadians(180*M.getFloat64(A,!0));A+=qe,-1===Je(E,_)&&E.push(_);var F=We.CesiumMath.toRadians(180*M.getFloat64(A,!0));A+=qe,-1===Je(f,F)&&f.push(F),A+=2*qe;var W=M.getInt32(A,!0);A+=Ge,R+=W,W=M.getInt32(A,!0),y+=3*W,B+=P+je}var O=[],Y=[],k=new Array(R),U=new Array(R),V=new Array(R),H=s?new Array(R):[],L=new Array(y),D=[],G=[],j=[],z=[],q=0,J=0;for(w=B=0;w<4;++w){P=M.getUint32(B,!0);var K=B+=je,Q=We.CesiumMath.toRadians(180*M.getFloat64(B,!0));B+=qe;var X=We.CesiumMath.toRadians(180*M.getFloat64(B,!0));B+=qe;var Z=We.CesiumMath.toRadians(180*M.getFloat64(B,!0)),$=.5*Z;B+=qe;var ee=We.CesiumMath.toRadians(180*M.getFloat64(B,!0)),te=.5*ee;B+=qe;var ie=M.getInt32(B,!0);B+=Ge;var ae=M.getInt32(B,!0);B+=Ge,B+=Ge;for(var ne=new Array(ie),re=0;re<ie;++re){var oe=Q+M.getUint8(B++)*Z;Ke.longitude=oe;var se=X+M.getUint8(B++)*ee;Ke.latitude=se;var ue=M.getFloat32(B,!0);if(B+=ze,0!==ue&&ue<h&&(ue*=-Math.pow(2,u)),ue*=6371010*r,Ke.height=ue,-1!==Je(E,oe)||-1!==Je(f,se)){var he=Je(O,Ke,Oe.Cartographic);if(-1!==he){ne[re]=Y[he];continue}O.push(Oe.Cartographic.clone(Ke)),Y.push(q)}ne[re]=q,Math.abs(oe-c)<$?D.push({index:q,cartographic:Oe.Cartographic.clone(Ke)}):Math.abs(oe-l)<$?j.push({index:q,cartographic:Oe.Cartographic.clone(Ke)}):Math.abs(se-d)<te?G.push({index:q,cartographic:Oe.Cartographic.clone(Ke)}):Math.abs(se-g)<te&&z.push({index:q,cartographic:Oe.Cartographic.clone(Ke)}),x=Math.min(ue,x),N=Math.max(ue,N),V[q]=ue;var ce=i.cartographicToCartesian(Ke);k[q]=ce,s&&(H[q]=(Ue.WebMercatorProjection.geodeticLatitudeToMercatorAngle(se)-I)*v),Ye.Matrix4.multiplyByPoint(C,ce,Qe),Oe.Cartesian3.minimumByComponent(Qe,b,b),Oe.Cartesian3.maximumByComponent(Qe,S,S);var de=(oe-c)/(l-c);de=We.CesiumMath.clamp(de,0,1);var le=(se-d)/(g-d);le=We.CesiumMath.clamp(le,0,1),U[q]=new Oe.Cartesian2(de,le),++q}for(var ge=3*ae,me=0;me<ge;++me,++J)L[J]=ne[M.getUint16(B,!0)],B+=De;if(P!==B-K)throw new ke.RuntimeError("Invalid terrain tile.")}k.length=q,U.length=q,V.length=q,s&&(H.length=q);var pe=q,Ie=J,ve={hMin:x,lastBorderPoint:void 0,skirtHeight:o,toENU:C,ellipsoid:i,minimum:b,maximum:S};D.sort(function(e,t){return t.cartographic.latitude-e.cartographic.latitude}),G.sort(function(e,t){return e.cartographic.longitude-t.cartographic.longitude}),j.sort(function(e,t){return e.cartographic.latitude-t.cartographic.latitude}),z.sort(function(e,t){return t.cartographic.longitude-e.cartographic.longitude});var fe=1e-5;{var Ee,Te,Ce;et(k,V,U,H,L,ve,D,-fe*m,!0,-fe*p),et(k,V,U,H,L,ve,G,-fe*p,!1),et(k,V,U,H,L,ve,j,fe*m,!0,fe*p),et(k,V,U,H,L,ve,z,fe*p,!1),0<D.length&&0<z.length&&(Ee=D[0].index,Te=z[z.length-1].index,Ce=k.length-1,L.push(Te,Ce,pe,pe,Ee,Te))}R=k.length;var Me,xe=Ye.BoundingSphere.fromPoints(k);Fe.defined(a)&&(Me=He.OrientedBoundingBox.fromRectangle(a,x,N,i));for(var Ne=new Le.EllipsoidalOccluder(i).computeHorizonCullingPointPossiblyUnderEllipsoid(t,k,x),be=new Ve.AxisAlignedBoundingBox(b,S,t),Se=new Le.TerrainEncoding(be,ve.hMin,N,T,!1,s),Pe=new Float32Array(R*Se.getStride()),we=0,Be=0;Be<R;++Be)we=Se.encode(Pe,we,k[Be],U[Be],V[Be],void 0,H[Be]);var Re=D.map(function(e){return e.index}).reverse(),ye=G.map(function(e){return e.index}).reverse(),Ae=j.map(function(e){return e.index}).reverse(),_e=z.map(function(e){return e.index}).reverse();return ye.unshift(Ae[Ae.length-1]),ye.push(Re[0]),_e.unshift(Re[Re.length-1]),_e.push(Ae[0]),{vertices:Pe,indices:new Uint16Array(L),maximumHeight:N,minimumHeight:x,encoding:Se,boundingSphere3D:xe,orientedBoundingBox:Me,occludeePointInScaledSpace:Ne,vertexCountWithoutSkirts:pe,indexCountWithoutSkirts:Ie,westIndicesSouthToNorth:Re,southIndicesEastToWest:ye,eastIndicesNorthToSouth:Ae,northIndicesWestToEast:_e}}(e.buffer,e.relativeToCenter,e.ellipsoid,e.rectangle,e.nativeRectangle,e.exaggeration,e.skirtHeight,e.includeWebMercatorT,e.negativeAltitudeExponentBias,e.negativeElevationThreshold),a=i.vertices;t.push(a.buffer);var n=i.indices;return t.push(n.buffer),{vertices:a.buffer,indices:n.buffer,numberOfAttributes:i.encoding.getStride(),minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,boundingSphere3D:i.boundingSphere3D,orientedBoundingBox:i.orientedBoundingBox,occludeePointInScaledSpace:i.occludeePointInScaledSpace,encoding:i.encoding,vertexCountWithoutSkirts:i.vertexCountWithoutSkirts,indexCountWithoutSkirts:i.indexCountWithoutSkirts,westIndicesSouthToNorth:i.westIndicesSouthToNorth,southIndicesEastToWest:i.southIndicesEastToWest,eastIndicesNorthToSouth:i.eastIndicesNorthToSouth,northIndicesWestToEast:i.northIndicesWestToEast}})});
|