/** * Cesium - https://github.com/CesiumGS/cesium * * Copyright 2011-2020 Cesium Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Columbus View (Pat. Pend.) * * Portions licensed separately. * See https://github.com/CesiumGS/cesium/blob/master/LICENSE.md for full licensing details. */ define(["./when-8d13db60","./Check-70bec281","./Math-61ede240","./Cartographic-f27b0939","./Cartesian2-09435a6c","./BoundingSphere-c409f092","./Cartesian4-5af5bb24","./RuntimeError-ba10bc3e","./WebGLConstants-4c11ee5f","./ComponentDatatype-5862616f","./GeometryAttribute-2243653a","./PrimitiveType-97893bc7","./FeatureDetection-7bd32c34","./Transforms-1509c877","./buildModuleUrl-392763e2","./EncodedCartesian3-87cd0c1f","./IntersectionTests-dbfba52c","./Plane-2bcb9154","./WebMercatorProjection-bc9aa7fe","./arrayRemoveDuplicates-2869246d","./ArcType-66bc286a","./EllipsoidRhumbLine-6ca4b1e6","./EllipsoidGeodesic-db2069b3"],function(B,p,Ve,ze,Be,Ge,e,a,t,je,We,i,n,c,r,Ye,G,C,s,j,W,Y,E){function o(e){e=B.defaultValue(e,{}),this._ellipsoid=B.defaultValue(e.ellipsoid,Be.Ellipsoid.WGS84),this._rectangle=B.defaultValue(e.rectangle,Be.Rectangle.MAX_VALUE),this._projection=new Ge.GeographicProjection(this._ellipsoid),this._numberOfLevelZeroTilesX=B.defaultValue(e.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=B.defaultValue(e.numberOfLevelZeroTilesY,1),this._customDPI=e.customDPI,this._scaleDenominators=e.scaleDenominators,this._tileWidth=B.defaultValue(e.tileWidth,256),this._tileHeight=B.defaultValue(e.tileHeight,256),this._beginLevel=B.defaultValue(e.beginLevel,0)}Object.defineProperties(o.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}}}),o.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<qe?(X=Ze(a,O,K,q,ga),Z=Ze(a,I,G,U,fa)):1===$?(Z=Ze(a,I,G,U,fa),X.x=0,X.y=Ve.CesiumMath.sign(O.longitude-Math.abs(I.longitude)),X.z=0):(X=Ze(a,O,K,q,ga),Z.x=0,Z.y=Ve.CesiumMath.sign(O.longitude-I.longitude),Z.z=0)}var ae=ze.Cartesian3.distance(J,B),te=Ye.EncodedCartesian3.fromCartesian(Q,Ea),ie=ze.Cartesian3.subtract(z,Q,ma),ne=ze.Cartesian3.normalize(ie,ya),re=ze.Cartesian3.subtract(J,Q,va);re=ze.Cartesian3.normalize(re,re);var se=ze.Cartesian3.cross(ne,re,ya);se=ze.Cartesian3.normalize(se,se);var oe=ze.Cartesian3.cross(re,K,_a);oe=ze.Cartesian3.normalize(oe,oe);var le=ze.Cartesian3.subtract(B,z,wa);le=ze.Cartesian3.normalize(le,le);var ue=ze.Cartesian3.cross(G,le,Ta);ue=ze.Cartesian3.normalize(ue,ue);var ce,he,Ce,de=ae/S,pe=W/S,ge=0,fe=0,me=0;if(s){ge=ze.Cartesian3.distance(q,U),ce=Ye.EncodedCartesian3.fromCartesian(q,Ma),he=ze.Cartesian3.subtract(U,q,ba);var ve=(Ce=ze.Cartesian3.normalize(he,Pa)).x;Ce.x=Ce.y,Ce.y=-ve,fe=ge/P,me=Y/P}for(k=0;k<8;k++){var we=H+4*k,ye=N+2*k,_e=we+3,Te=k<4?1:-1,Ee=2===k||3===k||6===k||7===k?1:-1;ze.Cartesian3.pack(te.high,y,we),y[_e]=ie.x,ze.Cartesian3.pack(te.low,_,we),_[_e]=ie.y,ze.Cartesian3.pack(oe,T,we),T[_e]=ie.z,ze.Cartesian3.pack(ue,E,we),E[_e]=de*Te,ze.Cartesian3.pack(se,M,we);var Me=pe*Ee;0===Me&&Ee<0&&(Me=Number.POSITIVE_INFINITY),M[_e]=Me,s&&(u[we]=ce.high.x,u[we+1]=ce.high.y,u[we+2]=ce.low.x,u[we+3]=ce.low.y,h[we]=-X.y,h[we+1]=X.x,h[we+2]=Z.y,h[we+3]=-Z.x,c[we]=he.x,c[we+1]=he.y,c[we+2]=Ce.x,c[we+3]=Ce.y,C[ye]=fe*Te,0===(Me=me*Ee)&&Ee<0&&(Me=Number.POSITIVE_INFINITY),C[ye+1]=Me)}var be=ha,Pe=Ca,Oe=ua,Ie=ca,Ae=Be.Rectangle.fromCartographicArray(oa,la),De=Fe.getMinimumMaximumHeights(Ae,d),Le=De.minimumTerrainHeight,ke=De.maximumTerrainHeight;F+=Le,F+=ke,Qe(Q,J,Le,ke,be,Oe),Qe(z,B,Le,ke,Pe,Ie);var Se=ze.Cartesian3.multiplyByScalar(se,Ve.CesiumMath.EPSILON5,Oa);ze.Cartesian3.add(be,Se,be),ze.Cartesian3.add(Pe,Se,Pe),ze.Cartesian3.add(Oe,Se,Oe),ze.Cartesian3.add(Ie,Se,Ie),Je(be,Pe),Je(Oe,Ie),ze.Cartesian3.pack(be,w,R),ze.Cartesian3.pack(Pe,w,R+3),ze.Cartesian3.pack(Ie,w,R+6),ze.Cartesian3.pack(Oe,w,R+9),Se=ze.Cartesian3.multiplyByScalar(se,-2*Ve.CesiumMath.EPSILON5,Oa),ze.Cartesian3.add(be,Se,be),ze.Cartesian3.add(Pe,Se,Pe),ze.Cartesian3.add(Oe,Se,Oe),ze.Cartesian3.add(Ie,Se,Ie),Je(be,Pe),Je(Oe,Ie),ze.Cartesian3.pack(be,w,R+12),ze.Cartesian3.pack(Pe,w,R+15),ze.Cartesian3.pack(Ie,w,R+18),ze.Cartesian3.pack(Oe,w,R+21),x+=2,l+=3,N+=16,R+=24,H+=32,W+=ae,Y+=ge}var xe=l=0;for(o=0;oVe.CesiumMath.PI_OVER_TWO&&(o=!0,s=ze.Cartesian3.subtract(r,t,Ce),u=l.cartesianToCartographic(s,ce)),u.height=0;var c=e.project(u,n);return(n=ze.Cartesian3.subtract(c,i,n)).z=0,n=ze.Cartesian3.normalize(n,n),o&&ze.Cartesian3.negate(n,n),n}var de=new ze.Cartesian3,pe=new ze.Cartesian3;function Qe(e,a,t,i,n,r){var s=ze.Cartesian3.subtract(a,e,de);ze.Cartesian3.normalize(s,s);var o=t-q,l=ze.Cartesian3.multiplyByScalar(s,o,pe);ze.Cartesian3.add(e,l,n);var u=i-U;l=ze.Cartesian3.multiplyByScalar(s,u,pe),ze.Cartesian3.add(a,l,r)}var ge=new ze.Cartesian3;function Je(e,a){var t=C.Plane.getPointDistance(K,e),i=C.Plane.getPointDistance(K,a),n=ge;Ve.CesiumMath.equalsEpsilon(t,0,Ve.CesiumMath.EPSILON2)?(n=Ue(a,e,n),ze.Cartesian3.multiplyByScalar(n,Ve.CesiumMath.EPSILON2,n),ze.Cartesian3.add(e,n,e)):Ve.CesiumMath.equalsEpsilon(i,0,Ve.CesiumMath.EPSILON2)&&(n=Ue(e,a,n),ze.Cartesian3.multiplyByScalar(n,Ve.CesiumMath.EPSILON2,n),ze.Cartesian3.add(a,n,a))}function Ke(e,a){var t=Math.abs(e.longitude),i=Math.abs(a.longitude);if(Ve.CesiumMath.equalsEpsilon(t,Ve.CesiumMath.PI,Ve.CesiumMath.EPSILON11)){var n=Ve.CesiumMath.sign(a.longitude);return e.longitude=n*(t-Ve.CesiumMath.EPSILON11),1}if(Ve.CesiumMath.equalsEpsilon(i,Ve.CesiumMath.PI,Ve.CesiumMath.EPSILON11)){var r=Ve.CesiumMath.sign(e.longitude);return a.longitude=r*(i-Ve.CesiumMath.EPSILON11),2}return 0}var $e=new ze.Cartographic,ea=new ze.Cartographic,aa=new ze.Cartesian3,ta=new ze.Cartesian3,ia=new ze.Cartesian3,na=new ze.Cartesian3,ra=new ze.Cartesian3,sa=new ze.Cartesian3,oa=[$e,ea],la=new Be.Rectangle,ua=new ze.Cartesian3,ca=new ze.Cartesian3,ha=new ze.Cartesian3,Ca=new ze.Cartesian3,da=new ze.Cartesian3,pa=new ze.Cartesian3,ga=new ze.Cartesian3,fa=new ze.Cartesian3,ma=new ze.Cartesian3,va=new ze.Cartesian3,wa=new ze.Cartesian3,ya=new ze.Cartesian3,_a=new ze.Cartesian3,Ta=new ze.Cartesian3,Ea=new Ye.EncodedCartesian3,Ma=new Ye.EncodedCartesian3,ba=new ze.Cartesian3,Pa=new ze.Cartesian3,Oa=new ze.Cartesian3,Ia=[new Ge.BoundingSphere,new Ge.BoundingSphere],Aa=[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],Da=Aa.length;function La(e){return new We.GeometryAttribute({componentDatatype:je.ComponentDatatype.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}return M._projectNormal=Ze,function(e,a){return Fe.initialize().then(function(){return B.defined(a)&&(e=M.unpack(e,a)),M.createGeometry(e)})}});