define(["./BoundingSphere-561b54d0","./buildModuleUrl-3addfe33","./Cartesian2-47311507","./Cartographic-3309dd0d","./Check-7b2a090c","./when-b60132fc","./Math-119be1a3","./ArcType-29cf2197","./arrayRemoveDuplicates-d2f048c5","./ComponentDatatype-c140a87d","./EllipsoidGeodesic-0f19ac62","./EllipsoidRhumbLine-ed1a6bf4","./EncodedCartesian3-f1396b05","./GeometryAttribute-3a42bbdc","./IntersectionTests-0c6d0a14","./Plane-097b3a8f","./Transforms-cb0006b0","./WebMercatorProjection-01b1b5e7","./Cartesian4-3ca25aab","./RuntimeError-4a5c8994","./WebGLConstants-4ae0db90","./PrimitiveType-39acab88","./FeatureDetection-c3b71206"],(function(e,a,t,i,n,r,s,o,l,u,c,h,C,d,p,g,m,f,v,w,y,_,T){"use strict";function M(a){a=r.defaultValue(a,{}),this._ellipsoid=r.defaultValue(a.ellipsoid,t.Ellipsoid.WGS84),this._rectangle=r.defaultValue(a.rectangle,t.Rectangle.MAX_VALUE),this._projection=new e.GeographicProjection(this._ellipsoid),this._numberOfLevelZeroTilesX=r.defaultValue(a.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=r.defaultValue(a.numberOfLevelZeroTilesY,1),this._customDPI=a.customDPI,this._scaleDenominators=a.scaleDenominators,this._tileWidth=r.defaultValue(a.tileWidth,256),this._tileHeight=r.defaultValue(a.tileHeight,256),this._beginLevel=r.defaultValue(a.beginLevel,0)}Object.defineProperties(M.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}},beginLevel:{get:function(){return this._beginLevel}}}),M.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<=o&&(d=o-1);var p=(n.north-e.latitude)/c|0;return p>=l&&(p=l-1),r.defined(i)?(i.x=d,i.y=p,i):new t.Cartesian2(d,p)}},M.prototype.calculateResolution=function(e){var a=.0254*this._scaleDenominators[e-this._beginLevel]/this._customDPI.x,i=.0254*this._scaleDenominators[e-this._beginLevel]/this._customDPI.y,n=t.Ellipsoid.WGS84.maximumRadius;return new t.Cartesian2(a/n,i/n)};var E=new i.Cartesian3,b=new i.Cartesian3,P=new i.Cartographic,O=new i.Cartesian3,I=new i.Cartesian3,L=new e.BoundingSphere,S=new M,D=[new i.Cartographic,new i.Cartographic,new i.Cartographic,new i.Cartographic],k=new t.Cartesian2,A={};function N(e){i.Cartographic.fromRadians(e.east,e.north,0,D[0]),i.Cartographic.fromRadians(e.west,e.north,0,D[1]),i.Cartographic.fromRadians(e.east,e.south,0,D[2]),i.Cartographic.fromRadians(e.west,e.south,0,D[3]);var a,t=0,n=0,r=0,s=0,o=A._terrainHeightsMaxLevel;for(a=0;a<=o;++a){for(var l=!1,u=0;u<4;++u){var c=D[u];if(S.positionToTileXY(c,a,k),0===u)r=k.x,s=k.y;else if(r!==k.x||s!==k.y){l=!0;break}}if(l)break;t=r,n=s}if(0!==a)return{x:t,y:n,level:a>o?o:a-1}}A.initialize=function(){var e=A._initPromise;return r.defined(e)||(e=a.Resource.fetchJson(a.buildModuleUrl("Assets/approximateTerrainHeights.json")).then((function(e){A._terrainHeights=e})),A._initPromise=e),e},A.getMinimumMaximumHeights=function(e,a){a=r.defaultValue(a,t.Ellipsoid.WGS84);var n=N(e),s=A._defaultMinTerrainHeight,o=A._defaultMaxTerrainHeight;if(r.defined(n)){var l=n.level+"-"+n.x+"-"+n.y,u=A._terrainHeights[l];r.defined(u)&&(s=u[0],o=u[1]),a.cartographicToCartesian(t.Rectangle.northeast(e,P),E),a.cartographicToCartesian(t.Rectangle.southwest(e,P),b),i.Cartesian3.midpoint(b,E,O);var c=a.scaleToGeodeticSurface(O,I);if(r.defined(c)){var h=i.Cartesian3.distance(O,c);s=Math.min(s,-h)}else s=A._defaultMinTerrainHeight}return{minimumTerrainHeight:s=Math.max(A._defaultMinTerrainHeight,s),maximumTerrainHeight:o}},A.getBoundingSphere=function(a,i){i=r.defaultValue(i,t.Ellipsoid.WGS84);var n=N(a),s=A._defaultMaxTerrainHeight;if(r.defined(n)){var o=n.level+"-"+n.x+"-"+n.y,l=A._terrainHeights[o];r.defined(l)&&(s=l[1])}var u=e.BoundingSphere.fromRectangle3D(a,i,0);return e.BoundingSphere.fromRectangle3D(a,i,s,L),e.BoundingSphere.union(u,L,u)},A._terrainHeightsMaxLevel=6,A._defaultMaxTerrainHeight=9e3,A._defaultMinTerrainHeight=-1e5,A._terrainHeights=void 0,A._initPromise=void 0,Object.defineProperties(A,{initialized:{get:function(){return r.defined(A._terrainHeights)}}});var x=[e.GeographicProjection,f.WebMercatorProjection],R=x.length,H=Math.cos(s.CesiumMath.toRadians(30)),V=Math.cos(s.CesiumMath.toRadians(150));function z(e){var a=(e=r.defaultValue(e,r.defaultValue.EMPTY_OBJECT)).positions;this.width=r.defaultValue(e.width,1),this._positions=a,this.granularity=r.defaultValue(e.granularity,9999),this.loop=r.defaultValue(e.loop,!1),this.arcType=r.defaultValue(e.arcType,o.ArcType.GEODESIC),this._ellipsoid=r.defaultValue(e.ellipsoid,t.Ellipsoid.WGS84),this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(z.prototype,{packedLength:{get:function(){return 1+3*this._positions.length+1+1+1+t.Ellipsoid.packedLength+1+1}}}),z.setProjectionAndEllipsoid=function(e,a){for(var t=0,i=0;i65535?new Uint32Array(E):new Uint16Array(E),P=new Float64Array(3*T),O=new Float32Array(M),I=new Float32Array(M),L=new Float32Array(M),S=new Float32Array(M),D=new Float32Array(M);h&&(m=new Float32Array(M),f=new Float32Array(M),v=new Float32Array(M),w=new Float32Array(2*T));var k=c.length/2,N=0,x=Le;x.height=0;var R=Se;R.height=0;var V=De,z=ke;if(h)for(g=0,p=1;pH?(ie=Te(n,x,oe,ae,Ye),ne=Te(n,R,Q,te,Xe)):1===le?(ne=Te(n,R,Q,te,Xe),ie.x=0,ie.y=s.CesiumMath.sign(x.longitude-Math.abs(R.longitude)),ie.z=0):(ie=Te(n,x,oe,ae,Ye),ne.x=0,ne.y=s.CesiumMath.sign(x.longitude-R.longitude),ne.z=0)}var ce=i.Cartesian3.distance(se,Z),he=C.EncodedCartesian3.fromCartesian(re,$e),Ce=i.Cartesian3.subtract(U,re,qe),de=i.Cartesian3.normalize(Ce,Qe),pe=i.Cartesian3.subtract(se,re,Ue);pe=i.Cartesian3.normalize(pe,pe);var ge=i.Cartesian3.cross(de,pe,Qe);ge=i.Cartesian3.normalize(ge,ge);var me=i.Cartesian3.cross(pe,oe,Je);me=i.Cartesian3.normalize(me,me);var fe=i.Cartesian3.subtract(Z,U,Ze);fe=i.Cartesian3.normalize(fe,fe);var we=i.Cartesian3.cross(Q,fe,Ke);we=i.Cartesian3.normalize(we,we);var ye,_e,Me,Ee=ce/G,Pe=K/G,la=0,ua=0,ca=0;if(h){la=i.Cartesian3.distance(ae,te),ye=C.EncodedCartesian3.fromCartesian(ae,ea),_e=i.Cartesian3.subtract(te,ae,aa);var ha=(Me=i.Cartesian3.normalize(_e,ta)).x;Me.x=Me.y,Me.y=-ha,ua=la/N,ca=$/N}for(B=0;B<8;B++){var Ca=X+4*B,da=F+2*B,pa=Ca+3,ga=B<4?1:-1,ma=2===B||3===B||6===B||7===B?1:-1;i.Cartesian3.pack(he.high,O,Ca),O[pa]=Ce.x,i.Cartesian3.pack(he.low,I,Ca),I[pa]=Ce.y,i.Cartesian3.pack(me,L,Ca),L[pa]=Ce.z,i.Cartesian3.pack(we,S,Ca),S[pa]=Ee*ga,i.Cartesian3.pack(ge,D,Ca);var fa=Pe*ma;0===fa&&ma<0&&(fa=Number.POSITIVE_INFINITY),D[pa]=fa,h&&(m[Ca]=ye.high.x,m[Ca+1]=ye.high.y,m[Ca+2]=ye.low.x,m[Ca+3]=ye.low.y,v[Ca]=-ie.y,v[Ca+1]=ie.x,v[Ca+2]=ne.y,v[Ca+3]=-ne.x,f[Ca]=_e.x,f[Ca+1]=_e.y,f[Ca+2]=Me.x,f[Ca+3]=Me.y,w[da]=ua*ga,0===(fa=ca*ma)&&ma<0&&(fa=Number.POSITIVE_INFINITY),w[da+1]=fa)}var va=Be,wa=Ge,ya=ze,_a=je,Ta=t.Rectangle.fromCartographicArray(He,Ve),Ma=A.getMinimumMaximumHeights(Ta,y),Ea=Ma.minimumTerrainHeight,ba=Ma.maximumTerrainHeight;ee+=Ea,ee+=ba,be(re,se,Ea,ba,va,ya),be(U,Z,Ea,ba,wa,_a);var Pa=i.Cartesian3.multiplyByScalar(ge,s.CesiumMath.EPSILON5,ia);i.Cartesian3.add(va,Pa,va),i.Cartesian3.add(wa,Pa,wa),i.Cartesian3.add(ya,Pa,ya),i.Cartesian3.add(_a,Pa,_a),Oe(va,wa),Oe(ya,_a),i.Cartesian3.pack(va,P,Y),i.Cartesian3.pack(wa,P,Y+3),i.Cartesian3.pack(_a,P,Y+6),i.Cartesian3.pack(ya,P,Y+9),Pa=i.Cartesian3.multiplyByScalar(ge,-2*s.CesiumMath.EPSILON5,ia),i.Cartesian3.add(va,Pa,va),i.Cartesian3.add(wa,Pa,wa),i.Cartesian3.add(ya,Pa,ya),i.Cartesian3.add(_a,Pa,_a),Oe(va,wa),Oe(ya,_a),i.Cartesian3.pack(va,P,Y+12),i.Cartesian3.pack(wa,P,Y+15),i.Cartesian3.pack(_a,P,Y+18),i.Cartesian3.pack(ya,P,Y+21),W+=2,g+=3,F+=16,Y+=24,X+=32,K+=ce,$+=la}g=0;var Oa=0;for(p=0;p<_;p++){for(B=0;BH||ls.CesiumMath.PI_OVER_TWO&&(u=!0,l=i.Cartesian3.subtract(o,t,_e),h=c.cartesianToCartographic(l,we)),h.height=0;var C=e.project(h,r);return(r=i.Cartesian3.subtract(C,n,r)).z=0,r=i.Cartesian3.normalize(r,r),u&&i.Cartesian3.negate(r,r),r}var Me=new i.Cartesian3,Ee=new i.Cartesian3;function be(e,a,t,n,r,s){var o=i.Cartesian3.subtract(a,e,Me);i.Cartesian3.normalize(o,o);var l=t-0,u=i.Cartesian3.multiplyByScalar(o,l,Ee);i.Cartesian3.add(e,u,r);var c=n-1e3;u=i.Cartesian3.multiplyByScalar(o,c,Ee),i.Cartesian3.add(a,u,s)}var Pe=new i.Cartesian3;function Oe(e,a){var t=g.Plane.getPointDistance(re,e),n=g.Plane.getPointDistance(re,a),r=Pe;s.CesiumMath.equalsEpsilon(t,0,s.CesiumMath.EPSILON2)?(r=J(a,e,r),i.Cartesian3.multiplyByScalar(r,s.CesiumMath.EPSILON2,r),i.Cartesian3.add(e,r,e)):s.CesiumMath.equalsEpsilon(n,0,s.CesiumMath.EPSILON2)&&(r=J(e,a,r),i.Cartesian3.multiplyByScalar(r,s.CesiumMath.EPSILON2,r),i.Cartesian3.add(a,r,a))}function Ie(e,a){var t=Math.abs(e.longitude),i=Math.abs(a.longitude);if(s.CesiumMath.equalsEpsilon(t,s.CesiumMath.PI,s.CesiumMath.EPSILON11)){var n=s.CesiumMath.sign(a.longitude);return e.longitude=n*(t-s.CesiumMath.EPSILON11),1}if(s.CesiumMath.equalsEpsilon(i,s.CesiumMath.PI,s.CesiumMath.EPSILON11)){var r=s.CesiumMath.sign(e.longitude);return a.longitude=r*(i-s.CesiumMath.EPSILON11),2}return 0}var Le=new i.Cartographic,Se=new i.Cartographic,De=new i.Cartesian3,ke=new i.Cartesian3,Ae=new i.Cartesian3,Ne=new i.Cartesian3,xe=new i.Cartesian3,Re=new i.Cartesian3,He=[Le,Se],Ve=new t.Rectangle,ze=new i.Cartesian3,je=new i.Cartesian3,Be=new i.Cartesian3,Ge=new i.Cartesian3,We=new i.Cartesian3,Fe=new i.Cartesian3,Ye=new i.Cartesian3,Xe=new i.Cartesian3,qe=new i.Cartesian3,Ue=new i.Cartesian3,Ze=new i.Cartesian3,Qe=new i.Cartesian3,Je=new i.Cartesian3,Ke=new i.Cartesian3,$e=new C.EncodedCartesian3,ea=new C.EncodedCartesian3,aa=new i.Cartesian3,ta=new i.Cartesian3,ia=new i.Cartesian3,na=[new e.BoundingSphere,new e.BoundingSphere],ra=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],sa=ra.length;function oa(e){return new d.GeometryAttribute({componentDatatype:u.ComponentDatatype.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}return z._projectNormal=Te,function(e,a){return A.initialize().then((function(){return r.defined(a)&&(e=z.unpack(e,a)),z.createGeometry(e)}))}}));