@rr0/ufoathome 0.59.0 → 0.60.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -3
- package/dist-embed-scene/SatellitePasses-Pfro2-0Z.js +1 -0
- package/dist-embed-scene/rr0-scene.mjs +234 -226
- package/dist-embed-sighting/SatellitePasses-Pfro2-0Z.js +1 -0
- package/dist-embed-sighting/rr0-sighting.mjs +241 -229
- package/dist-embed-sighting-editor/SatellitePasses-Pfro2-0Z.js +1 -0
- package/dist-embed-sighting-editor/{SightingEditorMessages_fr-Bz3LHAmp.js → SightingEditorMessages_fr-7Bondssn.js} +1 -1
- package/dist-embed-sighting-editor/rr0-sighting-editor.mjs +239 -230
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -282,14 +282,20 @@ coverage floor:
|
|
|
282
282
|
shortens when it points away from the observer instead of across their sky. Half the apparitions have no
|
|
283
283
|
recorded tail length and are drawn with no tail at all.
|
|
284
284
|
|
|
285
|
-
- **Satellites** (`src/engine/astronomy/Satellites.ts`).
|
|
286
|
-
cannot be obtained, and propagating today's back to 1965 would invent a precise, confident pass.
|
|
287
|
-
What is complete is the ILLUMINATION: `h = R(sec B - 1)` gives how high the Earth's shadow stood
|
|
285
|
+
- **Satellites** (`src/engine/astronomy/Satellites.ts`). For every date, the ILLUMINATION: `h = R(sec B - 1)` gives how high the Earth's shadow stood
|
|
288
286
|
above the witness, so deep in the night nothing in low orbit is lit and a light crossing the sky
|
|
289
287
|
then was not a satellite. Being lit and being seen are kept apart — everything in orbit is sunlit
|
|
290
288
|
by day, and an Iridium flare at magnitude -8 was genuinely watched at noon. Also complete, and
|
|
291
289
|
from CelesTrak's SATCAT: how many tracked objects were in orbit that month, and when each named
|
|
292
290
|
class existed (Echo balloons, Iridium flares, ISS, Starlink trains).
|
|
291
|
+
And from February 2021, WHICH ones (`TleArchive.ts`, `SatellitePasses.ts`): Laurent Chabin (SCEAU)
|
|
292
|
+
has saved the public element sets once or twice a day since then. They are propagated with SGP4
|
|
293
|
+
(satellite.js), lit through the Earth's umbra and penumbra, and given the magnitudes that were
|
|
294
|
+
measured — McCants' standard magnitudes, then Stellarium's for later objects, Mallama's for
|
|
295
|
+
Starlink, with the orbit-raising value that makes a train as bright as it is reported. A set is
|
|
296
|
+
never used more than a week from its epoch; the archive's holes are reported as holes. Before
|
|
297
|
+
2021 no pass is drawn: propagating today's elements back to 1965 would invent a precise,
|
|
298
|
+
confident pass.
|
|
293
299
|
|
|
294
300
|
- **What the air itself did to the light** (`src/engine/atmosphere/`). Two families, and neither is drawn form by
|
|
295
301
|
form. The ICE one traces sunlight through hexagonal prisms in a cirrus deck (`IceCrystal.ts`, `HaloSky.ts`) and
|
|
@@ -317,6 +323,15 @@ is its state on the way down — Echo 1 is listed at 419 x 394 km and spent its
|
|
|
317
323
|
using them to describe a historical orbit would be quietly wrong. Which classes are worth naming,
|
|
318
324
|
and how bright they got, stay hand-entered in the script; every date is derived.
|
|
319
325
|
|
|
326
|
+
**Rebuilding the orbital element archive.** `npm run build:tle` reads a local copy of
|
|
327
|
+
[ufowaves.org/gp/my_tles](https://ufowaves.org/gp/my_tles/) in `scripts/data/tle/<year>/` (the
|
|
328
|
+
`Visible` zips and the `tle/*_visual.tle` and `*_starlink.tle` files), plus `scripts/data/satcat.csv`
|
|
329
|
+
for launch dates and `scripts/data/qs.mag` ([McCants](https://www.mmccants.org/programs/qsmag.zip))
|
|
330
|
+
and `scripts/data/stellarium-satellites.json` for magnitudes, and writes `public/tle/` (committed, served by ufoathome.org at `/tle/`):
|
|
331
|
+
weekly 44-byte-record bins per list, the object names, and an index with the archive's gaps. Every
|
|
332
|
+
day is kept for naked-eye objects and for Starlinks in their first 60 days; one set a week otherwise.
|
|
333
|
+
838 MB of snapshots become 44 MB. Rebuild and commit it when the archive has grown.
|
|
334
|
+
|
|
320
335
|
**Regenerating the comet catalog.** `src/engine/astronomy/cometCatalog.ts` is generated by
|
|
321
336
|
`npm run build:comets`, which asks [JPL Horizons](https://ssd.jpl.nasa.gov/horizons/) for osculating elements at
|
|
322
337
|
each apparition's own perihelion and caches the answers under `scripts/data/horizons/` (gitignored). The list of
|
|
@@ -968,6 +983,7 @@ npm run build:all # all three
|
|
|
968
983
|
npm run build:site # ufoathome.org, into dist-site/
|
|
969
984
|
npm run build:comets # regenerate the comet catalog from JPL Horizons
|
|
970
985
|
npm run build:satellites # regenerate the satellite catalog from CelesTrak's SATCAT
|
|
986
|
+
npm run build:tle # rebuild public/tle/ from a local copy of the orbital element archive
|
|
971
987
|
```
|
|
972
988
|
|
|
973
989
|
## The site
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var Pa=Math.PI,R=Pa*2,$a=Pa/180,V0=1440,j0=398600.8,La=6378.135,Xa=60/Math.sqrt(La*La*La/j0),C0=La*Xa/60,R0=1/Xa,n0=.001082616,ar=-253881e-11,rr=-165597e-11,o0=ar/n0,x0=2/3,nr=1440/(2*Pa);function or(r,n){for(var o=[31,r%4===0?29:28,31,30,31,30,31,31,30,31,30,31],v=Math.floor(n),e=1,t=0;v>t+o[e-1]&&e<12;)t+=o[e-1],e+=1;var d=e,s=v-t,h=(n-v)*24,m=Math.floor(h);h=(h-m)*60;var c=Math.floor(h),l=(h-c)*60;return{mon:d,day:s,hr:m,minute:c,sec:l}}function S0(r,n,o,v,e,t){var d=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0;return 367*r-Math.floor(7*(r+Math.floor((n+9)/12))*.25)+Math.floor(275*n/9)+o+17210135e-1+((d/6e4+t/60+e)/60+v)/24}function M0(r,n,o,v,e,t){var d=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0;if(r instanceof Date){var s=r;return S0(s.getUTCFullYear(),s.getUTCMonth()+1,s.getUTCDate(),s.getUTCHours(),s.getUTCMinutes(),s.getUTCSeconds(),s.getUTCMilliseconds())}return S0(r,n,o,v,e,t,d)}function B0(r,n){var o=r.e3,v=r.ee2,e=r.peo,t=r.pgho,d=r.pho,s=r.pinco,h=r.plo,m=r.se2,c=r.se3,l=r.sgh2,T=r.sgh3,f=r.sgh4,V=r.sh2,G=r.sh3,B=r.si2,E=r.si3,X=r.sl2,k=r.sl3,U=r.sl4,u=r.t,g=r.xgh2,K=r.xgh3,z=r.xgh4,w=r.xh2,ea=r.xh3,Z=r.xi2,O=r.xi3,aa=r.xl2,Q=r.xl3,ta=r.xl4,y=r.zmol,ia=r.zmos,J=n.init,W=n.opsmode,sa=n.ep,S=n.inclp,N=n.nodep,Oa=n.argpp,ma=n.mp,M,x,ra,L,$,I,Aa,na,ca,D,C,oa,q,A,P,p,_,H,j,F,Y,la=119459e-10,ga=.01675,Ma=.00015835218,pa=.0549;Y=ia+la*u,J==="y"&&(Y=ia),F=Y+2*ga*Math.sin(Y),_=Math.sin(F),D=.5*_*_-.25,C=-.5*_*Math.cos(F);var Da=m*D+c*C,qa=B*D+E*C,a=X*D+k*C+U*_,xa=l*D+T*C+f*_,da=V*D+G*C;Y=y+Ma*u,J==="y"&&(Y=y),F=Y+2*pa*Math.sin(Y),_=Math.sin(F),D=.5*_*_-.25,C=-.5*_*Math.cos(F);var Ca=v*D+o*C,Ea=Z*D+O*C,va=aa*D+Q*C+ta*_,fa=g*D+K*C+z*_,ka=w*D+ea*C;return oa=Da+Ca,P=qa+Ea,p=a+va,q=xa+fa,A=da+ka,J==="n"&&(oa-=e,P-=s,p-=h,q-=t,A-=d,S+=P,sa+=oa,L=Math.sin(S),ra=Math.cos(S),S>=.2?(A/=L,q-=ra*A,Oa+=q,N+=A,ma+=p):(I=Math.sin(N),$=Math.cos(N),M=L*I,x=L*$,Aa=A*$+P*ra*I,na=-A*I+P*ra*$,M+=Aa,x+=na,N%=R,N<0&&W==="a"&&(N+=R),H=ma+Oa+ra*N,ca=p+q-P*N*L,H+=ca,j=N,N=Math.atan2(M,x),N<0&&W==="a"&&(N+=R),Math.abs(j-N)>Pa&&(N<j?N+=R:N-=R),ma+=p,Oa=H-ma-ra*N)),{ep:sa,inclp:S,nodep:N,argpp:Oa,mp:ma}}function vr(r){var n=r.epoch,o=r.ep,v=r.argpp,e=r.tc,t=r.inclp,d=r.nodep,s=r.np,h,m,c,l,T,f,V,G,B,E,X,k,U,u,g,K,z,w,ea,Z,O,aa,Q,ta,y,ia,J,W,sa,S,N,Oa,ma,M,x,ra,L,$,I,Aa,na,ca,D,C,oa,q,A,P,p,_,H,j,F,Y,la,ga,Ma,pa,Da,qa,a,xa,da,Ca=.01675,Ea=.0549,va=29864797e-13,fa=47968065e-14,ka=.39785416,wa=.91744867,za=.1945905,Ya=-.98088458,_a=s,Ka=o,Fa=Math.sin(d),ba=Math.cos(d),ya=Math.sin(v),Na=Math.cos(v),Ba=Math.sin(t),Wa=Math.cos(t),i=Ka*Ka,Ua=1-i,Sa=Math.sqrt(Ua),Va=0,b=0,v0=0,d0=0,h0=0,Ga=n+18261.5+e/1440,Ha=(4.523602-.00092422029*Ga)%R,ua=Math.sin(Ha),Za=Math.cos(Ha),e0=.91375164-.03568096*Za,t0=Math.sqrt(1-e0*e0),Ta=.089683511*ua/t0,Ia=Math.sqrt(1-Ta*Ta),ha=5.8351514+.001944368*Ga,ja=.39785416*ua/t0,f0=Ia*Za+.91744867*Ta*ua;ja=Math.atan2(ja,f0),ja+=ha-Ha;var z0=Math.cos(ja),p0=Math.sin(ja);Z=za,O=Ya,ta=wa,y=ka,aa=ba,Q=Fa,X=va;for(var u0=1/_a,s0=0;s0<2;)s0+=1,h=Z*aa+O*ta*Q,c=-O*aa+Z*ta*Q,V=-Z*Q+O*ta*aa,G=O*y,B=O*Q+Z*ta*aa,E=Z*y,m=Wa*V+Ba*G,l=Wa*B+Ba*E,T=-Ba*V+Wa*G,f=-Ba*B+Wa*E,k=h*Na+m*ya,U=c*Na+l*ya,u=-h*ya+m*Na,g=-c*ya+l*Na,K=T*ya,z=f*ya,w=T*Na,ea=f*Na,a=12*k*k-3*u*u,xa=24*k*U-6*u*g,da=12*U*U-3*g*g,j=3*(h*h+m*m)+a*i,F=6*(h*c+m*l)+xa*i,Y=3*(c*c+l*l)+da*i,la=-6*h*T+i*(-24*k*w-6*u*K),ga=-6*(h*f+c*T)+i*(-24*(U*w+k*ea)+-6*(u*z+g*K)),Ma=-6*c*f+i*(-24*U*ea-6*g*z),pa=6*m*T+i*(24*k*K-6*u*w),Da=6*(l*T+m*f)+i*(24*(U*K+k*z)-6*(g*w+u*ea)),qa=6*l*f+i*(24*U*z-6*g*ea),j=j+j+Ua*a,F=F+F+Ua*xa,Y=Y+Y+Ua*da,A=X*u0,q=-.5*A/Sa,P=A*Sa,oa=-15*Ka*P,p=k*u+U*g,_=U*u+k*g,H=U*g-k*u,s0===1&&(ia=oa,J=q,W=A,sa=P,S=p,N=_,Oa=H,ma=j,M=F,x=Y,ra=la,L=ga,$=Ma,I=pa,Aa=Da,na=qa,ca=a,D=xa,C=da,Z=z0,O=p0,ta=e0,y=t0,aa=Ia*ba+Ta*Fa,Q=Fa*Ia-ba*Ta,X=fa);var m0=(4.7199672+(.2299715*Ga-ha))%R,O0=(6.2565837+.017201977*Ga)%R,y0=2*ia*N,Ra=2*ia*Oa,a0=2*J*L,N0=2*J*($-ra),A0=-2*W*M,E0=-2*W*(x-ma),T0=-2*W*(-21-9*i)*Ca,i0=2*sa*D,I0=2*sa*(C-ca),D0=-18*sa*Ca,c0=-2*J*Aa,l0=-2*J*(na-I),g0=2*oa*_,q0=2*oa*H,w0=2*q*ga,K0=2*q*(Ma-la),W0=-2*A*F,H0=-2*A*(Y-j),Y0=-2*A*(-21-9*i)*Ea,G0=2*P*xa,J0=2*P*(da-a),$0=-18*P*Ea,X0=-2*q*Da,Q0=-2*q*(qa-pa);return{snodm:Fa,cnodm:ba,sinim:Ba,cosim:Wa,sinomm:ya,cosomm:Na,day:Ga,e3:q0,ee2:g0,em:Ka,emsq:i,gam:ha,peo:Va,pgho:d0,pho:h0,pinco:b,plo:v0,rtemsq:Sa,se2:y0,se3:Ra,sgh2:i0,sgh3:I0,sgh4:D0,sh2:c0,sh3:l0,si2:a0,si3:N0,sl2:A0,sl3:E0,sl4:T0,s1:oa,s2:q,s3:A,s4:P,s5:p,s6:_,s7:H,ss1:ia,ss2:J,ss3:W,ss4:sa,ss5:S,ss6:N,ss7:Oa,sz1:ma,sz2:M,sz3:x,sz11:ra,sz12:L,sz13:$,sz21:I,sz22:Aa,sz23:na,sz31:ca,sz32:D,sz33:C,xgh2:G0,xgh3:J0,xgh4:$0,xh2:X0,xh3:Q0,xi2:w0,xi3:K0,xl2:W0,xl3:H0,xl4:Y0,nm:_a,z1:j,z2:F,z3:Y,z11:la,z12:ga,z13:Ma,z21:pa,z22:Da,z23:qa,z31:a,z32:xa,z33:da,zmol:m0,zmos:O0}}function er(r){var n=r.cosim,o=r.argpo,v=r.s1,e=r.s2,t=r.s3,d=r.s4,s=r.s5,h=r.sinim,m=r.ss1,c=r.ss2,l=r.ss3,T=r.ss4,f=r.ss5,V=r.sz1,G=r.sz3,B=r.sz11,E=r.sz13,X=r.sz21,k=r.sz23,U=r.sz31,u=r.sz33,g=r.t,K=r.tc,z=r.gsto,w=r.mo,ea=r.mdot,Z=r.no,O=r.nodeo,aa=r.nodedot,Q=r.xpidot,ta=r.z1,y=r.z3,ia=r.z11,J=r.z13,W=r.z21,sa=r.z23,S=r.z31,N=r.z33,Oa=r.ecco,ma=r.eccsq,M=r.emsq,x=r.em,ra=r.argpm,L=r.inclm,$=r.mm,I=r.nm,Aa=r.nodem,na=r.irez,ca=r.atime,D=r.d2201,C=r.d2211,oa=r.d3210,q=r.d3222,A=r.d4410,P=r.d4422,p=r.d5220,_=r.d5232,H=r.d5421,j=r.d5433,F=r.dedt,Y=r.didt,la=r.dmdt,ga=r.dnodt,Ma=r.domdt,pa=r.del1,Da=r.del2,qa=r.del3,a=r.xfact,xa=r.xlamo,da=r.xli,Ca=r.xni,Ea,va,fa,ka,wa,za,Ya,_a,Ka,Fa,ba,ya,Na,Ba,Wa,i,Ua,Sa,Va,b,v0,d0,h0,Ga,Ha,ua,Za,e0,t0,Ta,Ia,ha,ja=17891679e-13,f0=21460748e-13,z0=22123015e-14,p0=17891679e-13,u0=73636953e-16,s0=21765803e-16,m0=.0043752690880113,O0=37393792e-14,y0=11428639e-14,Ra=.00015835218,a0=119459e-10;na=0,I<.0052359877&&I>.0034906585&&(na=1),I>=.00826&&I<=.00924&&x>=.5&&(na=2);var N0=m*a0*f,A0=c*a0*(B+E),E0=-a0*l*(V+G-14-6*M),T0=T*a0*(U+u-6),i0=-a0*c*(X+k);(L<.052359877||L>Pa-.052359877)&&(i0=0),h!==0&&(i0/=h);var I0=T0-n*i0;F=N0+v*Ra*s,Y=A0+e*Ra*(ia+J),la=E0-Ra*t*(ta+y-14-6*M);var D0=d*Ra*(S+N-6),c0=-Ra*e*(W+sa);(L<.052359877||L>Pa-.052359877)&&(c0=0),Ma=I0+D0,ga=i0,h!==0&&(Ma-=n/h*c0,ga+=c0/h);var l0=0,g0=(z+K*m0)%R;if(x+=F*g,L+=Y*g,ra+=Ma*g,Aa+=ga*g,$+=la*g,na!==0){if(Ta=Math.pow(I/Xa,x0),na===2){Ia=n*n;var q0=x;x=Oa;var w0=M;M=ma,ha=x*M,Ba=-.306-(x-.64)*.44,x<=.65?(Wa=3.616-13.247*x+16.29*M,Ua=-19.302+117.39*x-228.419*M+156.591*ha,Sa=-18.9068+109.7927*x-214.6334*M+146.5816*ha,Va=-41.122+242.694*x-471.094*M+313.953*ha,b=-146.407+841.88*x-1629.014*M+1083.435*ha,v0=-532.114+3017.977*x-5740.032*M+3708.276*ha):(Wa=-72.099+331.819*x-508.738*M+266.724*ha,Ua=-346.844+1582.851*x-2415.925*M+1246.113*ha,Sa=-342.585+1554.908*x-2366.899*M+1215.972*ha,Va=-1052.797+4758.686*x-7193.992*M+3651.957*ha,b=-3581.69+16178.11*x-24462.77*M+12422.52*ha,x>.715?v0=-5149.66+29936.92*x-54087.36*M+31324.56*ha:v0=1464.74-4664.75*x+3763.64*M),x<.7?(Ga=-919.2277+4988.61*x-9064.77*M+5542.21*ha,d0=-822.71072+4568.6173*x-8491.4146*M+5337.524*ha,h0=-853.666+4690.25*x-8624.77*M+5341.4*ha):(Ga=-37995.78+161616.52*x-229838.2*M+109377.94*ha,d0=-51752.104+218913.95*x-309468.16*M+146349.42*ha,h0=-40023.88+170470.89*x-242699.48*M+115605.82*ha),Ha=h*h,Ea=.75*(1+2*n+Ia),va=1.5*Ha,ka=1.875*h*(1-2*n-3*Ia),wa=-1.875*h*(1+2*n-3*Ia),Ya=35*Ha*Ea,_a=39.375*Ha*Ha,Ka=9.84375*h*(Ha*(1-2*n-5*Ia)+.33333333*(-2+4*n+6*Ia)),Fa=h*(4.92187512*Ha*(-2-4*n+10*Ia)+6.56250012*(1+2*n-3*Ia)),ba=29.53125*h*(2-8*n+Ia*(-12+8*n+10*Ia)),ya=29.53125*h*(-2-8*n+Ia*(12+8*n-10*Ia)),e0=I*I,t0=Ta*Ta,Za=3*e0*t0,ua=Za*p0,D=ua*Ea*Ba,C=ua*va*Wa,Za*=Ta,ua=Za*O0,oa=ua*ka*Ua,q=ua*wa*Sa,Za*=Ta,ua=2*Za*u0,A=ua*Ya*Va,P=ua*_a*b,Za*=Ta,ua=Za*y0,p=ua*Ka*v0,_=ua*Fa*h0,ua=2*Za*s0,H=ua*ba*d0,j=ua*ya*Ga,xa=(w+O+O-(g0+g0))%R,a=ea+la+2*(aa+ga-m0)-Z,x=q0,M=w0}na===1&&(Na=1+M*(-2.5+.8125*M),Ua=1+2*M,i=1+M*(-6+6.60937*M),Ea=.75*(1+n)*(1+n),fa=.9375*h*h*(1+3*n)-.75*(1+n),za=1+n,za*=1.875*za*za,pa=3*I*I*Ta*Ta,Da=2*pa*Ea*Na*ja,qa=3*pa*za*i*z0*Ta,pa=pa*fa*Ua*f0*Ta,xa=(w+O+o-g0)%R,a=ea+Q+la+Ma+ga-(Z+m0)),da=xa,Ca=Z,ca=0,I=Z+l0}return{em:x,argpm:ra,inclm:L,mm:$,nm:I,nodem:Aa,irez:na,atime:ca,d2201:D,d2211:C,d3210:oa,d3222:q,d4410:A,d4422:P,d5220:p,d5232:_,d5421:H,d5433:j,dedt:F,didt:Y,dmdt:la,dndt:l0,dnodt:ga,domdt:Ma,del1:pa,del2:Da,del3:qa,xfact:a,xlamo:xa,xli:da,xni:Ca}}function L0(r){var n=(r-2451545)/36525,o=-62e-7*n*n*n+.093104*n*n+(876600*3600+8640184812866e-6)*n+67310.54841;return o=o*$a/240%R,o<0&&(o+=R),o}function U0(r,n,o,v,e,t,d){return r instanceof Date?L0(M0(r)):L0(r)}function tr(r){var n=r.ecco,o=r.epoch,v=r.inclo,e=r.opsmode,t=r.no,d=n*n,s=1-d,h=Math.sqrt(s),m=Math.cos(v),c=m*m,l=Math.pow(Xa/t,x0),T=.75*n0*(3*c-1)/(h*s),f=T/(l*l),V=l*(1-f*f-f*(1/3+134*f*f/81));f=T/(V*V),t/=1+f;var G=Math.pow(Xa/t,x0),B=Math.sin(v),E=G*s,X=1-5*c,k=-X-c-c,U=1/G,u=E*E,g=G*(1-n),K="n",z;if(e==="a"){var w=o-7305,ea=Math.floor(w+1e-8),Z=w-ea,O=.017202791694070362,aa=1.7321343856509375,Q=5075514194322695e-30,ta=O+R;z=(aa+O*ea+ta*Z+w*w*Q)%R,z<0&&(z+=R)}else z=U0(o+24332815e-1);return{no:t,method:K,ainv:U,ao:G,con41:k,con42:X,cosio:m,cosio2:c,eccsq:d,omeosq:s,posq:u,rp:g,rteosq:h,sinio:B,gsto:z}}function ir(r){var n=r.irez,o=r.d2201,v=r.d2211,e=r.d3210,t=r.d3222,d=r.d4410,s=r.d4422,h=r.d5220,m=r.d5232,c=r.d5421,l=r.d5433,T=r.dedt,f=r.del1,V=r.del2,G=r.del3,B=r.didt,E=r.dmdt,X=r.dnodt,k=r.domdt,U=r.argpo,u=r.argpdot,g=r.t,K=r.tc,z=r.gsto,w=r.xfact,ea=r.xlamo,Z=r.no,O=r.atime,aa=r.em,Q=r.argpm,ta=r.inclm,y=r.xli,ia=r.mm,J=r.xni,W=r.nodem,sa=r.nm,S=.13130908,N=2.8843198,Oa=.37448087,ma=5.7686396,M=.95240898,x=1.8014998,ra=1.050833,L=4.4108898,$=.0043752690880113,I=720,Aa=-720,na=259200,ca,D,C,oa,q,A,P,p,_=0,H=0,j=(z+K*$)%R;if(aa+=T*g,ta+=B*g,Q+=k*g,W+=X*g,ia+=E*g,n!==0){(O===0||g*O<=0||Math.abs(g)<Math.abs(O))&&(O=0,J=Z,y=ea),g>0?ca=I:ca=Aa;for(var F=381;F===381;)n!==2?(P=f*Math.sin(y-S)+V*Math.sin(2*(y-N))+G*Math.sin(3*(y-Oa)),q=J+w,A=f*Math.cos(y-S)+2*V*Math.cos(2*(y-N))+3*G*Math.cos(3*(y-Oa)),A*=q):(p=U+u*O,C=p+p,D=y+y,P=o*Math.sin(C+y-ma)+v*Math.sin(y-ma)+e*Math.sin(p+y-M)+t*Math.sin(-p+y-M)+d*Math.sin(C+D-x)+s*Math.sin(D-x)+h*Math.sin(p+y-ra)+m*Math.sin(-p+y-ra)+c*Math.sin(p+D-L)+l*Math.sin(-p+D-L),q=J+w,A=o*Math.cos(C+y-ma)+v*Math.cos(y-ma)+e*Math.cos(p+y-M)+t*Math.cos(-p+y-M)+h*Math.cos(p+y-ra)+m*Math.cos(-p+y-ra)+2*(d*Math.cos(C+D-x)+s*Math.cos(D-x)+c*Math.cos(p+D-L)+l*Math.cos(-p+D-L)),A*=q),Math.abs(g-O)>=I?F=381:(H=g-O,F=0),F===381&&(y+=q*ca+P*na,J+=P*ca+A*na,O+=ca);sa=J+P*H+A*H*H*.5,oa=y+q*H+P*H*H*.5,n!==1?(ia=oa-2*W+2*j,_=sa-Z):(ia=oa-W-Q+j,_=sa-Z),sa=Z+_}return{atime:O,em:aa,argpm:Q,inclm:ta,xli:y,mm:ia,xni:J,nodem:W,dndt:_,nm:sa}}var Qa;(function(r){r[r.None=0]="None",r[r.MeanEccentricityOutOfRange=1]="MeanEccentricityOutOfRange",r[r.MeanMotionBelowZero=2]="MeanMotionBelowZero",r[r.PerturbedEccentricityOutOfRange=3]="PerturbedEccentricityOutOfRange",r[r.SemiLatusRectumBelowZero=4]="SemiLatusRectumBelowZero",r[r.Decayed=6]="Decayed"})(Qa||(Qa={}));function Z0(r,n){var o,v,e,t,d,s,h,m,c,l,T,f,V,G,B,E,X,k,U,u,g,K,z,w,ea,Z,O,aa=15e-13;r.t=n,r.error=Qa.None;var Q=r.mo+r.mdot*r.t,ta=r.argpo+r.argpdot*r.t,y=r.nodeo+r.nodedot*r.t;c=ta,g=Q;var ia=r.t*r.t;if(z=y+r.nodecf*ia,X=1-r.cc1*r.t,k=r.bstar*r.cc4*r.t,U=r.t2cof*ia,r.isimp!==1){h=r.omgcof*r.t;var J=1+r.eta*Math.cos(Q);s=r.xmcof*(J*J*J-r.delmo),E=h+s,g=Q+E,c=ta-E,f=ia*r.t,V=f*r.t,X=X-r.d2*ia-r.d3*f-r.d4*V,k+=r.bstar*r.cc5*(Math.sin(g)-r.sinmao),U=U+r.t3cof*f+V*(r.t4cof+r.t*r.t5cof)}K=r.no;var W=r.ecco;if(u=r.inclo,r.method==="d"){G=r.t;var sa={irez:r.irez,d2201:r.d2201,d2211:r.d2211,d3210:r.d3210,d3222:r.d3222,d4410:r.d4410,d4422:r.d4422,d5220:r.d5220,d5232:r.d5232,d5421:r.d5421,d5433:r.d5433,dedt:r.dedt,del1:r.del1,del2:r.del2,del3:r.del3,didt:r.didt,dmdt:r.dmdt,dnodt:r.dnodt,domdt:r.domdt,argpo:r.argpo,argpdot:r.argpdot,t:r.t,tc:G,gsto:r.gsto,xfact:r.xfact,xlamo:r.xlamo,no:r.no,atime:r.atime,em:W,argpm:c,inclm:u,xli:r.xli,mm:g,xni:r.xni,nodem:z,nm:K},S=ir(sa);W=S.em,c=S.argpm,u=S.inclm,g=S.mm,z=S.nodem,K=S.nm}if(K<=0)return r.error=Qa.MeanMotionBelowZero,null;var N=Math.pow(Xa/K,x0)*X*X;if(K=Xa/Math.pow(N,1.5),W-=k,W>=1||W<-.001)return r.error=Qa.MeanEccentricityOutOfRange,null;W<1e-6&&(W=1e-6),g+=r.no*U,ea=g+c+z,z%=R,c%=R,ea%=R,g=(ea-c-z)%R;var Oa={am:N,em:W,im:u,Om:z,om:c,mm:g,nm:K},ma=Math.sin(u),M=Math.cos(u),x=W;if(w=u,l=c,O=z,Z=g,t=ma,e=M,r.method==="d"){var ra={inclo:r.inclo,init:"n",ep:x,inclp:w,nodep:O,argpp:l,mp:Z,opsmode:r.operationmode},L=B0(r,ra);if(x=L.ep,O=L.nodep,l=L.argpp,Z=L.mp,w=L.inclp,w<0&&(w=-w,O+=Pa,l-=Pa),x<0||x>1)return r.error=Qa.PerturbedEccentricityOutOfRange,null}r.method==="d"&&(t=Math.sin(w),e=Math.cos(w),r.aycof=-.5*o0*t,Math.abs(e+1)>15e-13?r.xlcof=-.25*o0*t*(3+5*e)/(1+e):r.xlcof=-.25*o0*t*(3+5*e)/aa);var $=x*Math.cos(l);E=1/(N*(1-x*x));var I=x*Math.sin(l)+E*r.aycof,Aa=Z+l+O+E*r.xlcof*$,na=(Aa-O)%R;m=na,B=9999.9;for(var ca=1;Math.abs(B)>=1e-12&&ca<=10;)v=Math.sin(m),o=Math.cos(m),B=1-o*$-v*I,B=(na-I*o+$*v-m)/B,Math.abs(B)>=.95&&(B>0?B=.95:B=-.95),m+=B,ca+=1;var D=$*o+I*v,C=$*v-I*o,oa=$*$+I*I,q=N*(1-oa);if(q<0)return r.error=Qa.SemiLatusRectumBelowZero,null;var A=N*(1-D),P=Math.sqrt(N)*C/A,p=Math.sqrt(q)/A,_=Math.sqrt(1-oa);E=C/(1+_);var H=N/A*(v-I-$*E),j=N/A*(o-$+I*E);T=Math.atan2(H,j);var F=(j+j)*H,Y=1-2*H*H;E=1/q;var la=.5*n0*E,ga=la*E;r.method==="d"&&(d=e*e,r.con41=3*d-1,r.x1mth2=1-d,r.x7thm1=7*d-1);var Ma=A*(1-1.5*ga*_*r.con41)+.5*la*r.x1mth2*Y;if(Ma<1)return r.error=Qa.Decayed,null;T-=.25*ga*r.x7thm1*F;var pa=O+1.5*ga*e*F,Da=w+1.5*ga*e*t*Y,qa=P-K*la*r.x1mth2*F/Xa,a=p+K*la*(r.x1mth2*Y+1.5*r.con41)/Xa,xa=Math.sin(T),da=Math.cos(T),Ca=Math.sin(pa),Ea=Math.cos(pa),va=Math.sin(Da),fa=Math.cos(Da),ka=-Ca*fa,wa=Ea*fa,za=ka*xa+Ea*da,Ya=wa*xa+Ca*da,_a=va*xa,Ka=ka*da-Ea*xa,Fa=wa*da-Ca*xa,ba=va*da,ya={x:Ma*za*La,y:Ma*Ya*La,z:Ma*_a*La},Na={x:(qa*za+a*Ka)*C0,y:(qa*Ya+a*Fa)*C0,z:(qa*_a+a*ba)*C0};return{position:ya,velocity:Na,meanElements:Oa}}function dr(r,n){var o=n.opsmode,v=n.epoch,e=n.xbstar,t=n.xecco,d=n.xargpo,s=n.xinclo,h=n.xmo,m=n.xno,c=n.xnodeo,l,T,f,V,G,B,E,X,k,U,u,g,K,z,w,ea,Z,O,aa,Q,ta,y,ia,J,W,sa,S,N,Oa,ma,M,x,ra,L,$,I,Aa,na,ca,D,C,oa,q,A,P,p,_,H,j,F,Y,la,ga,Ma,pa,Da,qa=15e-13,a=r;a.isimp=0,a.method="n",a.aycof=0,a.con41=0,a.cc1=0,a.cc4=0,a.cc5=0,a.d2=0,a.d3=0,a.d4=0,a.delmo=0,a.eta=0,a.argpdot=0,a.omgcof=0,a.sinmao=0,a.t=0,a.t2cof=0,a.t3cof=0,a.t4cof=0,a.t5cof=0,a.x1mth2=0,a.x7thm1=0,a.mdot=0,a.nodedot=0,a.xlcof=0,a.xmcof=0,a.nodecf=0,a.irez=0,a.d2201=0,a.d2211=0,a.d3210=0,a.d3222=0,a.d4410=0,a.d4422=0,a.d5220=0,a.d5232=0,a.d5421=0,a.d5433=0,a.dedt=0,a.del1=0,a.del2=0,a.del3=0,a.didt=0,a.dmdt=0,a.dnodt=0,a.domdt=0,a.e3=0,a.ee2=0,a.peo=0,a.pgho=0,a.pho=0,a.pinco=0,a.plo=0,a.se2=0,a.se3=0,a.sgh2=0,a.sgh3=0,a.sgh4=0,a.sh2=0,a.sh3=0,a.si2=0,a.si3=0,a.sl2=0,a.sl3=0,a.sl4=0,a.gsto=0,a.xfact=0,a.xgh2=0,a.xgh3=0,a.xgh4=0,a.xh2=0,a.xh3=0,a.xi2=0,a.xi3=0,a.xl2=0,a.xl3=0,a.xl4=0,a.xlamo=0,a.zmol=0,a.zmos=0,a.atime=0,a.xli=0,a.xni=0,a.bstar=e,a.ecco=t,a.argpo=d,a.inclo=s,a.mo=h,a.no=m,a.nodeo=c,a.operationmode=o;var xa=78/La+1,da=42/La,Ca=da*da*da*da;a.init="y",a.t=0;var Ea={ecco:a.ecco,epoch:v,inclo:a.inclo,no:a.no,method:a.method,opsmode:a.operationmode},va=tr(Ea),fa=va.ao,ka=va.con42,wa=va.cosio,za=va.cosio2,Ya=va.eccsq,_a=va.omeosq,Ka=va.posq,Fa=va.rp,ba=va.rteosq,ya=va.sinio;if(a.no=va.no,a.con41=va.con41,a.gsto=va.gsto,a.a=Math.pow(a.no*R0,-2/3),a.alta=a.a*(1+a.ecco)-1,a.altp=a.a*(1-a.ecco)-1,a.error=0,_a>=0||a.no>=0){if(a.isimp=0,Fa<220/La+1&&(a.isimp=1),S=xa,ta=Ca,O=(Fa-1)*La,O<156){S=O-78,O<98&&(S=20);var Na=(120-S)/La;ta=Na*Na*Na*Na,S=S/La+1}aa=1/Ka,p=1/(fa-S),a.eta=fa*a.ecco*p,g=a.eta*a.eta,u=a.ecco*a.eta,Q=Math.abs(1-g),B=ta*Math.pow(p,4),E=B/Math.pow(Q,3.5),V=E*a.no*(fa*(1+1.5*g+u*(4+g))+.375*n0*p/Q*a.con41*(8+3*g*(8+g))),a.cc1=a.bstar*V,G=0,a.ecco>1e-4&&(G=-2*B*p*o0*a.no*ya/a.ecco),a.x1mth2=1-za,a.cc4=2*a.no*E*fa*_a*(a.eta*(2+.5*g)+a.ecco*(.5+2*g)-n0*p/(fa*Q)*(-3*a.con41*(1-2*u+g*(1.5-.5*u))+.75*a.x1mth2*(2*g-u*(1+g))*Math.cos(2*a.argpo))),a.cc5=2*E*fa*_a*(1+2.75*(g+u)+u*g),X=za*za,q=1.5*n0*aa*a.no,A=.5*q*n0*aa,P=-.46875*rr*aa*aa*a.no,a.mdot=a.no+.5*q*ba*a.con41+.0625*A*ba*(13-78*za+137*X),a.argpdot=-.5*q*ka+.0625*A*(7-114*za+395*X)+P*(3-36*za+49*X),H=-q*wa,a.nodedot=H+(.5*A*(4-19*za)+2*P*(3-7*za))*wa,_=a.argpdot+a.nodedot,a.omgcof=a.bstar*G*Math.cos(a.argpo),a.xmcof=0,a.ecco>1e-4&&(a.xmcof=-x0*B*a.bstar/u),a.nodecf=3.5*_a*H*a.cc1,a.t2cof=1.5*a.cc1,Math.abs(wa+1)>15e-13?a.xlcof=-.25*o0*ya*(3+5*wa)/(1+wa):a.xlcof=-.25*o0*ya*(3+5*wa)/qa,a.aycof=-.5*o0*ya;var Ba=1+a.eta*Math.cos(a.mo);if(a.delmo=Ba*Ba*Ba,a.sinmao=Math.sin(a.mo),a.x7thm1=7*za-1,2*Pa/a.no>=225){a.method="d",a.isimp=1,C=0,w=a.inclo;var Wa={epoch:v,ep:a.ecco,argpp:a.argpo,tc:C,inclp:a.inclo,nodep:a.nodeo,np:a.no,e3:a.e3,ee2:a.ee2,peo:a.peo,pgho:a.pgho,pho:a.pho,pinco:a.pinco,plo:a.plo,se2:a.se2,se3:a.se3,sgh2:a.sgh2,sgh3:a.sgh3,sgh4:a.sgh4,sh2:a.sh2,sh3:a.sh3,si2:a.si2,si3:a.si3,sl2:a.sl2,sl3:a.sl3,sl4:a.sl4,xgh2:a.xgh2,xgh3:a.xgh3,xgh4:a.xgh4,xh2:a.xh2,xh3:a.xh3,xi2:a.xi2,xi3:a.xi3,xl2:a.xl2,xl3:a.xl3,xl4:a.xl4,zmol:a.zmol,zmos:a.zmos},i=vr(Wa);a.e3=i.e3,a.ee2=i.ee2,a.peo=i.peo,a.pgho=i.pgho,a.pho=i.pho,a.pinco=i.pinco,a.plo=i.plo,a.se2=i.se2,a.se3=i.se3,a.sgh2=i.sgh2,a.sgh3=i.sgh3,a.sgh4=i.sgh4,a.sh2=i.sh2,a.sh3=i.sh3,a.si2=i.si2,a.si3=i.si3,a.sl2=i.sl2,a.sl3=i.sl3,a.sl4=i.sl4,T=i.sinim,l=i.cosim,k=i.em,U=i.emsq,y=i.s1,ia=i.s2,J=i.s3,W=i.s4,sa=i.s5,N=i.ss1,Oa=i.ss2,ma=i.ss3,M=i.ss4,x=i.ss5,ra=i.sz1,L=i.sz3,$=i.sz11,I=i.sz13,Aa=i.sz21,na=i.sz23,ca=i.sz31,D=i.sz33,a.xgh2=i.xgh2,a.xgh3=i.xgh3,a.xgh4=i.xgh4,a.xh2=i.xh2,a.xh3=i.xh3,a.xi2=i.xi2,a.xi3=i.xi3,a.xl2=i.xl2,a.xl3=i.xl3,a.xl4=i.xl4,a.zmol=i.zmol,a.zmos=i.zmos,Z=i.nm,j=i.z1,F=i.z3,Y=i.z11,la=i.z13,ga=i.z21,Ma=i.z23,pa=i.z31,Da=i.z33;var Ua={inclo:w,init:a.init,ep:a.ecco,inclp:a.inclo,nodep:a.nodeo,argpp:a.argpo,mp:a.mo,opsmode:a.operationmode},Sa=B0(a,Ua);a.ecco=Sa.ep,a.inclo=Sa.inclp,a.nodeo=Sa.nodep,a.argpo=Sa.argpp,a.mo=Sa.mp,K=0,z=0,ea=0;var Va={cosim:l,emsq:U,argpo:a.argpo,s1:y,s2:ia,s3:J,s4:W,s5:sa,sinim:T,ss1:N,ss2:Oa,ss3:ma,ss4:M,ss5:x,sz1:ra,sz3:L,sz11:$,sz13:I,sz21:Aa,sz23:na,sz31:ca,sz33:D,t:a.t,tc:C,gsto:a.gsto,mo:a.mo,mdot:a.mdot,no:a.no,nodeo:a.nodeo,nodedot:a.nodedot,xpidot:_,z1:j,z3:F,z11:Y,z13:la,z21:ga,z23:Ma,z31:pa,z33:Da,ecco:a.ecco,eccsq:Ya,em:k,argpm:K,inclm:w,mm:ea,nm:Z,nodem:z,irez:a.irez,atime:a.atime,d2201:a.d2201,d2211:a.d2211,d3210:a.d3210,d3222:a.d3222,d4410:a.d4410,d4422:a.d4422,d5220:a.d5220,d5232:a.d5232,d5421:a.d5421,d5433:a.d5433,dedt:a.dedt,didt:a.didt,dmdt:a.dmdt,dnodt:a.dnodt,domdt:a.domdt,del1:a.del1,del2:a.del2,del3:a.del3,xfact:a.xfact,xlamo:a.xlamo,xli:a.xli,xni:a.xni},b=er(Va);a.irez=b.irez,a.atime=b.atime,a.d2201=b.d2201,a.d2211=b.d2211,a.d3210=b.d3210,a.d3222=b.d3222,a.d4410=b.d4410,a.d4422=b.d4422,a.d5220=b.d5220,a.d5232=b.d5232,a.d5421=b.d5421,a.d5433=b.d5433,a.dedt=b.dedt,a.didt=b.didt,a.dmdt=b.dmdt,a.dnodt=b.dnodt,a.domdt=b.domdt,a.del1=b.del1,a.del2=b.del2,a.del3=b.del3,a.xfact=b.xfact,a.xlamo=b.xlamo,a.xli=b.xli,a.xni=b.xni}a.isimp!==1&&(f=a.cc1*a.cc1,a.d2=4*fa*p*f,oa=a.d2*p*a.cc1/3,a.d3=(17*fa+S)*oa,a.d4=.5*oa*fa*p*(221*fa+31*S)*a.cc1,a.t3cof=a.d2+2*f,a.t4cof=.25*(3*a.d3+a.cc1*(12*a.d2+10*f)),a.t5cof=.2*(3*a.d4+12*a.cc1*a.d3+6*a.d2*a.d2+15*f*(2*a.d2+f)))}Z0(a,0),a.init="n"}function hr(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"i",o=0,v=r.NORAD_CAT_ID.toString(),e=new Date(r.EPOCH.endsWith("Z")?r.EPOCH:r.EPOCH+"Z"),t=e.getUTCFullYear(),d=Number(t.toString().slice(-2)),s=(e.valueOf()-new Date(Date.UTC(t,0,1,0,0,0)).valueOf())/(86400*1e3)+1,h=Number(r.MEAN_MOTION_DOT),m=Number(r.MEAN_MOTION_DDOT),c=Number(r.BSTAR),l=Number(r.INCLINATION)*$a,T=Number(r.RA_OF_ASC_NODE)*$a,f=Number(r.ECCENTRICITY),V=Number(r.ARG_OF_PERICENTER)*$a,G=Number(r.MEAN_ANOMALY)*$a,B=Number(r.MEAN_MOTION)/nr,E=or(t,s),X=E.mon,k=E.day,U=E.hr,u=E.minute,g=E.sec,K=M0(t,X,k,U,u,g),z={error:o,satnum:v,epochyr:d,epochdays:s,ndot:h,nddot:m,bstar:c,inclo:l,nodeo:T,ecco:f,argpo:V,mo:G,no:B,jdsatepoch:K};return dr(z,{opsmode:n,satn:z.satnum,epoch:z.jdsatepoch-24332815e-1,xbstar:z.bstar,xecco:z.ecco,xargpo:z.argpo,xinclo:z.inclo,xmo:z.mo,xno:z.no,xnodeo:z.nodeo}),z}function P0(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),v=1;v<n;v++)o[v-1]=arguments[v];var e=M0.apply(void 0,o),t=(e-r.jdsatepoch)*V0;return Z0(r,t)}function _0(r){return r*$a}function k0(r){var n=r.longitude,o=r.latitude,v=r.height,e=6378.137,t=6356.7523142,d=(e-t)/e,s=2*d-d*d,h=e/Math.sqrt(1-s*(Math.sin(o)*Math.sin(o))),m=(h+v)*Math.cos(o)*Math.cos(n),c=(h+v)*Math.cos(o)*Math.sin(n),l=(h*(1-s)+v)*Math.sin(o);return{x:m,y:c,z:l}}function sr(r,n){var o=r.x*Math.cos(n)-r.y*Math.sin(n),v=r.x*Math.sin(n)+r.y*Math.cos(n),e=r.z;return{x:o,y:v,z:e}}function F0(r,n){var o=r.x*Math.cos(n)+r.y*Math.sin(n),v=r.x*-Math.sin(n)+r.y*Math.cos(n),e=r.z;return{x:o,y:v,z:e}}function mr(r,n){var o=r.longitude,v=r.latitude,e=k0(r),t=n.x-e.x,d=n.y-e.y,s=n.z-e.z,h=Math.sin(v)*Math.cos(o)*t+Math.sin(v)*Math.sin(o)*d-Math.cos(v)*s,m=-Math.sin(o)*t+Math.cos(o)*d,c=Math.cos(v)*Math.cos(o)*t+Math.cos(v)*Math.sin(o)*d+Math.sin(v)*s;return{topS:h,topE:m,topZ:c}}function cr(r){var n=r.topS,o=r.topE,v=r.topZ,e=Math.sqrt(n*n+o*o+v*v),t=Math.asin(v/e),d=Math.atan2(-o,n)+Pa;return{azimuth:d,elevation:t,rangeSat:e}}function b0(r,n){var o=mr(r,n);return cr(o)}function gr(r){var n=(r-2451545)/36525,o=(280.46+36000.77*n)%360,v=n,e=(357.5277233+35999.05034*v*$a)%R;e<0&&(e+=R);var t=(o+1.914666471*Math.sin(e)+.019994643*Math.sin(2*e))%360*$a,d=(23.439291-.0130042*v)*$a,s=1.000140612-.016708617*Math.cos(e)-139589e-9*Math.cos(2*e),h=[s*Math.cos(t),s*Math.cos(d)*Math.sin(t),s*Math.sin(d)*Math.sin(t)],m=Math.atan(Math.cos(d)*Math.tan(t)),c=m;Math.abs(t-c)>Pa*.5&&(c+=.5*Pa*Math.round((t-m)/(.5*Pa)));var l=Math.asin(Math.sin(d)*Math.sin(t));return{rsun:h,rtasc:c,decl:l}}class Ja{static STARLINK_ERAS=[{launchedFrom:"2019-05-24",magnitude1000Km:5.93},{launchedFrom:"2020-08-07",magnitude1000Km:7.21}];static STARLINK_ORBIT_RAISING={belowKm:357,magnitude1000Km:4.58};static MEASURED_CONSTELLATIONS=[{namePrefix:"ONEWEB-",eras:[{launchedFrom:"2019-02-27",magnitude1000Km:7.18}]},{namePrefix:"SPACEMOBILE-",eras:[{launchedFrom:"2024-09-12",magnitude1000Km:3.77},{launchedFrom:"2025-12-24",magnitude1000Km:4.32}]}];static of(n,o,v,e,t=1/0){if(e<=0)return;let d;if(n.stdMag!==void 0){const s=(1+Math.cos(_0(v)))/2;if(s<=0)return;d=n.stdMag-15.75+2.5*Math.log10(o*o/s)}else{const s=Ja.measured1000Km(n,t);s!==void 0&&(d=s+5*Math.log10(o/1e3))}return d===void 0?void 0:d-2.5*Math.log10(e)}static measured1000Km(n,o=1/0){if(n.kind==="starlink"){const e=Ja.STARLINK_ORBIT_RAISING;return o<e.belowKm?e.magnitude1000Km:Ja.starlinkMagnitude1000Km(n.launch)}const v=Ja.MEASURED_CONSTELLATIONS.find(e=>n.name.startsWith(e.namePrefix));return v?Ja.eraOf(v.eras,n.launch):void 0}static starlinkMagnitude1000Km(n){return Ja.eraOf(Ja.STARLINK_ERAS,n)}static eraOf(n,o){return([...n].reverse().find(e=>o!==void 0&&o>=e.launchedFrom)??n[n.length-1]).magnitude1000Km}}class r0{static CANDIDATE_WINDOW_S=60;static CANDIDATE_BELOW_HORIZON_DEG=-10;records;candidates;constructor(n){this.records=[];for(const o of n){const v=r0.satrecOf(o);v&&this.records.push({object:o,satrec:v})}}get size(){return this.records.length}static satrecOf(n){const o=n.elements;try{const v=hr({OBJECT_NAME:n.name,OBJECT_ID:String(n.norad),EPOCH:new Date(o.epochMs).toISOString().replace("Z",""),MEAN_MOTION:o.meanMotion,ECCENTRICITY:o.eccentricity,INCLINATION:o.inclinationDeg,RA_OF_ASC_NODE:o.raanDeg,ARG_OF_PERICENTER:o.argOfPerigeeDeg,MEAN_ANOMALY:o.meanAnomalyDeg,NORAD_CAT_ID:n.norad,ELEMENT_SET_NO:999,BSTAR:o.bstar,MEAN_MOTION_DOT:0,MEAN_MOTION_DDOT:0});return v.error?void 0:v}catch{return}}positionsAt(n,o,v=0){const e=this.frameAt(n,o),t=[];for(const d of this.candidateIndices(n,o)){const s=this.positionOf(this.records[d],n,e);s&&s.altitudeDeg>=v&&t.push(s)}return t}passesDuring(n,o,v,e=10){const t=[],d=new Map;for(let s=n.getTime();s<=o.getTime();s+=e*1e3){const h=new Date(s);for(const m of this.positionsAt(h,v)){if(m.sunlitFraction<=0)continue;const c=d.get(m.object.norad);if(!c||s-c.end.getTime()>e*1e3){const l={object:m.object,start:h,end:h,peak:{...m,date:h}};d.set(m.object.norad,l),t.push(l);continue}c.end=h,r0.outshines(m,c.peak)&&(c.peak={...m,date:h})}}return t}static outshines(n,o){return n.magnitude!==void 0&&o.magnitude!==void 0?n.magnitude<o.magnitude:n.magnitude!==void 0?!0:o.magnitude!==void 0?!1:n.altitudeDeg>o.altitudeDeg}frameAt(n,o){const v=U0(n),e={latitude:_0(o.lat),longitude:_0(o.lng),height:o.elevationM/1e3},t=sr(k0(e),v),[d,s,h]=gr(M0(n)).rsun;return{gmst:v,geodetic:e,observerEci:t,sunEciAu:{x:d,y:s,z:h}}}positionOf(n,o,v){const e=P0(n.satrec,o);if(!e||!e.position||Number.isNaN(e.position.x))return;const t=e.position,d=b0(v.geodetic,F0(t,v.gmst)),s=1-r0.shadowFraction(t,v.sunEciAu),h=r0.phaseAngleDeg(t,v.sunEciAu,v.observerEci),m=Math.hypot(t.x,t.y,t.z)-6371;return{object:n.object,azimuthDeg:d.azimuth*180/Math.PI,altitudeDeg:d.elevation*180/Math.PI,rangeKm:d.rangeSat,heightKm:m,sunlitFraction:s,phaseAngleDeg:h,magnitude:Ja.of(n.object,d.rangeSat,h,s,m)}}static shadowFraction(n,o){const v=1495978707e-1,e=696e3,t=6378.137,d=[o.x*v-n.x,o.y*v-n.y,o.z*v-n.z],s=Math.hypot(d[0],d[1],d[2]),h=Math.hypot(n.x,n.y,n.z),m=Math.asin(Math.min(1,e/s)),c=Math.asin(Math.min(1,t/h)),l=-(n.x*d[0]+n.y*d[1]+n.z*d[2])/(h*s),T=Math.acos(Math.max(-1,Math.min(1,l)));if(T>=m+c)return 0;if(T<=c-m)return 1;const f=(T*T+m*m-c*c)/(2*T),V=Math.sqrt(Math.max(0,m*m-f*f)),G=m*m*Math.acos(Math.max(-1,Math.min(1,f/m)))+c*c*Math.acos(Math.max(-1,Math.min(1,(T-f)/c)))-T*V;return Math.min(1,Math.max(0,G/(Math.PI*m*m)))}static phaseAngleDeg(n,o,v){const e=1495978707e-1,t=[o.x*e-n.x,o.y*e-n.y,o.z*e-n.z],d=[v.x-n.x,v.y-n.y,v.z-n.z],h=(t[0]*d[0]+t[1]*d[1]+t[2]*d[2])/(Math.hypot(t[0],t[1],t[2])*Math.hypot(d[0],d[1],d[2]));return Math.acos(Math.max(-1,Math.min(1,h)))*180/Math.PI}candidateIndices(n,o){const v=r0.CANDIDATE_WINDOW_S*1e3,e=Math.floor(n.getTime()/v)*v,t=`${o.lat.toFixed(2)},${o.lng.toFixed(2)}`;if(this.candidates?.windowStart===e&&this.candidates.observerKey===t)return this.candidates.indices;const d=new Date(e+v/2),s=this.frameAt(d,o),h=[];return this.records.forEach((m,c)=>{const l=P0(m.satrec,d);if(!l||!l.position||Number.isNaN(l.position.x))return;b0(s.geodetic,F0(l.position,s.gmst)).elevation*180/Math.PI>=r0.CANDIDATE_BELOW_HORIZON_DEG&&h.push(c)}),this.candidates={windowStart:e,observerKey:t,indices:h},h}}export{Ja as SatelliteMagnitude,r0 as SatellitePasses};
|