Newer
Older
smartwell_front_dz / smartwell / mars3d-cesium / Workers / EllipsoidGeodesic-0454f1c2.js
wangxitong on 11 Sep 2023 4 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,a,i,n,e){"use strict";function s(t){const a=t._uSquared,i=t._ellipsoid.maximumRadius,n=t._ellipsoid.minimumRadius,e=(i-n)/i,s=Math.cos(t._startHeading),h=Math.sin(t._startHeading),o=(1-e)*Math.tan(t._start.latitude),r=1/Math.sqrt(1+o*o),d=r*o,c=Math.atan2(o,s),u=r*h,l=u*u,M=1-l,g=Math.sqrt(M),_=a/4,p=_*_,f=p*_,m=p*p,C=1+_-3*p/4+5*f/4-175*m/64,H=1-_+15*p/8-35*f/8,v=1-3*_+35*p/4,O=1-5*_,q=C*c-H*Math.sin(2*c)*_/2-v*Math.sin(4*c)*p/16-O*Math.sin(6*c)*f/48-5*Math.sin(8*c)*m/512,S=t._constants;S.a=i,S.b=n,S.f=e,S.cosineHeading=s,S.sineHeading=h,S.tanU=o,S.cosineU=r,S.sineU=d,S.sigma=c,S.sineAlpha=u,S.sineSquaredAlpha=l,S.cosineSquaredAlpha=M,S.cosineAlpha=g,S.u2Over4=_,S.u4Over16=p,S.u6Over64=f,S.u8Over256=m,S.a0=C,S.a1=H,S.a2=v,S.a3=O,S.distanceRatio=q}function h(t,a){return t*a*(4+t*(4-3*a))/16}function o(t,a,i,n,e,s,o){const r=h(t,i);return(1-r)*t*a*(n+r*e*(o+r*s*(2*o*o-1)))}function r(t,a,i,n,s,h,r){const d=(a-i)/a,c=h-n,u=Math.atan((1-d)*Math.tan(s)),l=Math.atan((1-d)*Math.tan(r)),M=Math.cos(u),g=Math.sin(u),_=Math.cos(l),p=Math.sin(l),f=M*_,m=M*p,C=g*p,H=g*_;let v,O,q,S,b,U=c,k=e.CesiumMath.TWO_PI,w=Math.cos(U),A=Math.sin(U);do{w=Math.cos(U),A=Math.sin(U);const t=m-H*w;let a;q=Math.sqrt(_*_*A*A+t*t),O=C+f*w,v=Math.atan2(q,O),0===q?(a=0,S=1):(a=f*A/q,S=1-a*a),k=U,b=O-2*C/S,isFinite(b)||(b=0),U=c+o(d,a,S,v,q,O,b)}while(Math.abs(U-k)>e.CesiumMath.EPSILON12);const R=S*(a*a-i*i)/(i*i),y=1+R*(4096+R*(R*(320-175*R)-768))/16384,E=R*(256+R*(R*(74-47*R)-128))/1024,P=b*b,x=E*q*(b+E*(O*(2*P-1)-E*b*(4*q*q-3)*(4*P-3)/6)/4),D=i*y*(v-x),T=Math.atan2(_*A,m-H*w),I=Math.atan2(M*A,m*w-H);t._distance=D,t._startHeading=T,t._endHeading=I,t._uSquared=R}const d=new a.Cartesian3,c=new a.Cartesian3;function u(t,n,e,h){const o=a.Cartesian3.normalize(h.cartographicToCartesian(n,c),d),u=a.Cartesian3.normalize(h.cartographicToCartesian(e,c),c);i.Check.typeOf.number.greaterThanOrEquals("value",Math.abs(Math.abs(a.Cartesian3.angleBetween(o,u))-Math.PI),.0125),r(t,h.maximumRadius,h.minimumRadius,n.longitude,n.latitude,e.longitude,e.latitude),t._start=a.Cartographic.clone(n,t._start),t._end=a.Cartographic.clone(e,t._end),t._start.height=0,t._end.height=0,s(t)}function l(t,i,e){const s=n.defaultValue(e,a.Ellipsoid.WGS84);this._ellipsoid=s,this._start=new a.Cartographic,this._end=new a.Cartographic,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,n.defined(t)&&n.defined(i)&&u(this,t,i,s)}Object.defineProperties(l.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return i.Check.defined("distance",this._distance),this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return i.Check.defined("distance",this._distance),this._startHeading}},endHeading:{get:function(){return i.Check.defined("distance",this._distance),this._endHeading}}}),l.prototype.setEndPoints=function(t,a){i.Check.defined("start",t),i.Check.defined("end",a),u(this,t,a,this._ellipsoid)},l.prototype.interpolateUsingFraction=function(t,a){return this.interpolateUsingSurfaceDistance(this._distance*t,a)},l.prototype.interpolateUsingSurfaceDistance=function(t,e){i.Check.defined("distance",this._distance);const s=this._constants,h=s.distanceRatio+t/s.b,r=Math.cos(2*h),d=Math.cos(4*h),c=Math.cos(6*h),u=Math.sin(2*h),l=Math.sin(4*h),M=Math.sin(6*h),g=Math.sin(8*h),_=h*h,p=h*_,f=s.u8Over256,m=s.u2Over4,C=s.u6Over64,H=s.u4Over16;let v=2*p*f*r/3+h*(1-m+7*H/4-15*C/4+579*f/64-(H-15*C/4+187*f/16)*r-(5*C/4-115*f/16)*d-29*f*c/16)+(m/2-H+71*C/32-85*f/16)*u+(5*H/16-5*C/4+383*f/96)*l-_*((C-11*f/2)*u+5*f*l/2)+(29*C/96-29*f/16)*M+539*f*g/1536;const O=Math.asin(Math.sin(v)*s.cosineAlpha),q=Math.atan(s.a/s.b*Math.tan(O));v-=s.sigma;const S=Math.cos(2*s.sigma+v),b=Math.sin(v),U=Math.cos(v),k=s.cosineU*U,w=s.sineU*b,A=Math.atan2(b*s.sineHeading,k-w*s.cosineHeading)-o(s.f,s.sineAlpha,s.cosineSquaredAlpha,v,b,U,S);return n.defined(e)?(e.longitude=this._start.longitude+A,e.latitude=q,e.height=0,e):new a.Cartographic(this._start.longitude+A,q,0)},t.EllipsoidGeodesic=l}));