| | |
| | | define(["./EllipsoidTangentPlane-0fb66b96","./Transforms-5295b227","./Cartesian2-5b63e672","./when-ca391574","./TerrainEncoding-0f94e395","./Math-b53708b3","./OrientedBoundingBox-e61df120","./RuntimeError-19cb26ba","./WebMercatorProjection-e0329e39","./createTaskProcessorWorker","./Check-64f87f7d","./IntersectionTests-f5111308","./Plane-99b2becd","./AttributeCompression-a99f24b9","./ComponentDatatype-8f71e605","./WebGLConstants-95ceb4e9"],function(Te,fe,Ce,ve,Me,Ne,be,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,Ne.CesiumMath);for(var n=e.length,r=0;r<n;++r)if(i.equalsEpsilon(e[r],t,Ne.CesiumMath.EPSILON12))return r;return-1}var _e=new Ce.Cartographic,We=new Ce.Cartesian3,Fe=new Ce.Cartesian3,Oe=new Ce.Cartesian3,Ye=new fe.Matrix4;function ke(e,t,i,n,r,a,o,s,u,h){for(var c=o.length,d=0;d<c;++d){var g=o[d],l=g.cartographic,m=g.index,p=e.length,I=l.longitude,E=l.latitude,E=Ne.CesiumMath.clamp(E,-Ne.CesiumMath.PI_OVER_TWO,Ne.CesiumMath.PI_OVER_TWO),l=l.height-a.skirtHeight;a.hMin=Math.min(a.hMin,l),Ce.Cartographic.fromRadians(I,E,l,_e),u&&(_e.longitude+=s),u?d===c-1?_e.latitude+=h:0===d&&(_e.latitude-=h):_e.latitude+=s;E=a.ellipsoid.cartographicToCartesian(_e);e.push(E),t.push(l),i.push(Ce.Cartesian2.clone(i[m])),0<n.length&&n.push(n[m]),fe.Matrix4.multiplyByPoint(a.toENU,E,We);l=a.minimum,E=a.maximum;Ce.Cartesian3.minimumByComponent(We,l,l),Ce.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=Ce.Ellipsoid.clone(e.ellipsoid),e.rectangle=Ce.Rectangle.clone(e.rectangle);var i=function(e,t,i,n,r,a,o,s,u,h){var c,d,g,l,m;ce=ve.defined(n)?(c=n.west,d=n.south,g=n.east,l=n.north,m=n.width,n.height):(c=Ne.CesiumMath.toRadians(r.west),d=Ne.CesiumMath.toRadians(r.south),g=Ne.CesiumMath.toRadians(r.east),l=Ne.CesiumMath.toRadians(r.north),m=Ne.CesiumMath.toRadians(n.width),Ne.CesiumMath.toRadians(n.height));var p,I,E=[d,l],T=[c,g],f=fe.Transforms.eastNorthUpToFixedFrame(t,i),C=fe.Matrix4.inverseTransformation(f,Ye);s&&(p=Se.WebMercatorProjection.geodeticLatitudeToMercatorAngle(d),I=1/(Se.WebMercatorProjection.geodeticLatitudeToMercatorAngle(l)-p));var v=new DataView(e),M=Number.POSITIVE_INFINITY,N=Number.NEGATIVE_INFINITY,b=Fe;b.x=Number.POSITIVE_INFINITY,b.y=Number.POSITIVE_INFINITY,b.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=Ne.CesiumMath.toRadians(180*v.getFloat64(A,!0));A+=Ae,-1===Re(T,R)&&T.push(R);R=Ne.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=Ne.CesiumMath.toRadians(180*v.getFloat64(P,!0));P+=Ae;var J=Ne.CesiumMath.toRadians(180*v.getFloat64(P,!0));P+=Ae;var K=Ne.CesiumMath.toRadians(180*v.getFloat64(P,!0)),Q=.5*K;P+=Ae;var X=Ne.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,Ce.Cartographic);if(-1!==oe){te[ie]=W[oe];continue}_.push(Ce.Cartographic.clone(_e)),W.push(G)}te[ie]=G,Math.abs(ne-c)<Q?V.push({index:G,cartographic:Ce.Cartographic.clone(_e)}):Math.abs(ne-g)<Q?L.push({index:G,cartographic:Ce.Cartographic.clone(_e)}):Math.abs(re-d)<Z?H.push({index:G,cartographic:Ce.Cartographic.clone(_e)}):Math.abs(re-l)<Z&&D.push({index:G,cartographic:Ce.Cartographic.clone(_e)}),M=Math.min(ae,M),N=Math.max(ae,N),Y[G]=ae;ae=i.cartographicToCartesian(_e);F[G]=ae,s&&(k[G]=(Se.WebMercatorProjection.geodeticLatitudeToMercatorAngle(re)-p)*I),fe.Matrix4.multiplyByPoint(C,ae,We),Ce.Cartesian3.minimumByComponent(We,b,b),Ce.Cartesian3.maximumByComponent(We,x,x);ne=(ne-c)/(g-c);ne=Ne.CesiumMath.clamp(ne,0,1);re=(re-d)/(l-d);re=Ne.CesiumMath.clamp(re,0,1),O[G]=new Ce.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:C,ellipsoid:i,minimum:b,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 ce;ke(F,Y,O,k,U,e,V,-o*m,!0,-o*ce),ke(F,Y,O,k,U,e,H,-o*ce,!1),ke(F,Y,O,k,U,e,L,o*m,!0,o*ce),ke(F,Y,O,k,U,e,D,o*ce,!1),0<V.length&&0<D.length&&(ge=V[0].index,le=D[D.length-1].index,ce=F.length-1,U.push(le,ce,he,he,ge,le))}B=F.length;var de,ge=fe.BoundingSphere.fromPoints(F);ve.defined(n)&&(de=be.OrientedBoundingBox.fromRectangle(n,M,N,i));for(var le=new Me.EllipsoidalOccluder(i).computeHorizonCullingPointPossiblyUnderEllipsoid(t,F,M),n=new Te.AxisAlignedBoundingBox(b,x,t),me=new Me.TerrainEncoding(n,e.hMin,N,f,!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(),f=D.map(function(e){return e.index}).reverse();return n.unshift(e[e.length-1]),n.push(t[0]),f.unshift(t[t.length-1]),f.push(e[0]),{vertices:pe,indices:new Uint16Array(U),maximumHeight:N,minimumHeight:M,encoding:me,boundingSphere3D:ge,orientedBoundingBox:de,occludeePointInScaledSpace:le,vertexCountWithoutSkirts:he,indexCountWithoutSkirts:r,westIndicesSouthToNorth:t,southIndicesEastToWest:n,eastIndicesNorthToSouth:e,northIndicesWestToEast:f}}(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}})}); |
| | | define(["./AxisAlignedBoundingBox-14881a9b","./Transforms-a7d32f6c","./Cartesian2-40b13f31","./when-7b580518","./TerrainEncoding-92d1abc9","./Math-87254c13","./OrientedBoundingBox-714102d2","./RuntimeError-fad4d3c6","./WebMercatorProjection-bdaffcea","./createTaskProcessorWorker","./Check-3917d765","./combine-83aa7971","./AttributeCompression-56959beb","./ComponentDatatype-6c2e43c1","./WebGLConstants-4e26b85a","./EllipsoidTangentPlane-b7b148bd","./IntersectionTests-2dece3b4","./Plane-69fa3eea"],function(ve,Me,xe,Ne,be,Se,we,Be,Pe,e,t,i,n,a,r,o,s,u){"use strict";var Ae=Uint16Array.BYTES_PER_ELEMENT,ye=Int32Array.BYTES_PER_ELEMENT,Re=Uint32Array.BYTES_PER_ELEMENT,_e=Float32Array.BYTES_PER_ELEMENT,We=Float64Array.BYTES_PER_ELEMENT;function Fe(e,t,i){i=Ne.defaultValue(i,Se.CesiumMath);for(var n=e.length,a=0;a<n;++a)if(i.equalsEpsilon(e[a],t,Se.CesiumMath.EPSILON12))return a;return-1}var Oe=new xe.Cartographic,Ye=new xe.Cartesian3,ke=new xe.Cartesian3,Ue=new xe.Cartesian3,Ve=new Me.Matrix4;function He(e,t,i,n,a,r,o,s,u,h,c){for(var d=s.length,g=0;g<d;++g){var l=s[g],m=l.cartographic,p=l.index,I=e.length,E=m.longitude,T=m.latitude,T=Se.CesiumMath.clamp(T,-Se.CesiumMath.PI_OVER_TWO,Se.CesiumMath.PI_OVER_TWO),m=m.height-o.skirtHeight;o.hMin=Math.min(o.hMin,m),xe.Cartographic.fromRadians(E,T,m,Oe),h&&(Oe.longitude+=u),h?g===d-1?Oe.latitude+=c:0===g&&(Oe.latitude-=c):Oe.latitude+=u;T=o.ellipsoid.cartographicToCartesian(Oe);e.push(T),t.push(m),i.push(xe.Cartesian2.clone(i[p])),0<n.length&&n.push(n[p]),0<a.length&&a.push(a[p]),Me.Matrix4.multiplyByPoint(o.toENU,T,Ye);m=o.minimum,T=o.maximum;xe.Cartesian3.minimumByComponent(Ye,m,m),xe.Cartesian3.maximumByComponent(Ye,T,T);T=o.lastBorderPoint;Ne.defined(T)&&(T=T.index,r.push(T,I-1,I,I,p,T)),o.lastBorderPoint=l}}return e(function(e,t){e.ellipsoid=xe.Ellipsoid.clone(e.ellipsoid),e.rectangle=xe.Rectangle.clone(e.rectangle);var i=function(e,t,i,n,a,r,o,s,u,h,c){var d,g,l,m,p;le=Ne.defined(n)?(d=n.west,g=n.south,l=n.east,m=n.north,p=n.width,n.height):(d=Se.CesiumMath.toRadians(a.west),g=Se.CesiumMath.toRadians(a.south),l=Se.CesiumMath.toRadians(a.east),m=Se.CesiumMath.toRadians(a.north),p=Se.CesiumMath.toRadians(n.width),Se.CesiumMath.toRadians(n.height));var I,E,T=[g,m],f=[d,l],C=Me.Transforms.eastNorthUpToFixedFrame(t,i),v=Me.Matrix4.inverseTransformation(C,Ve);u&&(I=Pe.WebMercatorProjection.geodeticLatitudeToMercatorAngle(g),E=1/(Pe.WebMercatorProjection.geodeticLatitudeToMercatorAngle(m)-I));var M=1!==r,x=new DataView(e),N=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY,S=ke;S.x=Number.POSITIVE_INFINITY,S.y=Number.POSITIVE_INFINITY,S.z=Number.POSITIVE_INFINITY;var w=Ue;w.x=Number.NEGATIVE_INFINITY,w.y=Number.NEGATIVE_INFINITY,w.z=Number.NEGATIVE_INFINITY;var B,P,A=0,y=0,R=0;for(P=0;P<4;++P){var _=A;B=x.getUint32(_,!0),_+=Re;var W=Se.CesiumMath.toRadians(180*x.getFloat64(_,!0));_+=We,-1===Fe(f,W)&&f.push(W);W=Se.CesiumMath.toRadians(180*x.getFloat64(_,!0));_+=We,-1===Fe(T,W)&&T.push(W),_+=2*We;W=x.getInt32(_,!0);_+=ye,y+=W,W=x.getInt32(_,!0),R+=3*W,A+=B+Re}var F=[],O=[],Y=new Array(y),k=new Array(y),U=new Array(y),V=u?new Array(y):[],H=M?new Array(y):[],L=new Array(R),D=[],G=[],j=[],z=[],q=0,J=0;for(P=A=0;P<4;++P){B=x.getUint32(A,!0);var K=A+=Re,Q=Se.CesiumMath.toRadians(180*x.getFloat64(A,!0));A+=We;var X=Se.CesiumMath.toRadians(180*x.getFloat64(A,!0));A+=We;var Z=Se.CesiumMath.toRadians(180*x.getFloat64(A,!0)),$=.5*Z;A+=We;var ee=Se.CesiumMath.toRadians(180*x.getFloat64(A,!0)),te=.5*ee;A+=We;var ie=x.getInt32(A,!0);A+=ye;var ne=x.getInt32(A,!0);A+=ye,A+=ye;for(var ae=new Array(ie),re=0;re<ie;++re){var oe=Q+x.getUint8(A++)*Z;Oe.longitude=oe;var se=X+x.getUint8(A++)*ee;Oe.latitude=se;var ue=x.getFloat32(A,!0);if(A+=_e,0!==ue&&ue<c&&(ue*=-Math.pow(2,h)),ue*=6371010,Oe.height=ue,-1!==Fe(f,oe)||-1!==Fe(T,se)){var he=Fe(F,Oe,xe.Cartographic);if(-1!==he){ae[re]=O[he];continue}F.push(xe.Cartographic.clone(Oe)),O.push(q)}ae[re]=q,Math.abs(oe-d)<$?D.push({index:q,cartographic:xe.Cartographic.clone(Oe)}):Math.abs(oe-l)<$?j.push({index:q,cartographic:xe.Cartographic.clone(Oe)}):Math.abs(se-g)<te?G.push({index:q,cartographic:xe.Cartographic.clone(Oe)}):Math.abs(se-m)<te&&z.push({index:q,cartographic:xe.Cartographic.clone(Oe)}),N=Math.min(ue,N),b=Math.max(ue,b),U[q]=ue;he=i.cartographicToCartesian(Oe);Y[q]=he,u&&(V[q]=(Pe.WebMercatorProjection.geodeticLatitudeToMercatorAngle(se)-I)*E),M&&(ue=i.geodeticSurfaceNormal(he),H[q]=ue),Me.Matrix4.multiplyByPoint(v,he,Ye),xe.Cartesian3.minimumByComponent(Ye,S,S),xe.Cartesian3.maximumByComponent(Ye,w,w);oe=(oe-d)/(l-d);oe=Se.CesiumMath.clamp(oe,0,1);se=(se-g)/(m-g);se=Se.CesiumMath.clamp(se,0,1),k[q]=new xe.Cartesian2(oe,se),++q}for(var ce=3*ne,de=0;de<ce;++de,++J)L[J]=ae[x.getUint16(A,!0)],A+=Ae;if(B!==A-K)throw new Be.RuntimeError("Invalid terrain tile.")}Y.length=q,k.length=q,U.length=q,u&&(V.length=q);M&&(H.length=q);var ge=q,a=J,e={hMin:N,lastBorderPoint:void 0,skirtHeight:s,toENU:v,ellipsoid:i,minimum:S,maximum:w};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});s=1e-5;{var le;He(Y,U,k,V,H,L,e,D,-s*p,!0,-s*le),He(Y,U,k,V,H,L,e,G,-s*le,!1),He(Y,U,k,V,H,L,e,j,s*p,!0,s*le),He(Y,U,k,V,H,L,e,z,s*le,!1),0<D.length&&0<z.length&&(pe=D[0].index,Ie=z[z.length-1].index,le=Y.length-1,L.push(Ie,le,ge,ge,pe,Ie))}y=Y.length;var me,pe=Me.BoundingSphere.fromPoints(Y);Ne.defined(n)&&(me=we.OrientedBoundingBox.fromRectangle(n,N,b,i));for(var Ie=new be.EllipsoidalOccluder(i).computeHorizonCullingPointPossiblyUnderEllipsoid(t,Y,N),n=new ve.AxisAlignedBoundingBox(S,w,t),Ee=new be.TerrainEncoding(t,n,e.hMin,b,C,!1,u,M,r,o),Te=new Float32Array(y*Ee.stride),fe=0,Ce=0;Ce<y;++Ce)fe=Ee.encode(Te,fe,Y[Ce],k[Ce],U[Ce],void 0,V[Ce],H[Ce]);e=D.map(function(e){return e.index}).reverse(),C=G.map(function(e){return e.index}).reverse(),r=j.map(function(e){return e.index}).reverse(),o=z.map(function(e){return e.index}).reverse();return C.unshift(r[r.length-1]),C.push(e[0]),o.unshift(e[e.length-1]),o.push(r[0]),{vertices:Te,indices:new Uint16Array(L),maximumHeight:b,minimumHeight:N,encoding:Ee,boundingSphere3D:pe,orientedBoundingBox:me,occludeePointInScaledSpace:Ie,vertexCountWithoutSkirts:ge,indexCountWithoutSkirts:a,westIndicesSouthToNorth:e,southIndicesEastToWest:C,eastIndicesNorthToSouth:r,northIndicesWestToEast:o}}(e.buffer,e.relativeToCenter,e.ellipsoid,e.rectangle,e.nativeRectangle,e.exaggeration,e.exaggerationRelativeHeight,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.stride,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}})}); |