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