Newer
Older
smartwell_front_dz / smartwell / mars3d-cesium / Workers / EllipsoidRhumbLine-248c8a1e.js
wangxitong on 11 Sep 2023 8 KB first commit
/**
 * @license
 * Cesium - https://github.com/CesiumGS/cesium
 * Version 1.96.6
 *
 * Copyright 2011-2022 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/main/LICENSE.md for full licensing details.
 */
define(["exports","./Matrix2-4706dd70","./RuntimeError-a977b8e0","./defaultValue-028a8a27","./ComponentDatatype-438cad2a"],(function(t,i,e,a,n){"use strict";function s(t,i,e){if(0===t)return i*e;const a=t*t,n=a*a,s=n*a,h=s*a,u=h*a,o=u*a,d=e,r=Math.sin(2*d),l=Math.sin(4*d),c=Math.sin(6*d),M=Math.sin(8*d),m=Math.sin(10*d),_=Math.sin(12*d);return i*((1-a/4-3*n/64-5*s/256-175*h/16384-441*u/65536-4851*o/1048576)*d-(3*a/8+3*n/32+45*s/1024+105*h/4096+2205*u/131072+6237*o/524288)*r+(15*n/256+45*s/1024+525*h/16384+1575*u/65536+155925*o/8388608)*l-(35*s/3072+175*h/12288+3675*u/262144+13475*o/1048576)*c+(315*h/131072+2205*u/524288+43659*o/8388608)*M-(693*u/1310720+6237*o/5242880)*m+1001*o/8388608*_)}function h(t,i,e){const a=t/e;if(0===i)return a;const n=a*a,s=n*a,h=s*a,u=i,o=u*u,d=o*o,r=d*o,l=r*o,c=l*o,M=c*o,m=Math.sin(2*a),_=Math.cos(2*a),g=Math.sin(4*a),p=Math.cos(4*a),f=Math.sin(6*a),C=Math.cos(6*a),P=Math.sin(8*a),E=Math.cos(8*a),O=Math.sin(10*a),y=Math.cos(10*a),I=Math.sin(12*a);return a+a*o/4+7*a*d/64+15*a*r/256+579*a*l/16384+1515*a*c/65536+16837*a*M/1048576+(3*a*d/16+45*a*r/256-a*(32*n-561)*l/4096-a*(232*n-1677)*c/16384+a*(399985-90560*n+512*h)*M/5242880)*_+(21*a*r/256+483*a*l/4096-a*(224*n-1969)*c/16384-a*(33152*n-112599)*M/1048576)*p+(151*a*l/4096+4681*a*c/65536+1479*a*M/16384-453*s*M/32768)*C+(1097*a*c/65536+42783*a*M/1048576)*E+8011*a*M/1048576*y+(3*o/8+3*d/16+213*r/2048-3*n*r/64+255*l/4096-33*n*l/512+20861*c/524288-33*n*c/512+h*c/1024+28273*M/1048576-471*n*M/8192+9*h*M/4096)*m+(21*d/256+21*r/256+533*l/8192-21*n*l/512+197*c/4096-315*n*c/4096+584039*M/16777216-12517*n*M/131072+7*h*M/2048)*g+(151*r/6144+151*l/4096+5019*c/131072-453*n*c/16384+26965*M/786432-8607*n*M/131072)*f+(1097*l/131072+1097*c/65536+225797*M/10485760-1097*n*M/65536)*P+(8011*c/2621440+8011*M/1048576)*O+293393*M/251658240*I}function u(t,i){if(0===t)return Math.log(Math.tan(.5*(n.CesiumMath.PI_OVER_TWO+i)));const e=t*Math.sin(i);return Math.log(Math.tan(.5*(n.CesiumMath.PI_OVER_TWO+i)))-t/2*Math.log((1+e)/(1-e))}function o(t,i,e,a,s){const h=u(t._ellipticity,e),o=u(t._ellipticity,s);return Math.atan2(n.CesiumMath.negativePiToPi(a-i),o-h)}function d(t,i,e,a,h,u,o){const d=t._heading,r=u-a;let l=0;if(n.CesiumMath.equalsEpsilon(Math.abs(d),n.CesiumMath.PI_OVER_TWO,n.CesiumMath.EPSILON8))if(i===e)l=i*Math.cos(h)*n.CesiumMath.negativePiToPi(r);else{const e=Math.sin(h);l=i*Math.cos(h)*n.CesiumMath.negativePiToPi(r)/Math.sqrt(1-t._ellipticitySquared*e*e)}else{const e=s(t._ellipticity,i,h);l=(s(t._ellipticity,i,o)-e)/Math.cos(d)}return Math.abs(l)}const r=new i.Cartesian3,l=new i.Cartesian3;function c(t,a,n,s){const h=i.Cartesian3.normalize(s.cartographicToCartesian(a,l),r),u=i.Cartesian3.normalize(s.cartographicToCartesian(n,l),l);e.Check.typeOf.number.greaterThanOrEquals("value",Math.abs(Math.abs(i.Cartesian3.angleBetween(h,u))-Math.PI),.0125);const c=s.maximumRadius,M=s.minimumRadius,m=c*c,_=M*M;t._ellipticitySquared=(m-_)/m,t._ellipticity=Math.sqrt(t._ellipticitySquared),t._start=i.Cartographic.clone(a,t._start),t._start.height=0,t._end=i.Cartographic.clone(n,t._end),t._end.height=0,t._heading=o(t,a.longitude,a.latitude,n.longitude,n.latitude),t._distance=d(t,s.maximumRadius,s.minimumRadius,a.longitude,a.latitude,n.longitude,n.latitude)}function M(t,e,o,d,r,l){if(0===o)return i.Cartographic.clone(t,l);const c=r*r;let M,m,_;if(Math.abs(n.CesiumMath.PI_OVER_TWO-Math.abs(e))>n.CesiumMath.EPSILON8){const i=s(r,d,t.latitude),a=o*Math.cos(e),l=i+a;m=h(l,r,d);const c=u(r,t.latitude),g=u(r,m);_=Math.tan(e)*(g-c),M=n.CesiumMath.negativePiToPi(t.longitude+_)}else{let i;if(m=t.latitude,0===r)i=d*Math.cos(t.latitude);else{const e=Math.sin(t.latitude);i=d*Math.cos(t.latitude)/Math.sqrt(1-c*e*e)}_=o/i,M=e>0?n.CesiumMath.negativePiToPi(t.longitude+_):n.CesiumMath.negativePiToPi(t.longitude-_)}return a.defined(l)?(l.longitude=M,l.latitude=m,l.height=0,l):new i.Cartographic(M,m,0)}function m(t,e,n){const s=a.defaultValue(n,i.Ellipsoid.WGS84);this._ellipsoid=s,this._start=new i.Cartographic,this._end=new i.Cartographic,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,a.defined(t)&&a.defined(e)&&c(this,t,e,s)}Object.defineProperties(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return e.Check.defined("distance",this._distance),this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return e.Check.defined("distance",this._distance),this._heading}}}),m.fromStartHeadingDistance=function(t,s,h,u,o){e.Check.defined("start",t),e.Check.defined("heading",s),e.Check.defined("distance",h),e.Check.typeOf.number.greaterThan("distance",h,0);const d=a.defaultValue(u,i.Ellipsoid.WGS84),r=d.maximumRadius,l=d.minimumRadius,c=r*r,_=l*l,g=Math.sqrt((c-_)/c);s=n.CesiumMath.negativePiToPi(s);const p=M(t,s,h,d.maximumRadius,g);return!a.defined(o)||a.defined(u)&&!u.equals(o.ellipsoid)?new m(t,p,d):(o.setEndPoints(t,p),o)},m.prototype.setEndPoints=function(t,i){e.Check.defined("start",t),e.Check.defined("end",i),c(this,t,i,this._ellipsoid)},m.prototype.interpolateUsingFraction=function(t,i){return this.interpolateUsingSurfaceDistance(t*this._distance,i)},m.prototype.interpolateUsingSurfaceDistance=function(t,i){if(e.Check.typeOf.number("distance",t),!a.defined(this._distance)||0===this._distance)throw new e.DeveloperError("EllipsoidRhumbLine must have distinct start and end set.");return M(this._start,this._heading,t,this._ellipsoid.maximumRadius,this._ellipticity,i)},m.prototype.findIntersectionWithLongitude=function(t,s){if(e.Check.typeOf.number("intersectionLongitude",t),!a.defined(this._distance)||0===this._distance)throw new e.DeveloperError("EllipsoidRhumbLine must have distinct start and end set.");const h=this._ellipticity,u=this._heading,o=Math.abs(u),d=this._start;if(t=n.CesiumMath.negativePiToPi(t),n.CesiumMath.equalsEpsilon(Math.abs(t),Math.PI,n.CesiumMath.EPSILON14)&&(t=n.CesiumMath.sign(d.longitude)*Math.PI),a.defined(s)||(s=new i.Cartographic),Math.abs(n.CesiumMath.PI_OVER_TWO-o)<=n.CesiumMath.EPSILON8)return s.longitude=t,s.latitude=d.latitude,s.height=0,s;if(n.CesiumMath.equalsEpsilon(Math.abs(n.CesiumMath.PI_OVER_TWO-o),n.CesiumMath.PI_OVER_TWO,n.CesiumMath.EPSILON8))return n.CesiumMath.equalsEpsilon(t,d.longitude,n.CesiumMath.EPSILON12)?void 0:(s.longitude=t,s.latitude=n.CesiumMath.PI_OVER_TWO*n.CesiumMath.sign(n.CesiumMath.PI_OVER_TWO-u),s.height=0,s);const r=d.latitude,l=h*Math.sin(r),c=Math.tan(.5*(n.CesiumMath.PI_OVER_TWO+r))*Math.exp((t-d.longitude)/Math.tan(u)),M=(1+l)/(1-l);let m,_=d.latitude;do{m=_;const t=h*Math.sin(m),i=(1+t)/(1-t);_=2*Math.atan(c*Math.pow(i/M,h/2))-n.CesiumMath.PI_OVER_TWO}while(!n.CesiumMath.equalsEpsilon(_,m,n.CesiumMath.EPSILON12));return s.longitude=t,s.latitude=_,s.height=0,s},m.prototype.findIntersectionWithLatitude=function(t,s){if(e.Check.typeOf.number("intersectionLatitude",t),!a.defined(this._distance)||0===this._distance)throw new e.DeveloperError("EllipsoidRhumbLine must have distinct start and end set.");const h=this._ellipticity,o=this._heading,d=this._start;if(n.CesiumMath.equalsEpsilon(Math.abs(o),n.CesiumMath.PI_OVER_TWO,n.CesiumMath.EPSILON8))return;const r=u(h,d.latitude),l=u(h,t),c=Math.tan(o)*(l-r),M=n.CesiumMath.negativePiToPi(d.longitude+c);return a.defined(s)?(s.longitude=M,s.latitude=t,s.height=0,s):new i.Cartographic(M,t,0)},t.EllipsoidRhumbLine=m}));