/**
* 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(["exports","./when-8d13db60","./Check-70bec281","./Math-61ede240","./Cartographic-f27b0939"],function(e,l,p,C,s){function n(e,t,a,n){t=l.defaultValue(t,0),a=l.defaultValue(a,0),n=l.defaultValue(n,0),p.Check.typeOf.number.greaterThanOrEquals("x",t,0),p.Check.typeOf.number.greaterThanOrEquals("y",a,0),p.Check.typeOf.number.greaterThanOrEquals("z",n,0),C.CesiumMath.equalsEpsilon(n,6356752.314245179,C.CesiumMath.EPSILON10)&&(C.CesiumMath.Radius=n),e._radii=new s.Cartesian3(t,a,n),e._radiiSquared=new s.Cartesian3(t*t,a*a,n*n),e._radiiToTheFourth=new s.Cartesian3(t*t*t*t,a*a*a*a,n*n*n*n),e._oneOverRadii=new s.Cartesian3(0===t?0:1/t,0===a?0:1/a,0===n?0:1/n),e._oneOverRadiiSquared=new s.Cartesian3(0===t?0:1/(t*t),0===a?0:1/(a*a),0===n?0:1/(n*n)),e._minimumRadius=Math.min(t,a,n),e._maximumRadius=Math.max(t,a,n),e._centerToleranceSquared=C.CesiumMath.EPSILON1,0!==e._radiiSquared.z&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function m(e,t,a){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,n(this,e,t,a)}Object.defineProperties(m.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}}),m.clone=function(e,t){if(l.defined(e)){var a=e._radii;return l.defined(t)?(s.Cartesian3.clone(a,t._radii),s.Cartesian3.clone(e._radiiSquared,t._radiiSquared),s.Cartesian3.clone(e._radiiToTheFourth,t._radiiToTheFourth),s.Cartesian3.clone(e._oneOverRadii,t._oneOverRadii),s.Cartesian3.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new m(a.x,a.y,a.z)}},m.fromCartesian3=function(e,t){return l.defined(t)||(t=new m),l.defined(e)&&n(t,e.x,e.y,e.z),t},m.WGS84=Object.freeze(new m(6378137,6378137,C.CesiumMath.Radius)),m.XIAN80=Object.freeze(new m(6378140,6378140,6356755.29)),m.CGCS2000=Object.freeze(new m(6378137,6378137,6356752.31)),m.UNIT_SPHERE=Object.freeze(new m(1,1,1)),m.MOON=Object.freeze(new m(C.CesiumMath.LUNAR_RADIUS,C.CesiumMath.LUNAR_RADIUS,C.CesiumMath.LUNAR_RADIUS)),m.prototype.clone=function(e){return m.clone(this,e)},m.packedLength=s.Cartesian3.packedLength,m.pack=function(e,t,a){return p.Check.typeOf.object("value",e),p.Check.defined("array",t),a=l.defaultValue(a,0),s.Cartesian3.pack(e._radii,t,a),t},m.unpack=function(e,t,a){p.Check.defined("array",e),t=l.defaultValue(t,0);var n=s.Cartesian3.unpack(e,t);return m.fromCartesian3(n,a)},m.prototype.geocentricSurfaceNormal=s.Cartesian3.normalize,m.prototype.geodeticSurfaceNormalCartographic=function(e,t){p.Check.typeOf.object("cartographic",e);var a=e.longitude,n=e.latitude,r=Math.cos(n),i=r*Math.cos(a),o=r*Math.sin(a),u=Math.sin(n);return l.defined(t)||(t=new s.Cartesian3),t.x=i,t.y=o,t.z=u,s.Cartesian3.normalize(t,t)},m.prototype.geodeticSurfaceNormal=function(e,t){return l.defined(t)||(t=new s.Cartesian3),t=s.Cartesian3.multiplyComponents(e,this._oneOverRadiiSquared,t),s.Cartesian3.normalize(t,t)};var i=new s.Cartesian3,o=new s.Cartesian3;m.prototype.cartographicToCartesian=function(e,t){var a=i,n=o;this.geodeticSurfaceNormalCartographic(e,a),s.Cartesian3.multiplyComponents(this._radiiSquared,a,n);var r=Math.sqrt(s.Cartesian3.dot(a,n));return s.Cartesian3.divideByScalar(n,r,n),s.Cartesian3.multiplyByScalar(a,e.height,a),l.defined(t)||(t=new s.Cartesian3),s.Cartesian3.add(n,a,t)},m.prototype.cartographicArrayToCartesianArray=function(e,t){p.Check.defined("cartographics",e);var a=e.length;l.defined(t)?t.length=a:t=new Array(a);for(var n=0;n=this._radii.z-t))return a},Object.defineProperties(y.prototype,{width:{get:function(){return y.computeWidth(this)}},height:{get:function(){return y.computeHeight(this)}}}),y.packedLength=4,y.pack=function(e,t,a){return p.Check.typeOf.object("value",e),p.Check.defined("array",t),a=l.defaultValue(a,0),t[a++]=e.west,t[a++]=e.south,t[a++]=e.east,t[a]=e.north,t},y.unpack=function(e,t,a){return p.Check.defined("array",e),t=l.defaultValue(t,0),l.defined(a)||(a=new y),a.west=e[t++],a.south=e[t++],a.east=e[t++],a.north=e[t],a},y.computeWidth=function(e){p.Check.typeOf.object("rectangle",e);var t=e.east,a=e.west;return tC.CesiumMath.PI&&(n-=C.CesiumMath.TWO_PI),a>C.CesiumMath.PI&&(a-=C.CesiumMath.TWO_PI)),l.defined(t)?(t.west=a,t.south=o,t.east=n,t.north=u,t):new y(a,o,n,u)},y.fromCartesianArray=function(e,t,a){p.Check.defined("cartesians",e),t=l.defaultValue(t,m.WGS84);for(var n=Number.MAX_VALUE,r=-Number.MAX_VALUE,i=Number.MAX_VALUE,o=-Number.MAX_VALUE,u=Number.MAX_VALUE,s=-Number.MAX_VALUE,h=0,c=e.length;hC.CesiumMath.PI&&(r-=C.CesiumMath.TWO_PI),n>C.CesiumMath.PI&&(n-=C.CesiumMath.TWO_PI)),l.defined(a)?(a.west=n,a.south=u,a.east=r,a.north=s,a):new y(n,u,r,s)},y.clone=function(e,t){if(l.defined(e))return l.defined(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new y(e.west,e.south,e.east,e.north)},y.equalsEpsilon=function(e,t,a){return p.Check.typeOf.number("absoluteEpsilon",a),e===t||l.defined(e)&&l.defined(t)&&Math.abs(e.west-t.west)<=a&&Math.abs(e.south-t.south)<=a&&Math.abs(e.east-t.east)<=a&&Math.abs(e.north-t.north)<=a},y.prototype.clone=function(e){return y.clone(this,e)},y.prototype.equals=function(e){return y.equals(this,e)},y.equals=function(e,t){return e===t||l.defined(e)&&l.defined(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north},y.prototype.equalsEpsilon=function(e,t){return p.Check.typeOf.number("epsilon",t),y.equalsEpsilon(this,e,t)},y.validate=function(e){p.Check.typeOf.object("rectangle",e);var t=e.north;p.Check.typeOf.number.greaterThanOrEquals("north",t,-C.CesiumMath.PI_OVER_TWO),p.Check.typeOf.number.lessThanOrEquals("north",t,C.CesiumMath.PI_OVER_TWO);var a=e.south;p.Check.typeOf.number.greaterThanOrEquals("south",a,-C.CesiumMath.PI_OVER_TWO),p.Check.typeOf.number.lessThanOrEquals("south",a,C.CesiumMath.PI_OVER_TWO);var n=e.west;p.Check.typeOf.number.greaterThanOrEquals("west",n,-Math.PI),p.Check.typeOf.number.lessThanOrEquals("west",n,Math.PI);var r=e.east;p.Check.typeOf.number.greaterThanOrEquals("east",r,-Math.PI),p.Check.typeOf.number.lessThanOrEquals("east",r,Math.PI)},y.southwest=function(e,t){return p.Check.typeOf.object("rectangle",e),l.defined(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new s.Cartographic(e.west,e.south)},y.northwest=function(e,t){return p.Check.typeOf.object("rectangle",e),l.defined(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new s.Cartographic(e.west,e.north)},y.northeast=function(e,t){return p.Check.typeOf.object("rectangle",e),l.defined(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new s.Cartographic(e.east,e.north)},y.southeast=function(e,t){return p.Check.typeOf.object("rectangle",e),l.defined(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new s.Cartographic(e.east,e.south)},y.center=function(e,t){p.Check.typeOf.object("rectangle",e);var a=e.east,n=e.west;a=e.south&&n<=e.north};var f=new s.Cartographic;y.subsample=function(e,t,a,n){p.Check.typeOf.object("rectangle",e),t=l.defaultValue(t,m.WGS84),a=l.defaultValue(a,0),l.defined(n)||(n=[]);var r=0,i=e.north,o=e.south,u=e.east,s=e.west,h=f;h.height=a,h.longitude=s,h.latitude=i,n[r]=t.cartographicToCartesian(h,n[r]),r++,h.longitude=u,n[r]=t.cartographicToCartesian(h,n[r]),r++,h.latitude=o,n[r]=t.cartographicToCartesian(h,n[r]),r++,h.longitude=s,n[r]=t.cartographicToCartesian(h,n[r]),r++,h.latitude=i<0?i:0