/** * Cesium - https://github.com/AnalyticalGraphicsInc/cesium * * Copyright 2011-2017 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 * * * 该版本修改了部分代码,主要是汉化、优化功能、添加接口 等 by 火星科技 http://marsgis.cn * 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/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details. */ define(["./defined-b9ff0e39","./Check-e6691f86","./freezeObject-2d5b18ce","./defaultValue-199f5aa8","./Math-92bd3539","./Cartesian2-8fa798b8","./defineProperties-ae15c9d5","./Transforms-a140c8a7","./RuntimeError-d5522ee3","./WebGLConstants-554ddbe2","./ComponentDatatype-569c1e3e","./GeometryAttribute-928dddaf","./when-c208a7cf","./EncodedCartesian3-e4976669","./IntersectionTests-260c9bf6","./Plane-b9a516bb","./WebMercatorProjection-3d8e7edb","./arrayRemoveDuplicates-1efed288","./ArcType-c72d871a","./EllipsoidRhumbLine-fb5cc30d","./EllipsoidGeodesic-b8e7c0c6"],function(V,e,a,p,He,Be,t,Ve,n,r,Ge,je,i,Ye,G,s,o,j,Y,F,E){"use strict";function l(e){e=p.defaultValue(e,p.defaultValue.EMPTY_OBJECT),this._ellipsoid=p.defaultValue(e.ellipsoid,Be.Ellipsoid.WGS84),this._rectangle=p.defaultValue(e.rectangle,Be.Rectangle.MAX_VALUE),this._projection=new Ve.GeographicProjection(this._ellipsoid),this._numberOfLevelZeroTilesX=p.defaultValue(e.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=p.defaultValue(e.numberOfLevelZeroTilesY,1)}t.defineProperties(l.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}}),l.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<qe?(U=Ue(a,P,K,X,ha),Z=Ue(a,k,G,W,ga)):1===$?(Z=Ue(a,k,G,W,ga),U.x=0,U.y=He.CesiumMath.sign(P.longitude-Math.abs(k.longitude)),U.z=0):(U=Ue(a,P,K,X,ha),Z.x=0,Z.y=He.CesiumMath.sign(P.longitude-k.longitude),Z.z=0)}var ae=Be.Cartesian3.distance(Q,V),te=Ye.EncodedCartesian3.fromCartesian(J,Ta),ne=Be.Cartesian3.subtract(B,J,fa),re=Be.Cartesian3.normalize(ne,va),ie=Be.Cartesian3.subtract(Q,J,ma);ie=Be.Cartesian3.normalize(ie,ie);var se=Be.Cartesian3.cross(re,ie,va);se=Be.Cartesian3.normalize(se,se);var oe=Be.Cartesian3.cross(ie,K,ya);oe=Be.Cartesian3.normalize(oe,oe);var le=Be.Cartesian3.subtract(V,B,wa);le=Be.Cartesian3.normalize(le,le);var ue=Be.Cartesian3.cross(G,le,Ma);ue=Be.Cartesian3.normalize(ue,ue);var ce,Ce,de,pe=ae/x,he=Y/x,ge=0,fe=0,me=0;if(s){ge=Be.Cartesian3.distance(X,W),ce=Ye.EncodedCartesian3.fromCartesian(X,Ea),Ce=Be.Cartesian3.subtract(W,X,_a);var we=(de=Be.Cartesian3.normalize(Ce,Oa)).x;de.x=de.y,de.y=-we,fe=ge/b,me=F/b}for(I=0;I<8;I++){var ve=z+4*I,ye=R+2*I,Me=ve+3,Te=I<4?1:-1,Ee=2===I||3===I||6===I||7===I?1:-1;Be.Cartesian3.pack(te.high,y,ve),y[Me]=ne.x,Be.Cartesian3.pack(te.low,M,ve),M[Me]=ne.y,Be.Cartesian3.pack(oe,T,ve),T[Me]=ne.z,Be.Cartesian3.pack(ue,E,ve),E[Me]=pe*Te,Be.Cartesian3.pack(se,_,ve);var _e=he*Ee;0===_e&&Ee<0&&(_e=9),_[Me]=_e,s&&(u[ve]=ce.high.x,u[ve+1]=ce.high.y,u[ve+2]=ce.low.x,u[ve+3]=ce.low.y,C[ve]=-U.y,C[ve+1]=U.x,C[ve+2]=Z.y,C[ve+3]=-Z.x,c[ve]=Ce.x,c[ve+1]=Ce.y,c[ve+2]=de.x,c[ve+3]=de.y,d[ye]=fe*Te,0===(_e=me*Ee)&&Ee<0&&(_e=9),d[ye+1]=_e)}var Oe=ca,be=Ca,Pe=la,ke=ua,Ae=Be.Rectangle.fromCartographicArray(sa,oa),Le=Fe.getMinimumMaximumHeights(Ae,p),Se=Le.minimumTerrainHeight,Ie=Le.maximumTerrainHeight;q+=Se,q+=Ie,Ze(J,Q,Se,Ie,Oe,Pe),Ze(B,V,Se,Ie,be,ke);var xe=Be.Cartesian3.multiplyByScalar(se,He.CesiumMath.EPSILON5,ba);Be.Cartesian3.add(Oe,xe,Oe),Be.Cartesian3.add(be,xe,be),Be.Cartesian3.add(Pe,xe,Pe),Be.Cartesian3.add(ke,xe,ke),Je(Oe,be),Je(Pe,ke),Be.Cartesian3.pack(Oe,v,D),Be.Cartesian3.pack(be,v,D+3),Be.Cartesian3.pack(ke,v,D+6),Be.Cartesian3.pack(Pe,v,D+9),xe=Be.Cartesian3.multiplyByScalar(se,-2*He.CesiumMath.EPSILON5,ba),Be.Cartesian3.add(Oe,xe,Oe),Be.Cartesian3.add(be,xe,be),Be.Cartesian3.add(Pe,xe,Pe),Be.Cartesian3.add(ke,xe,ke),Je(Oe,be),Je(Pe,ke),Be.Cartesian3.pack(Oe,v,D+12),Be.Cartesian3.pack(be,v,D+15),Be.Cartesian3.pack(ke,v,D+18),Be.Cartesian3.pack(Pe,v,D+21),N+=2,l+=3,R+=16,D+=24,z+=32,Y+=ae,F+=ge}var Ne=l=0;for(o=0;oHe.CesiumMath.PI_OVER_TWO&&(o=!0,s=Be.Cartesian3.subtract(i,t,ce),u=l.cartesianToCartographic(s,le)),u.height=0;var c=e.project(u,r);return(r=Be.Cartesian3.subtract(c,n,r)).z=0,r=Be.Cartesian3.normalize(r,r),o&&Be.Cartesian3.negate(r,r),r}var Ce=new Be.Cartesian3,de=new Be.Cartesian3;function Ze(e,a,t,n,r,i){var s=Be.Cartesian3.subtract(a,e,Ce);Be.Cartesian3.normalize(s,s);var o=t-X,l=Be.Cartesian3.multiplyByScalar(s,o,de);Be.Cartesian3.add(e,l,r);var u=n-W;l=Be.Cartesian3.multiplyByScalar(s,u,de),Be.Cartesian3.add(a,l,i)}var pe=new Be.Cartesian3;function Je(e,a){var t=s.Plane.getPointDistance(K,e),n=s.Plane.getPointDistance(K,a),r=pe;He.CesiumMath.equalsEpsilon(t,0,He.CesiumMath.EPSILON2)?(r=Xe(a,e,r),Be.Cartesian3.multiplyByScalar(r,He.CesiumMath.EPSILON2,r),Be.Cartesian3.add(e,r,e)):He.CesiumMath.equalsEpsilon(n,0,He.CesiumMath.EPSILON2)&&(r=Xe(e,a,r),Be.Cartesian3.multiplyByScalar(r,He.CesiumMath.EPSILON2,r),Be.Cartesian3.add(a,r,a))}function Qe(e,a){var t=Math.abs(e.longitude),n=Math.abs(a.longitude);if(He.CesiumMath.equalsEpsilon(t,He.CesiumMath.PI,He.CesiumMath.EPSILON11)){var r=He.CesiumMath.sign(a.longitude);return e.longitude=r*(t-He.CesiumMath.EPSILON11),1}if(He.CesiumMath.equalsEpsilon(n,He.CesiumMath.PI,He.CesiumMath.EPSILON11)){var i=He.CesiumMath.sign(e.longitude);return a.longitude=i*(n-He.CesiumMath.EPSILON11),2}return 0}var Ke=new Be.Cartographic,$e=new Be.Cartographic,ea=new Be.Cartesian3,aa=new Be.Cartesian3,ta=new Be.Cartesian3,na=new Be.Cartesian3,ra=new Be.Cartesian3,ia=new Be.Cartesian3,sa=[Ke,$e],oa=new Be.Rectangle,la=new Be.Cartesian3,ua=new Be.Cartesian3,ca=new Be.Cartesian3,Ca=new Be.Cartesian3,da=new Be.Cartesian3,pa=new Be.Cartesian3,ha=new Be.Cartesian3,ga=new Be.Cartesian3,fa=new Be.Cartesian3,ma=new Be.Cartesian3,wa=new Be.Cartesian3,va=new Be.Cartesian3,ya=new Be.Cartesian3,Ma=new Be.Cartesian3,Ta=new Ye.EncodedCartesian3,Ea=new Ye.EncodedCartesian3,_a=new Be.Cartesian3,Oa=new Be.Cartesian3,ba=new Be.Cartesian3,Pa=[new Ve.BoundingSphere,new Ve.BoundingSphere],ka=[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],Aa=ka.length;function La(e){return new je.GeometryAttribute({componentDatatype:Ge.ComponentDatatype.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}return T._projectNormal=Ue,function(e,a){return Fe.initialize().then(function(){return V.defined(a)&&(e=T.unpack(e,a)),T.createGeometry(e)})}});