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