@astronomy-bundle/moon 9.5.1 → 9.5.2

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 CHANGED
@@ -257,8 +257,8 @@ const topocentricElongation = moon.getTopocentricElongation(location);
257
257
  ```
258
258
 
259
259
  The result of the calculation should be:\
260
- Elongation: *110.792882°*\
261
- Topocentric elongation: *111.462793°*
260
+ Elongation: *110.792854°*\
261
+ Topocentric elongation: *111.462765°*
262
262
 
263
263
  ---
264
264
 
@@ -281,8 +281,8 @@ const topocentricPhaseAngle = moon.getTopocentricPhaseAngle(location);
281
281
  ```
282
282
 
283
283
  The result of the calculation should be:\
284
- Phase angle: *69.075651°*\
285
- Topocentric phase angle: *68.407484°*
284
+ Phase angle: *69.075679°*\
285
+ Topocentric phase angle: *68.407512°*
286
286
 
287
287
  ---
288
288
 
@@ -353,7 +353,8 @@ const topocentricWaxing = moon.isTopocentricWaxing(location);
353
353
  ```
354
354
 
355
355
  The result of the calculation should be:\
356
- Waxing: *true*
356
+ Waxing: *true*\
357
+ Topocentric waxing: *true*
357
358
 
358
359
  ---
359
360
 
@@ -383,7 +384,7 @@ Topocentric apparent magnitude: *-11.08*
383
384
 
384
385
  ### Upcoming lunar phases
385
386
 
386
- **Description:** These methods return the `TimeOfInterest` of the next occurrence of each lunar phase after the Moon's current date. The four phases are new moon, first quarter, full moon, and last quarter.
387
+ **Description:** These methods return the `TimeOfInterest` of the principal lunar phases in the lunation selected from the Moon's current date. Depending on the phase, the result can be before or after the Moon's current date. The four phases are new moon, first quarter, full moon, and last quarter.
387
388
 
388
389
  **Example**: Get upcoming lunar phases for 12 April 1992 at 00:00 UTC
389
390
 
@@ -0,0 +1,2 @@
1
+ var ot=Object.defineProperty;var L0=(t,e)=>{for(var n in e)ot(t,n,{get:e[n],enumerable:!0})};var r0={};L0(r0,{VSOP87_X:()=>Ct,VSOP87_Y:()=>At,VSOP87_Z:()=>Ot});var rt=[[1.75347045673],[.03341656456,4.66925680417,6283.0758499914],[.00034894275,4.62610241759,12566.1516999828],[3497056e-11,2.74411800971,5753.3848848968],[3417571e-11,2.82886579606,3.523118349],[3135896e-11,3.62767041758,77713.7714681205],[2676218e-11,4.41808351397,7860.4193924392],[2342687e-11,6.13516237631,3930.2096962196],[1324292e-11,.74246356352,11506.7697697936],[1273166e-11,2.03709655772,529.6909650946],[1199167e-11,1.10962944315,1577.3435424478],[99025e-10,5.23268129594,5884.9268465832],[901855e-11,2.04505443513,26.2983197998],[857223e-11,3.50849156957,398.1490034082],[779786e-11,1.17882652114,5223.6939198022],[753141e-11,2.53339053818,5507.5532386674],[505264e-11,4.58292563052,18849.2275499742],[492379e-11,4.20506639861,775.522611324],[356655e-11,2.91954116867,.0673103028],[317087e-11,5.84901952218,11790.6290886588],[284125e-11,1.89869034186,796.2980068164],[271039e-11,.31488607649,10977.078804699],[24281e-10,.34481140906,5486.777843175],[20616e-10,4.80646606059,2544.3144198834],[205385e-11,1.86947813692,5573.1428014331],[202261e-11,2.45767795458,6069.7767545534],[155516e-11,.83306073807,213.299095438],[132212e-11,3.41118275555,2942.4634232916],[126184e-11,1.0830263021,20.7753954924],[115132e-11,.64544911683,.9803210682],[102851e-11,.63599846727,4694.0029547076],[101895e-11,.97569221824,15720.8387848784],[101724e-11,4.26679821365,7.1135470008],[99206e-11,6.20992940258,2146.1654164752],[97607e-11,.6810127227,155.4203994342],[85803e-11,5.98322631256,161000.6857376741],[85128e-11,1.29870743025,6275.9623029906],[84711e-11,3.67080093025,71430.69561812909],[79637e-11,1.807913307,17260.1546546904],[78756e-11,3.03698313141,12036.4607348882],[74651e-11,1.75508916159,5088.6288397668],[73874e-11,3.50319443167,3154.6870848956],[73547e-11,4.67926565481,801.8209311238],[69627e-11,.83297596966,9437.762934887],[62449e-11,3.97763880587,8827.3902698748],[61148e-11,1.81839811024,7084.8967811152],[56963e-11,2.78430398043,6286.5989683404],[56116e-11,4.38694880779,14143.4952424306],[55577e-11,3.47006009062,6279.5527316424],[51992e-11,.18914945834,12139.5535091068],[51605e-11,1.33282746983,1748.016413067],[51145e-11,.28306864501,5856.4776591154],[49e-8,.48735065033,1194.4470102246],[41036e-11,5.36817351402,8429.2412664666],[40938e-11,2.39850881707,19651.048481098],[392e-9,6.16832995016,10447.3878396044],[3677e-10,6.04133859347,10213.285546211],[36596e-11,2.56955238628,1059.3819301892],[35954e-11,1.70876111898,2352.8661537718],[35566e-11,1.77597314691,6812.766815086],[33291e-11,.59309499459,17789.845619785],[30412e-11,.44294464135,83996.84731811189],[30047e-11,2.73975123935,1349.8674096588],[25352e-11,3.16470953405,4690.4798363586]],it=[[6283.31966747491],[.00206058863,2.67823455584,6283.0758499914],[430343e-10,2.63512650414,12566.1516999828],[425264e-11,1.59046980729,3.523118349],[119261e-11,5.79557487799,26.2983197998],[108977e-11,2.96618001993,1577.3435424478],[93478e-11,2.59212835365,18849.2275499742],[72122e-11,1.13846158196,529.6909650946],[67768e-11,1.87472304791,398.1490034082],[67327e-11,4.40918235168,5507.5532386674],[59027e-11,2.8879703846,5223.6939198022],[55976e-11,2.17471680261,155.4203994342],[45407e-11,.39803079805,796.2980068164],[36369e-11,.46624739835,775.522611324],[28958e-11,2.64707383882,7.1135470008],[20844e-11,5.34138275149,.9803210682],[19097e-11,1.84628332577,5486.777843175],[18508e-11,4.96855124577,213.299095438],[17293e-11,2.99116864949,6275.9623029906],[16233e-11,.03216483047,2544.3144198834],[15832e-11,1.43049285325,2146.1654164752],[14615e-11,1.20532366323,10977.078804699],[12461e-11,2.83432285512,1748.016413067],[11877e-11,3.25804815607,5088.6288397668],[11808e-11,5.2737979048,1194.4470102246],[11514e-11,2.07502418155,4694.0029547076],[10641e-11,.76614199202,553.5694028424],[9969e-11,1.30262991097,6286.5989683404],[9721e-11,4.23925472239,1349.8674096588],[9452e-11,2.69957062864,242.728603974],[8577e-11,5.64475868067,951.7184062506],[7576e-11,5.30062664886,2352.8661537718],[6385e-11,2.65033984967,9437.762934887],[6101e-11,4.66632584188,4690.4798363586]],at=[[.0005291887],[8719837e-11,1.07209665242,6283.0758499914],[309125e-11,.86728818832,12566.1516999828],[27339e-11,.05297871691,3.523118349],[16334e-11,5.18826691036,26.2983197998],[15752e-11,3.6845788943,155.4203994342],[9541e-11,.75742297675,18849.2275499742],[8937e-11,2.05705419118,77713.7714681205],[6952e-11,.8267330541,775.522611324],[5064e-11,4.66284525271,1577.3435424478],[4061e-11,1.03057162962,7.1135470008],[381e-10,3.4405080349,5573.1428014331],[3463e-11,5.14074632811,796.2980068164],[3169e-11,6.05291851171,5507.5532386674],[302e-10,1.19246506441,242.728603974],[2886e-11,6.11652627155,529.6909650946],[2714e-11,.30637881025,398.1490034082],[2538e-11,2.27992810679,553.5694028424],[2371e-11,4.38118838167,5223.6939198022],[2079e-11,3.75435330484,.9803210682]],ct=[[289226e-11,5.84384198723,6283.0758499914],[34955e-11],[16819e-11,5.48766912348,12566.1516999828],[2962e-11,5.19577265202,155.4203994342],[1288e-11,4.72200252235,3.523118349],[714e-11,5.30045809128,18849.2275499742],[635e-11,5.96925937141,242.728603974]],st=[[7717e-11,4.13446589358,6283.0758499914],[765e-11,3.83803776214,12566.1516999828],[42e-10,.41925861858,155.4203994342]],ut=[[172e-11,2.7657906951,6283.0758499914]],lt=[[27962e-10,3.19870156017,84334.66158130829],[101643e-11,5.42248619256,5507.5532386674],[80445e-11,3.88013204458,5223.6939198022],[43806e-11,3.70444689758,2352.8661537718],[31933e-11,4.00026369781,1577.3435424478]],pt=[[903e-10,3.8972906189,5507.5532386674],[6177e-11,1.73038850355,5223.6939198022]],mt=[],ht=[],gt=[],dt=[],Mt=[[1.00013988799],[.01670699626,3.09846350771,6283.0758499914],[.00013956023,3.0552460962,12566.1516999828],[308372e-10,5.19846674381,77713.7714681205],[1628461e-11,1.17387749012,5753.3848848968],[1575568e-11,2.84685245825,7860.4193924392],[924799e-11,5.45292234084,11506.7697697936],[542444e-11,4.56409149777,3930.2096962196],[47211e-10,3.66100022149,5884.9268465832],[345983e-11,.96368617687,5507.5532386674],[32878e-10,5.89983646482,5223.6939198022],[306784e-11,.29867139512,5573.1428014331],[243189e-11,4.27349536153,11790.6290886588],[211829e-11,5.84714540314,1577.3435424478],[185752e-11,5.02194447178,10977.078804699],[174844e-11,3.01193636534,18849.2275499742],[109835e-11,5.05510636285,5486.777843175],[98316e-11,.88681311277,6069.7767545534],[86499e-11,5.68959778254,15720.8387848784],[85825e-11,1.27083733351,161000.6857376741],[64903e-11,.27250613787,17260.1546546904],[62916e-11,.92177108832,529.6909650946],[57056e-11,2.01374292014,83996.84731811189],[55736e-11,5.24159798933,71430.69561812909],[49384e-11,3.24501240359,2544.3144198834],[46963e-11,2.57805070386,775.522611324],[44661e-11,5.53715807302,9437.762934887],[42515e-11,6.01110242003,6275.9623029906],[38968e-11,5.36071738169,4694.0029547076],[38245e-11,2.39255343974,8827.3902698748],[3749e-10,.82952922332,19651.048481098],[36957e-11,4.90107591914,12139.5535091068],[3566e-10,1.67468058995,12036.4607348882],[34537e-11,1.84270693282,2942.4634232916],[33193e-11,.24370300098,7084.8967811152],[31921e-11,.18368229781,5088.6288397668],[31846e-11,1.77775642085,398.1490034082],[28464e-11,1.21344868176,6286.5989683404],[27793e-11,1.89934330904,6279.5527316424],[26275e-11,4.58896850401,10447.3878396044]],bt=[[.00103018608,1.10748969588,6283.0758499914],[1721238e-11,1.06442301418,12566.1516999828],[32346e-11,1.02169059149,18849.2275499742],[30799e-11,2.84353804832,5507.5532386674],[24971e-11,1.31906709482,5223.6939198022],[18485e-11,1.42429748614,1577.3435424478],[10078e-11,5.91378194648,10977.078804699],[8654e-11,1.42046854427,6275.9623029906],[8634e-11,.27146150602,5486.777843175],[5069e-11,1.68613426734,5088.6288397668]],ft=[[4359385e-11,5.78455133738,6283.0758499914],[123633e-11,5.57934722157,12566.1516999828],[8792e-11,3.62777733395,77713.7714681205],[5689e-11,1.86958905084,5573.1428014331],[3301e-11,5.47027913302,18849.2275499742],[1471e-11,4.48028885617,5507.5532386674]],Et=[[144595e-11,4.27319435148,6283.0758499914],[6729e-11,3.91697608662,12566.1516999828]],St=[[3858e-11,2.56384387339,6283.0758499914]],Rt=[],Ct=[rt,it,at,ct,st,ut],At=[lt,pt,mt,ht,gt,dt],Ot=[Mt,bt,ft,Et,St,Rt];var i0={};L0(i0,{VSOP87_X:()=>zt,VSOP87_Y:()=>Bt,VSOP87_Z:()=>Yt});var Dt=[[1.75347045673],[.03341656453,4.66925680415,6283.0758499914],[.00034894275,4.62610242189,12566.1516999828],[3497056e-11,2.74411783405,5753.3848848968],[3417572e-11,2.82886579754,3.523118349],[3135899e-11,3.62767041756,77713.7714681205],[2676218e-11,4.41808345438,7860.4193924392],[2342691e-11,6.13516214446,3930.2096962196],[1324294e-11,.74246341673,11506.7697697936],[1273165e-11,2.03709657878,529.6909650946],[1199167e-11,1.10962946234,1577.3435424478],[99025e-10,5.23268072088,5884.9268465832],[901854e-11,2.04505446477,26.2983197998],[857223e-11,3.50849152283,398.1490034082],[779786e-11,1.17882681962,5223.6939198022],[753141e-11,2.53339052847,5507.5532386674],[505267e-11,4.58292599973,18849.2275499742],[492392e-11,4.20505711826,775.522611324],[356672e-11,2.91954114478,.0673103028],[317087e-11,5.84901948512,11790.6290886588],[284125e-11,1.89869240932,796.2980068164],[271112e-11,.31486255375,10977.078804699],[242879e-11,.34481445893,5486.777843175],[206217e-11,4.80646631478,2544.3144198834],[205478e-11,1.86953770281,5573.1428014331],[202318e-11,2.45767790232,6069.7767545534],[155516e-11,.83306084617,213.299095438],[132212e-11,3.41118292683,2942.4634232916],[126225e-11,1.08295459501,20.7753954924],[115132e-11,.64544911683,.9803210682],[102851e-11,.63599845579,4694.0029547076],[101895e-11,.97569280312,15720.8387848784],[101724e-11,4.2667980198,7.1135470008],[99206e-11,6.20992926918,2146.1654164752],[97607e-11,.68101342359,155.4203994342],[85803e-11,5.9832263126,161000.6857376741],[85128e-11,1.29870764804,6275.9623029906],[84711e-11,3.67080093031,71430.69561812909],[79637e-11,1.80791287082,17260.1546546904],[78757e-11,3.03697458703,12036.4607348882],[74651e-11,1.755089133,5088.6288397668],[73874e-11,3.50319414955,3154.6870848956],[73547e-11,4.67926633877,801.8209311238],[69627e-11,.83297621398,9437.762934887],[62449e-11,3.97763912806,8827.3902698748],[61148e-11,1.81839892984,7084.8967811152],[56963e-11,2.78430458592,6286.5989683404],[56116e-11,4.38694865354,14143.4952424306],[55577e-11,3.47006059924,6279.5527316424],[51992e-11,.18914947184,12139.5535091068],[51605e-11,1.33282739866,1748.016413067],[51145e-11,.28306832879,5856.4776591154],[49e-8,.48735014197,1194.4470102246],[41036e-11,5.36817592855,8429.2412664666],[40938e-11,2.39850938714,19651.048481098],[392e-9,6.16833020996,10447.3878396044],[3677e-10,6.04133863162,10213.285546211],[36596e-11,2.56957481827,1059.3819301892],[35954e-11,1.70875808777,2352.8661537718],[3557e-10,1.775968892,6812.766815086],[33296e-11,.59310278598,17789.845619785],[30412e-11,.44294464169,83996.84731811189],[30047e-11,2.73975124088,1349.8674096588],[25352e-11,3.16470891653,4690.4798363586]],xt=[[6283.0758499914],[.00206058863,2.67823455808,6283.0758499914],[4303419e-11,2.63512233481,12566.1516999828],[425264e-11,1.59046982018,3.523118349],[119305e-11,5.79555765566,26.2983197998],[109017e-11,2.96631010675,1577.3435424478],[93479e-11,2.59211109542,18849.2275499742],[72121e-11,1.13840581212,529.6909650946],[67784e-11,1.87453300345,398.1490034082],[6735e-10,4.40932832004,5507.5532386674],[59045e-11,2.88815790631,5223.6939198022],[55976e-11,2.17471740035,155.4203994342],[45411e-11,.39799502896,796.2980068164],[36298e-11,.46875437227,775.522611324],[28962e-11,2.64732254645,7.1135470008],[20844e-11,5.34138275149,.9803210682],[19097e-11,1.84628376049,5486.777843175],[18508e-11,4.96855179468,213.299095438],[17293e-11,2.9911676063,6275.9623029906],[16233e-11,.03216587315,2544.3144198834],[15832e-11,1.43049301283,2146.1654164752],[14608e-11,1.2046979369,10977.078804699],[12461e-11,2.83432282119,1748.016413067],[11877e-11,3.25805082007,5088.6288397668],[11808e-11,5.27379760438,1194.4470102246],[11514e-11,2.07502080082,4694.0029547076],[10641e-11,.76614722966,553.5694028424],[9969e-11,1.30263423409,6286.5989683404],[9721e-11,4.2392586526,1349.8674096588],[9452e-11,2.69956827011,242.728603974],[8577e-11,5.6447608598,951.7184062506],[7576e-11,5.30056172859,2352.8661537718],[6385e-11,2.65034514038,9437.762934887],[6101e-11,4.66633726278,4690.4798363586]],yt=[[8721859e-11,1.07253635559,6283.0758499914],[294833e-11,.43717350256,12566.1516999828],[27338e-11,.05295636147,3.523118349],[16333e-11,5.18820215724,26.2983197998],[15745e-11,3.68504712183,155.4203994342],[9425e-11,.29667114694,18849.2275499742],[8938e-11,2.05706319592,77713.7714681205],[694e-10,.82691541038,775.522611324],[5061e-11,4.6624323168,1577.3435424478],[406e-10,1.03067032318,7.1135470008],[3809e-11,3.44043369494,5573.1428014331],[3464e-11,5.14021224609,796.2980068164],[3172e-11,6.05479318507,5507.5532386674],[302e-10,1.19240008524,242.728603974],[2885e-11,6.11705865396,529.6909650946],[2719e-11,.30363248164,398.1490034082],[2538e-11,2.27966434314,553.5694028424],[2365e-11,4.37666117992,5223.6939198022],[2078e-11,3.75435095487,.9803210682],[1675e-11,.90149951436,951.7184062506]],_t=[[289058e-11,5.84173149732,6283.0758499914],[20712e-11,6.0498393902,12566.1516999828],[2962e-11,5.1956057957,155.4203994342],[1288e-11,4.7219761197,3.523118349],[635e-11,5.96904899168,242.728603974],[57e-10,5.54182903238,18849.2275499742],[402e-11,3.78606612895,553.5694028424]],Lt=[[7714e-11,4.14117321449,6283.0758499914],[1016e-11,3.27573644241,12566.1516999828],[42e-10,.41892851415,155.4203994342]],Tt=[[172e-11,2.74854172392,6283.0758499914]],Vt=[[27962e-10,3.19870156017,84334.66158130829],[101643e-11,5.42248619256,5507.5532386674],[80445e-11,3.88013204458,5223.6939198022],[43806e-11,3.70444689759,2352.8661537718],[31933e-11,4.00026369781,1577.3435424478]],Pt=[[.00227777722,3.4137662053,6283.0758499914],[3805678e-11,3.37063423795,12566.1516999828]],It=[],Gt=[],Ht=[],Nt=[],qt=[[1.00013988784],[.01670699632,3.09846350258,6283.0758499914],[.00013956024,3.05524609456,12566.1516999828],[308372e-10,5.19846674381,77713.7714681205],[1628463e-11,1.17387558054,5753.3848848968],[1575572e-11,2.84685214877,7860.4193924392],[924799e-11,5.45292236722,11506.7697697936],[542439e-11,4.56409151453,3930.2096962196],[47211e-10,3.66100022149,5884.9268465832],[345969e-11,.96368627272,5507.5532386674],[32878e-10,5.89983686142,5223.6939198022],[306784e-11,.29867139512,5573.1428014331],[243181e-11,4.2734953079,11790.6290886588],[211836e-11,5.84714461348,1577.3435424478],[18574e-10,5.02199710705,10977.078804699],[174844e-11,3.01193636733,18849.2275499742],[109835e-11,5.0551063586,5486.777843175],[98316e-11,.88681311278,6069.7767545534],[865e-9,5.68956418946,15720.8387848784],[85831e-11,1.27079125277,161000.6857376741],[64908e-11,.27251341435,17260.1546546904],[62917e-11,.92177053978,529.6909650946],[57056e-11,2.01374292245,83996.84731811189],[55736e-11,5.2415979917,71430.69561812909],[49384e-11,3.24501240359,2544.3144198834],[46966e-11,2.57799853213,775.522611324],[44666e-11,5.53715663816,9437.762934887],[4252e-10,6.01110257982,6275.9623029906],[38963e-11,5.36063832897,4694.0029547076],[38245e-11,2.39255343973,8827.3902698748],[37486e-11,.82961281844,19651.048481098],[36957e-11,4.90107587287,12139.5535091068],[35661e-11,1.67447135798,12036.4607348882],[34537e-11,1.84270693281,2942.4634232916],[33193e-11,.24370221704,7084.8967811152],[31922e-11,.18368299942,5088.6288397668],[31846e-11,1.77775642078,398.1490034082],[28468e-11,1.21344887533,6286.5989683404],[27795e-11,1.89934427832,6279.5527316424],[26275e-11,4.58896863104,10447.3878396044]],Jt=[[.00103018607,1.10748968172,6283.0758499914],[1721238e-11,1.06442300386,12566.1516999828],[32345e-11,1.02168583254,18849.2275499742],[30801e-11,2.84358443952,5507.5532386674],[24978e-11,1.31906570344,5223.6939198022],[18487e-11,1.42428709076,1577.3435424478],[10077e-11,5.91385248388,10977.078804699],[8654e-11,1.42046854427,6275.9623029906],[8635e-11,.27158192945,5486.777843175],[5069e-11,1.68613408916,5088.6288397668]],Ft=[[4359385e-11,5.78455133808,6283.0758499914],[123633e-11,5.57935427994,12566.1516999828],[8792e-11,3.62777893099,77713.7714681205],[5689e-11,1.86958905084,5573.1428014331],[3302e-11,5.47034879713,18849.2275499742],[1471e-11,4.47964125007,5507.5532386674]],Ut=[[144595e-11,4.27319433901,6283.0758499914],[6729e-11,3.91706261708,12566.1516999828]],jt=[[3858e-11,2.56389016346,6283.0758499914]],wt=[],zt=[Dt,xt,yt,_t,Lt,Tt],Bt=[Vt,Pt,It,Gt,Ht,Nt],Yt=[qt,Jt,Ft,Ut,jt,wt];function I(t,e=0){let n=10**e;return Math.round(t*n)/n}function A(t,e){let n=t.toString();for(;n.length<e;)n=`0${n}`;return n}function m(t,e=360){let n=t%e;return n<0&&(n=n+e),n}function G(t){return t/3600}var H=.996647189335,$t=1-H,bn=1.002738*15,a0=[[0,0,0,0,1,-171996,-174.2,92025,8.9],[0,0,2,-2,2,-13187,-1.6,5736,-3.1],[0,0,2,0,2,-2274,-.2,977,-.5],[0,0,0,0,2,2062,.2,-895,.5],[0,1,0,0,0,1426,-3.4,54,-.1],[1,0,0,0,0,712,.1,-7,0],[0,1,2,-2,2,-517,1.2,224,-.6],[0,0,2,0,1,-386,-.4,200,0],[1,0,2,0,2,-301,0,129,-.1],[0,-1,2,-2,2,217,-.5,-95,.3],[1,0,0,-2,0,-158,0,-1,0],[0,0,2,-2,1,129,.1,-70,0],[-1,0,2,0,2,123,0,-53,0],[0,0,0,2,0,63,0,-2,0],[1,0,0,0,1,63,.1,-33,0],[-1,0,2,2,2,-59,0,26,0],[-1,0,0,0,1,-58,-.1,32,0],[1,0,2,0,1,-51,0,27,0],[2,0,0,-2,0,48,0,1,0],[-2,0,2,0,1,46,0,-24,0],[0,0,2,2,2,-38,0,16,0],[2,0,2,0,2,-31,0,13,0],[2,0,0,0,0,29,0,-1,0],[1,0,2,-2,2,29,0,-12,0],[0,0,2,0,0,26,0,-1,0],[0,0,2,-2,0,-22,0,0,0],[-1,0,2,0,1,21,0,-10,0],[0,2,0,0,0,17,-.1,0,0],[0,2,2,-2,2,-16,.1,7,0],[-1,0,0,2,1,16,0,-8,0],[0,1,0,0,1,-15,0,9,0],[1,0,0,-2,1,-13,0,7,0],[0,-1,0,0,1,-12,0,6,0],[2,0,-2,0,0,11,0,0,0],[-1,0,2,2,1,-10,0,5,0],[1,0,2,2,2,-8,0,3,0],[1,1,0,-2,0,-7,0,0,0],[0,1,2,0,2,7,0,-3,0],[0,-1,2,0,2,-7,0,3,0],[0,0,2,2,1,-7,0,3,0],[-2,0,0,2,1,-6,0,3,0],[1,0,0,2,0,6,0,0,0],[2,0,2,-2,2,6,0,-3,0],[0,0,0,2,1,-6,0,3,0],[1,0,2,-2,1,6,0,-3,0],[0,-1,2,-2,1,-5,0,3,0],[0,0,0,-2,1,-5,0,3,0],[1,-1,0,0,0,5,0,0,0],[2,0,2,0,1,-5,0,3,0],[2,0,0,-2,1,4,0,-2,0],[0,1,2,-2,1,4,0,-2,0],[1,0,0,-1,0,-4,0,0,0],[0,1,0,-2,0,-4,0,0,0],[1,0,-2,0,0,4,0,0,0],[0,0,0,1,0,-4,0,0,0],[-2,0,2,0,2,-3,0,1,0],[1,-1,0,-1,0,-3,0,0,0],[1,1,0,0,0,-3,0,0,0],[1,0,2,0,0,3,0,0,0],[1,-1,2,0,2,-3,0,1,0],[-1,-1,2,2,2,-3,0,1,0],[3,0,2,0,2,-3,0,1,0],[0,-1,2,2,2,-3,0,1,0],[0,-2,2,-2,1,-2,0,1,0],[-2,0,0,0,1,-2,0,1,0],[1,1,2,0,2,2,0,-1,0],[-1,0,2,-2,1,-2,0,1,0],[2,0,0,0,1,2,0,-1,0],[1,0,0,0,2,-2,0,1,0],[3,0,0,0,0,2,0,0,0],[0,0,2,1,2,2,0,-1,0],[-1,0,2,4,2,-2,0,1,0],[2,0,-2,0,1,1,0,0,0],[2,1,0,-2,0,1,0,0,0],[0,0,-2,2,1,1,0,0,0],[0,1,-2,2,0,-1,0,0,0],[0,1,0,0,2,1,0,0,0],[-1,0,0,1,1,1,0,0,0],[0,1,2,-2,0,-1,0,0,0],[-1,0,0,0,2,1,0,-1,0],[1,0,0,-4,0,-1,0,0,0],[-2,0,2,2,2,1,0,-1,0],[2,0,0,-4,0,-1,0,0,0],[1,1,2,-2,2,1,0,-1,0],[1,0,2,2,1,-1,0,1,0],[-2,0,2,4,2,-1,0,1,0],[-1,0,4,0,2,1,0,0,0],[1,-1,0,-2,0,1,0,0,0],[2,0,2,-2,1,1,0,-1,0],[2,0,2,2,2,-1,0,0,0],[1,0,0,2,1,-1,0,0,0],[0,0,4,-2,2,1,0,0,0],[3,0,2,-2,2,1,0,0,0],[1,0,2,-2,0,-1,0,0,0],[0,1,2,0,1,1,0,0,0],[-1,-1,0,2,1,1,0,0,0],[0,0,-2,0,1,-1,0,0,0],[0,0,2,-1,2,-1,0,0,0],[0,1,0,2,0,-1,0,0,0],[1,0,-2,-2,0,-1,0,0,0],[0,-1,2,0,1,-1,0,0,0],[1,1,0,-2,1,-1,0,0,0],[1,0,-2,2,0,-1,0,0,0],[2,0,0,2,0,1,0,0,0],[0,0,2,4,2,-1,0,0,0],[0,1,0,1,0,1,0,0,0]];var c=Math.PI/180,M=180/Math.PI;var c0=[[0,0,1,0,6288774,-20905355],[2,0,-1,0,1274027,-3699111],[2,0,0,0,658314,-2955968],[0,0,2,0,213618,-569925],[0,1,0,0,-185116,48888],[0,0,0,2,-114332,-3149],[2,0,-2,0,58793,246158],[2,-1,-1,0,57066,-152138],[2,0,1,0,53322,-170733],[2,-1,0,0,45758,-204586],[0,1,-1,0,-40923,-129620],[1,0,0,0,-34720,108743],[0,1,1,0,-30383,104755],[2,0,0,-2,15327,10321],[0,0,1,2,-12528,0],[0,0,1,-2,10980,79661],[4,0,-1,0,10675,-34782],[0,0,3,0,10034,-23210],[4,0,-2,0,8548,-21636],[2,1,-1,0,-7888,24208],[2,1,0,0,-6766,30824],[1,0,-1,0,-5163,-8379],[1,1,0,0,4987,-16675],[2,-1,1,0,4036,-12831],[2,0,2,0,3994,-10445],[4,0,0,0,3861,-11650],[2,0,-3,0,3665,14403],[0,1,-2,0,-2689,-7003],[2,0,-1,2,-2602,0],[2,-1,-2,0,2390,10056],[1,0,1,0,-2348,6322],[2,-2,0,0,2236,-9884],[0,1,2,0,-2120,5751],[0,2,0,0,-2069,0],[2,-2,-1,0,2048,-4950],[2,0,1,-2,-1773,4130],[2,0,0,2,-1595,0],[4,-1,-1,0,1215,-3958],[0,0,2,2,-1110,0],[3,0,-1,0,-892,3258],[2,1,1,0,-810,2616],[4,-1,-2,0,759,-1897],[0,2,-1,0,-713,-2117],[2,2,-1,0,-700,2354],[2,1,-2,0,691,0],[2,-1,0,-2,596,0],[4,0,1,0,549,-1423],[0,0,4,0,537,-1117],[4,-1,0,0,520,-1571],[1,0,-2,0,-487,-1739],[2,1,0,-2,-399,0],[0,0,2,-2,-381,-4421],[1,1,1,0,351,0],[3,0,-2,0,-340,0],[4,0,-3,0,330,0],[2,-1,2,0,327,0],[0,2,1,0,-323,1165],[1,1,-1,0,299,0],[2,0,3,0,294,0],[2,0,-1,-2,0,8752]],T0=[[0,0,0,1,5128122],[0,0,1,1,280602],[0,0,1,-1,277693],[2,0,0,-1,173237],[2,0,-1,1,55413],[2,0,-1,-1,46271],[2,0,0,1,32573],[0,0,2,1,17198],[2,0,1,-1,9266],[0,0,2,-1,8822],[2,-1,0,-1,8216],[2,0,-2,-1,4324],[2,0,1,1,4200],[2,1,0,-1,-3359],[2,-1,-1,1,2463],[2,-1,0,1,2211],[2,-1,-1,-1,2065],[0,1,-1,-1,-1870],[4,0,-1,-1,1828],[0,1,0,1,-1794],[0,0,0,3,-1749],[0,1,-1,1,-1565],[1,0,0,1,-1491],[0,1,1,1,-1475],[0,1,1,-1,-1410],[0,1,0,-1,-1344],[1,0,0,-1,-1335],[0,0,3,1,1107],[4,0,0,-1,1021],[4,0,-1,1,833],[0,0,1,-3,777],[4,0,-2,1,671],[2,0,0,-3,607],[2,0,2,-1,596],[2,-1,1,-1,491],[2,0,-2,1,-451],[0,0,3,-1,439],[2,0,2,1,422],[2,0,-3,-1,421],[2,1,-1,1,-366],[2,1,0,1,-351],[4,0,0,1,331],[2,-1,1,1,315],[2,-2,0,-1,302],[0,0,1,3,-283],[2,1,1,-1,-229],[1,1,0,-1,223],[1,1,0,1,223],[0,1,-2,-1,-220],[2,1,-1,-1,-220],[1,0,1,1,-185],[2,-1,-2,-1,181],[0,1,2,1,-177],[4,0,-2,-1,176],[4,-1,-1,-1,166],[1,0,1,-1,-164],[4,0,1,-1,132],[1,0,-1,-1,-119],[4,-1,0,-1,115],[2,-2,0,1,107]];var V0=299792.458;function O(t){return t*(149597870700/1e3)}function I0(t){return t/(149597870700/1e3)}function C(t){let e=357.5291092+35999.0502909*t-1536e-7*t**2+t**3/2449e3;return m(e)}function vt(t){let e=t/10,n=280.4664567+360007.6982779*e+.03042028*e**2+e**3/49931-e**4/15300+e**5/2e6;return m(n)}function G0(t){let e=vt(t),n=Wt(t);return e+n}function Wt(t){let e=C(t),n=(1.914602-.004817*t-14e-6*t**2)*Math.sin(e*c);return n+=(.019993-101e-6*t)*Math.sin(2*e*c),n+=289e-6*Math.sin(3*e*c),n}function _(t){let e=297.8501921+445267.1114034*t-.0018819*t**2+t**3/545868-t**4/113065e3;return m(e)}function L(t){let e=134.9633964+477198.8675055*t+.0087414*t**2+t**3/69699-t**4/1471200;return m(e)}function T(t){let e=93.272095+483202.0175233*t-.0036539*t**2-t**3/352600+t**4/86331e3;return m(e)}function l0(t){let e=218.3164477+481267.88123421*t-.0015786*t**2+t**3/538841-t**4/65194e3;return m(e)}function H0(t){let e=l0(t),n=Xt(t);return e+n/1e6}function N0(t){return Zt(t)/1e6}function q0(t){return I0(Qt(t))}function Qt(t){return 385000.56+Kt(t)/1e3}function Kt(t){let e=_(t),n=C(t),o=L(t),i=T(t),s=1-.002516*t-74e-7*t**2,l=0;return c0.forEach(r=>{let a=r[0],u=r[1],p=r[2],d=r[3],g=r[5],h=Math.cos((a*e+u*n+p*o+d*i)*c);switch(u){case 1:case-1:h=h*g*s;break;case 2:case-2:h=h*g*s*s;break;default:h=h*g;break}l+=h}),l}function Xt(t){let e=l0(t),n=_(t),o=C(t),i=L(t),s=T(t),l=119.75+131.849*t,r=53.09+479264.29*t,a=1-.002516*t-74e-7*t**2,u=3958*Math.sin(l*c)+1962*Math.sin((e-s)*c)+318*Math.sin(r*c);return c0.forEach(p=>{let d=p[0],g=p[1],h=p[2],E=p[3],f=p[4],b=Math.sin((d*n+g*o+h*i+E*s)*c);switch(g){case 1:case-1:b=b*f*a;break;case 2:case-2:b=b*f*a*a;break;default:b=b*f;break}u+=b}),u}function Zt(t){let e=l0(t),n=_(t),o=C(t),i=L(t),s=T(t),l=119.75+131.849*t,r=313.45+481266.484*t,a=1-.002516*t-74e-7*t**2,u=-2235*Math.sin(e*c)+382*Math.sin(r*c)+175*Math.sin((l-s)*c)+175*Math.sin((l+s)*c)+127*Math.sin((e-i)*c)-115*Math.sin((e+i)*c);return T0.forEach(p=>{let d=p[0],g=p[1],h=p[2],E=p[3],f=p[4],b=Math.sin((d*n+g*o+h*i+E*s)*c);switch(g){case 1:case-1:b=b*f*a;break;case 2:case-2:b=b*f*a**2;break;default:b=b*f;break}u+=b}),u}function F0(t){return .016708634-42037e-9*t-1267e-10*t**2}function U0(t){return 102.93735+1.71946*t+46e-5*t**2}function p0(t){let e=t/100;return(84381.448-4680.93*e-1.55*e**2+1999.25*e**3-51.38*e**4-249.67*e**5-39.05*e**6+7.12*e**7+27.87*e**8+5.79*e**9+2.45*e**10)/3600}function V(t){let e=p0(t),n=m0(t);return e+n}function D(t){let e=_(t),n=C(t),o=L(t),i=T(t),s=125.04452-1934.136261*t+.0020708*t**2+t**3/45e4,l=0;return a0.forEach(r=>{let a=r[0],u=r[1],p=r[2],d=r[3],g=r[4],h=r[5],E=r[6],f=d*e+u*n+a*o+p*i+g*s;l+=Math.sin(f*c)*(h+E*t)}),l*1e-4/3600}function m0(t){let e=_(t),n=C(t),o=L(t),i=T(t),s=125.04452-1934.136261*t+.0020708*t**2+t**3/45e4,l=0;return a0.forEach(r=>{let a=r[0],u=r[1],p=r[2],d=r[3],g=r[4],h=r[7],E=r[8],f=d*e+u*n+a*o+p*i+g*s;l+=Math.cos(f*c)*(h+E*t)}),l*1e-4/3600}function h0(t){let e=parseFloat(`${t.year}.${z(t)}`),n,o;t.month>2?(n=t.year,o=t.month):(n=t.year-1,o=t.month+12);let i=t.day,s=t.hour/24+t.min/1440+t.sec/86400,l,r;if(e>=1582.288)l=Math.floor(n/100),r=2-l+Math.floor(l/4);else if(e<=1582.277)r=0;else throw new Error("Date between 1582-10-04 and 1582-10-15 is not defined.");return Math.floor(365.25*(n+4716))+Math.floor(30.6001*(o+1))+i+s+r-1524.5}function g0(t){t=t+.5;let e=Math.floor(t),n=t-e,o=e;if(e>=2299161){let E=Math.floor((e-186721625e-2)/36524.25);o=e+1+E-Math.floor(E/4)}let i=o+1524,s=Math.floor((i-122.1)/365.25),l=Math.floor(365.25*s),r=Math.floor((i-l)/30.6001),a=i-l-Math.floor(30.6001*r)+n,u=r<14?r-1:r-13,p=u>2?s-4716:s-4715,d=(a-Math.floor(a))*24,g=(d-Math.floor(d))*60,h=(g-Math.floor(g))*60;return{year:Math.floor(p),month:Math.floor(u),day:Math.floor(a),hour:Math.floor(d),min:Math.floor(g),sec:Math.floor(h)}}function j0(t){return Math.floor(t+.5)-.5}function d0(t){return(t-2451545)/36525}function q(t){return t*36525+2451545}function w0(t){return d0(t)/10}function z0(t,e){let n=J(t)?1:2,o=e<32?1:Math.floor(9*(n+e)/275+.98),i=Math.floor(e-Math.floor(275*o/9)+n*Math.floor((o+9)/12)+30),s=24*(e-Math.floor(e)),l=Math.floor(s),r=60*(s-l),a=Math.floor(r),u=I(60*(r-a));return{year:t,month:o,day:i,hour:l,min:a,sec:u}}function B0(t){let e=J(t.year)?366:365,n=z(t)-1+t.hour/24+t.min/1440+t.sec/86400;return t.year+n/e}function z(t){let e=J(t.year)?1:2,n=t.month,o=t.day;return Math.floor(275*n/9)-e*Math.floor((n+9)/12)+o-30}function Y0(t){let e=h0(t);return Math.floor((e+1.5)%7)}function J(t){return t/4!==Math.floor(t/4)?!1:t/100!==Math.floor(t/100)?!0:t/400===Math.floor(t/400)}function B(t){let n=280.46061837+360.98564736629*(q(t)-2451545)+387933e-9*t**2+t**3/3871e4;return m(n)}function M0(t){let e=B(t),n=D(t),i=V(t)*c;return e+n*Math.cos(i)}function $0(t,e){let o=B(t)+e;return m(o)}function F(t,e){return M0(t)+e}function b0(t,e,n){let o=F(t,e);return m(o-n)}function v0(t){let{x:e,y:n,z:o}=t,i=Math.atan2(n,e),s=m(i*M),r=Math.atan(o/Math.sqrt(e**2+n**2))*M,a=Math.sqrt(e**2+n**2+o**2);return{lon:s,lat:r,radiusVector:a}}function S(t){let{lon:e,lat:n,radiusVector:o}=t,i=e*c,s=n*c,l=o*Math.cos(s)*Math.cos(i),r=o*Math.cos(s)*Math.sin(i),a=o*Math.sin(s);return{x:l,y:r,z:a}}function f0(t,e,n){let{rightAscension:o,declination:i,radiusVector:s}=t,{lat:l,lon:r,elevation:a}=e,u=i*c;a=a||0;let p=en(l,a),d=on(l,a),h=nn(s)*c,E=F(n,r),b=b0(n,r,o)*c,n0=Math.cos(u)*Math.sin(b),e0=Math.cos(u)*Math.cos(b)-d*Math.sin(h),o0=Math.sin(u)-p*Math.sin(h),_0=Math.sqrt(n0*n0+e0*e0+o0*o0),nt=Math.atan2(n0,e0)*M,et=Math.asin(o0/_0);return{rightAscension:m(E-nt),declination:et*M,radiusVector:_0*s}}function W0(t,e,n){let{rightAscension:o,declination:i}=t,{lat:s,lon:l}=e,r=f0(t,e,n),a=b0(n,l,o);return tn(a,i,s,r.radiusVector)}function tn(t,e,n,o=0){let i=t*c,s=e*c,l=n*c,r=Math.atan2(Math.sin(i),Math.cos(i)*Math.sin(l)-Math.tan(s)*Math.cos(l)),a=Math.asin(Math.sin(l)*Math.sin(s)+Math.cos(l)*Math.cos(s)*Math.cos(i));return{azimuth:m(r*M+180),altitude:a*M,radiusVector:o}}function Y(t,e,n=!0){let{lon:o,lat:i,radiusVector:s}=t,r=V(e)*c,a=o*c,u=i*c,p=Math.sin(a)*Math.cos(r)-Math.sin(u)/Math.cos(u)*Math.sin(r),d=Math.cos(a),g=Math.atan2(p,d),h=n?m(g*M):g*M,f=Math.asin(Math.sin(u)*Math.cos(r)+Math.cos(u)*Math.sin(r)*Math.sin(a))*M;return{rightAscension:h,declination:f,radiusVector:s}}function Q0(t,e){return{x:t.x+e.x,y:t.y+e.y,z:t.z+e.z}}function E0(t){let{lon:e,lat:n,radiusVector:o}=t;return{lon:m(e+180),lat:-1*n,radiusVector:o}}function nn(t){let e=G(8.794)*c;return Math.asin(Math.sin(e)/t)*M}function en(t,e){let n=t*c,o=Math.atan(H*Math.tan(n));return H*Math.sin(o)+e/6378137*Math.sin(n)}function on(t,e){let n=t*c,o=Math.atan(H*Math.tan(n));return Math.cos(o)+e/6378137*Math.cos(n)}function U(t,e){return $(t,e)*M}function $(t,e){let n=0;return t.forEach((o,i)=>{n+=rn(o,e)*e**i}),n}function rn(t,e){let n=0;return t.forEach(o=>{let i=o[0]||0,s=o[1]||0,l=o[2]||0;n+=i*Math.cos(s+l*e)}),n}function v(t,e){let n=D(e);return{lon:t.lon+n,lat:t.lat,radiusVector:t.radiusVector}}function K0(t,e){let n=G0(e),o=F0(e),i=U0(e),s=G(20.49552),l=t.lon*c,r=t.lat*c,a=n*c,u=i*c,p=(-1*s*Math.cos(a-l)+o*s*Math.cos(u-l))/Math.cos(r),d=-1*s*Math.sin(r)*(Math.sin(a-l)-o*Math.sin(u-l));return{lon:t.lon+p,lat:t.lat+d,radiusVector:t.radiusVector}}function X0(t){if(t<-5)return t;let e=1.02/Math.tan((t+10.3/(t+5.11))*c);return t+e/60}function Z0(t,e=0){let n=t+(e-.5)/12,o,i=0;return t<-500&&(o=(n-1820)/100,i=-20+32*o**2),t>=-500&&t<500&&(o=n/100,i=10583.6-1014.41*o+33.78311*o**2-5.952053*o**3-.1798452*o**4+.022174192*o**5+.0090316521*o**6),t>=500&&t<1600&&(o=(n-1e3)/100,i=1574.2-556.01*o+71.23472*o**2+.319781*o**3-.8503463*o**4-.005050998*o**5+.0083572073*o**6),t>=1600&&t<1700&&(o=n-1600,i=120-.9808*o-.01532*o**2+o**3/7129),t>=1700&&t<1800&&(o=n-1700,i=8.83+.1603*o-.0059285*o**2+13336e-8*o**3-o**4/1174e3),t>=1800&&t<1860&&(o=n-1800,i=13.72-.332447*o+.0068612*o**2+.0041116*o**3-37436e-8*o**4+121272e-10*o**5-1699e-10*o**6+875e-12*o**7),t>=1860&&t<1900&&(o=n-1860,i=7.62+.5737*o-.251754*o**2+.01680668*o**3-.0004473624*o**4+o**5/233174),t>=1900&&t<1920&&(o=n-1900,i=-2.79+1.494119*o-.0598939*o**2+.0061966*o**3-197e-6*o**4),t>=1920&&t<1941&&(o=n-1920,i=21.2+.84493*o-.0761*o**2+.0020936*o**3),t>=1941&&t<1961&&(o=n-1950,i=29.07+.407*o-o**2/233+o**3/2547),t>=1961&&t<1986&&(o=n-1975,i=45.45+1.067*o-o**2/260-o**3/718),t>=1986&&t<2005&&(o=n-2e3,i=63.86+.3345*o-.060374*o**2+.0017275*o**3+651814e-9*o**4+2373599e-11*o**5),t>=2005&&t<2050&&(o=n-2e3,i=62.92+.32217*o+.005589*o**2),t>=2050&&(o=(n-1820)/100,i=-20+32*o**2),i}var x=class t{constructor(e){this.time=e;this.jd=0;this.T=0;this.jd=h0(e),this.T=d0(this.jd)}static fromCurrentTime(){let e=new Date(Date.now());return new t({year:e.getUTCFullYear(),month:e.getUTCMonth()+1,day:e.getUTCDate(),hour:e.getUTCHours(),min:e.getUTCMinutes(),sec:e.getUTCSeconds()})}static fromTime(e,n,o,i=0,s=0,l=0){return new t({year:e,month:n,day:o,hour:i,min:s,sec:l})}static fromDate(e){return new t({year:e.getUTCFullYear(),month:e.getUTCMonth()+1,day:e.getUTCDate(),hour:e.getUTCHours(),min:e.getUTCMinutes(),sec:e.getUTCSeconds()})}static fromYearOfDay(e,n){let o=z0(e,n);return new t(o)}static fromJulianDay(e){let n=g0(e);return new t(n)}static fromJulianCenturiesJ2000(e){let n=q(e),o=g0(n);return new t(o)}getTime(){return this.time}getString(){let{year:e,month:n,day:o,hour:i,min:s,sec:l}=this.time;return`${e}-${A(n,2)}-${A(o,2)} ${A(i,2)}:${A(s,2)}:${A(l,2)}`}getDate(){let{year:e,month:n,day:o,hour:i,min:s,sec:l}=this.time;return new Date(Date.UTC(e,n-1,o,i,s,l))}getDecimalYear(){return B0(this.time)}getDayOfYear(){return z(this.time)}getDayOfWeek(){return Y0(this.time)}isLeapYear(){return J(this.time.year)}getJulianDay(){return this.jd}getJulianDay0(){return j0(this.jd)}getJulianCenturiesJ2000(){return this.T}getJulianMillenniaJ2000(){return w0(this.jd)}getGreenwichMeanSiderealTime(){return B(this.T)}getGreenwichApparentSiderealTime(){return M0(this.T)}getLocalMeanSiderealTime(e){return $0(this.T,e.lon)}getLocalApparentSiderealTime(e){return F(this.T,e.lon)}getDeltaT(){let{year:e,month:n}=this.time;return Z0(e,n)}};var R=class{constructor(e=x.fromCurrentTime(),n="astronomical object"){this.toi=e;this.name=n;this.jd=0;this.jd0=0;this.T=0;this.t=0;this.jd=e.getJulianDay(),this.jd0=e.getJulianDay0(),this.T=e.getJulianCenturiesJ2000(),this.t=e.getJulianMillenniaJ2000()}getTimeOfInterest(){return this.toi}getGeocentricEquatorialSphericalJ2000Coordinates(){let e=this.getGeocentricEclipticSphericalJ2000Coordinates();return Y(e,this.T)}getGeocentricEquatorialSphericalDateCoordinates(){let e=this.getGeocentricEclipticSphericalDateCoordinates();return Y(e,this.T)}getApparentGeocentricEclipticRectangularCoordinates(){let e=this.getApparentGeocentricEclipticSphericalCoordinates();return S(e)}getApparentGeocentricEquatorialSphericalCoordinates(){let e=this.getApparentGeocentricEclipticSphericalCoordinates();return Y(e,this.T)}getTopocentricEquatorialSphericalCoordinates(e){let n=this.getApparentGeocentricEquatorialSphericalCoordinates();return f0(n,e,this.T)}getTopocentricHorizontalCoordinates(e){let n=this.getApparentGeocentricEquatorialSphericalCoordinates();return W0(n,e,this.T)}getApparentTopocentricHorizontalCoordinates(e){let{azimuth:n,altitude:o,radiusVector:i}=this.getTopocentricHorizontalCoordinates(e);return{azimuth:n,altitude:X0(o),radiusVector:i}}getDistanceToEarth(){let e=this.getGeocentricEclipticSphericalDateCoordinates();return O(e.radiusVector)}getApparentDistanceToEarth(){let e=this.getApparentGeocentricEclipticSphericalCoordinates();return O(e.radiusVector)}getTopocentricDistanceToEarth(e){let n=this.getTopocentricEquatorialSphericalCoordinates(e);return O(n.radiusVector)}getLightTime(){let{radiusVector:e}=this.getGeocentricEclipticSphericalDateCoordinates();return O(e)/V0}};var y=class t extends R{constructor(n,o=r0,i=i0){super(n,"earth");this.vsop87Date=o;this.vsop87J2000=i}static create(n){return new t(n)}getHeliocentricEclipticRectangularJ2000Coordinates(){return S(this.getHeliocentricEclipticSphericalJ2000Coordinates())}getHeliocentricEclipticRectangularDateCoordinates(){return S(this.getHeliocentricEclipticSphericalDateCoordinates())}getHeliocentricEclipticSphericalJ2000Coordinates(){return{lon:m(U(this.vsop87J2000.VSOP87_X,this.t)),lat:U(this.vsop87J2000.VSOP87_Y,this.t),radiusVector:$(this.vsop87J2000.VSOP87_Z,this.t)}}getHeliocentricEclipticSphericalDateCoordinates(){return{lon:m(U(this.vsop87Date.VSOP87_X,this.t)),lat:U(this.vsop87Date.VSOP87_Y,this.t),radiusVector:$(this.vsop87Date.VSOP87_Z,this.t)}}getGeocentricEclipticRectangularJ2000Coordinates(){return{x:0,y:0,z:0}}getGeocentricEclipticRectangularDateCoordinates(){return{x:0,y:0,z:0}}getGeocentricEclipticSphericalJ2000Coordinates(){return{lon:0,lat:0,radiusVector:0}}getGeocentricEclipticSphericalDateCoordinates(){return{lon:0,lat:0,radiusVector:0}}getApparentGeocentricEclipticSphericalCoordinates(){return{lon:0,lat:0,radiusVector:0}}getNutationInLongitude(){return D(this.T)}getNutationInObliquity(){return m0(this.T)}getMeanObliquityOfEcliptic(){return p0(this.T)}getTrueObliquityOfEcliptic(){return V(this.T)}};function W(t,e){let n=t.rightAscension*c,o=t.declination*c,i=e.rightAscension*c,s=e.declination*c;return Math.acos(Math.sin(s)*Math.sin(o)+Math.cos(s)*Math.cos(o)*Math.cos(i-n))*M}function S0(t,e){let n=t.radiusVector,o=e.radiusVector,s=W(t,e)*c;return Math.atan2(o*Math.sin(s),n-o*Math.cos(s))*M}function R0(t){let e=t*c;return(1+Math.cos(e))/2}function C0(t,e){let n=t.rightAscension*c,o=t.declination*c,i=e.rightAscension*c,s=e.declination*c,l=Math.cos(s)*Math.sin(i-n),r=Math.sin(s)*Math.cos(o)-Math.cos(s)*Math.sin(o)*Math.cos(i-n),a=Math.atan2(l,r);return m(a*M)}function A0(t){return t>=180}function P(t,e){return 2*Math.atan2(e,2*t)*M}var j=class t extends R{constructor(n,o=y.create(n)){super(n,"sun");this.earth=o}static create(n){return new t(n)}getHeliocentricEclipticRectangularJ2000Coordinates(){return{x:0,y:0,z:0}}getHeliocentricEclipticRectangularDateCoordinates(){return{x:0,y:0,z:0}}getHeliocentricEclipticSphericalJ2000Coordinates(){return{lon:0,lat:0,radiusVector:0}}getHeliocentricEclipticSphericalDateCoordinates(){return{lon:0,lat:0,radiusVector:0}}getGeocentricEclipticRectangularJ2000Coordinates(){return S(this.getGeocentricEclipticSphericalJ2000Coordinates())}getGeocentricEclipticRectangularDateCoordinates(){return S(this.getGeocentricEclipticSphericalDateCoordinates())}getGeocentricEclipticSphericalJ2000Coordinates(){return E0(this.earth.getHeliocentricEclipticSphericalJ2000Coordinates())}getGeocentricEclipticSphericalDateCoordinates(){return E0(this.earth.getHeliocentricEclipticSphericalDateCoordinates())}getApparentGeocentricEclipticSphericalCoordinates(){let n=this.getGeocentricEclipticSphericalDateCoordinates();return n=K0(n,this.T),n=v(n,this.T),n}getAngularDiameter(){return P(this.getApparentDistanceToEarth(),1392684)}getTopocentricAngularDiameter(n){return P(this.getTopocentricDistanceToEarth(n),1392684)}getApparentMagnitude(){return-26.74}getTopocentricApparentMagnitude(){return-26.74}};function O0(t,e,n,o){let i=o?-1*n:n,s=5*(Math.log10(t)+Math.log10(O(e)/384400));return n>=160&&(s+=-449.88+7.1112*n-.037714*n**2+66667e-9*n**3),n>=40&&n<160&&(s+=-12.07857+.002175199*i+.0002859289*i**2-2495124e-13*i**3-8699235e-15*i**4+7606291e-18*i**5+3403311e-19*i**6),i>=0&&i<40&&(s+=-12.861+.037*n-12e-5*n**2),i>-40&&i<0&&(s+=-12.85-.037*i-235e-6*i**2),s}function w(t,e){let n=I((t-2e3)*12.3685)+e,o=n/1236.85,i=mn(n,o),s=an(n,o,e),l=ln(n,o,e),r=pn(n,o),a=i+s+l+r;return x.fromJulianDay(a)}function an(t,e,n){switch(n){case 0:return cn(t,e);case .5:return sn(t,e);case .25:case .75:return un(t,e);default:throw new Error(`Invalid moon phase: ${n}`)}}function cn(t,e){let n=1-.002516*e-74e-7*e**2,o=Z(t,e),i=k(t,e),s=t0(t,e),l=x0(t,e),r=o*c,a=i*c,u=s*c,p=l*c;return-.4072*Math.sin(a)+.17241*n*Math.sin(r)+.01608*Math.sin(2*a)+.01039*Math.sin(2*u)+.00739*n*Math.sin(a-r)-.00514*n*Math.sin(a+r)+.00208*n*n*Math.sin(2*r)-.00111*Math.sin(a-2*u)-57e-5*Math.sin(a+2*u)+56e-5*n*Math.sin(2*a+r)-42e-5*Math.sin(3*a)+42e-5*n*Math.sin(r+2*u)+38e-5*n*Math.sin(r-2*u)-24e-5*n*Math.sin(2*a-r)-17e-5*Math.sin(p)-7e-5*Math.sin(a+2*r)+4e-5*Math.sin(2*a-2*u)+4e-5*Math.sin(3*r)+3e-5*Math.sin(a+r-2*u)+3e-5*Math.sin(2*a+2*u)-3e-5*Math.sin(a+r+2*u)+3e-5*Math.sin(a-r+2*u)-2e-5*Math.sin(a-r-2*u)-2e-5*Math.sin(3*a+r)+2e-5*Math.sin(4*a)}function sn(t,e){let n=1-.002516*e-74e-7*e**2,o=Z(t,e),i=k(t,e),s=t0(t,e),l=x0(t,e),r=o*c,a=i*c,u=s*c,p=l*c;return-.40614*Math.sin(a)+.17302*n*Math.sin(r)+.01614*Math.sin(2*a)+.01043*Math.sin(2*u)+.00734*n*Math.sin(a-r)-.00515*n*Math.sin(a+r)+.00209*n*n*Math.sin(2*r)-.00111*Math.sin(a-2*u)-57e-5*Math.sin(a+2*u)+56e-5*n*Math.sin(2*a+r)-42e-5*Math.sin(3*a)+42e-5*n*Math.sin(r+2*u)+38e-5*n*Math.sin(r-2*u)-24e-5*n*Math.sin(2*a-r)-17e-5*Math.sin(p)-7e-5*Math.sin(a+2*r)+4e-5*Math.sin(2*a-2*u)+4e-5*Math.sin(3*r)+3e-5*Math.sin(a+r-2*u)+3e-5*Math.sin(2*a+2*u)-3e-5*Math.sin(a+r+2*u)+3e-5*Math.sin(a-r+2*u)-2e-5*Math.sin(a-r-2*u)-2e-5*Math.sin(3*a+r)+2e-5*Math.sin(4*a)}function un(t,e){let n=1-.002516*e-74e-7*e**2,o=Z(t,e),i=k(t,e),s=t0(t,e),l=x0(t,e),r=o*c,a=i*c,u=s*c,p=l*c;return-.62801*Math.sin(a)+.17172*n*Math.sin(r)-.01183*n*Math.sin(a+r)+.00862*Math.sin(2*a)+.00804*Math.sin(2*u)+.00454*n*Math.sin(a-r)+.00204*n*n*Math.sin(2*r)-.0018*Math.sin(a-2*u)-7e-4*Math.sin(a+2*u)-4e-4*Math.sin(3*a)-34e-5*n*Math.sin(2*a-r)+32e-5*n*Math.sin(r+2*u)+32e-5*n*Math.sin(r-2*u)-28e-5*n*n*Math.sin(a+2*r)+27e-5*n*Math.sin(2*a+r)-17e-5*Math.sin(p)-5e-5*Math.sin(a-r-2*u)+4e-5*Math.sin(2*a+2*u)-4e-5*Math.sin(a+r+2*u)+4e-5*Math.sin(a-2*r)+3e-5*Math.sin(a+r-2*u)+3e-5*Math.sin(3*r)+2e-5*Math.sin(2*a-2*u)+2e-5*Math.sin(a-r+2*u)-2e-5*Math.sin(3*a+r)}function ln(t,e,n){if(n===.5||n===0)return 0;let o=1-.002516*e-74e-7*e**2,i=Z(t,e),s=k(t,e),l=t0(t,e),r=i*c,a=s*c,u=l*c,p=.00306-38e-5*o*Math.cos(r)+26e-5*Math.cos(a)-2e-5*Math.cos(a-r)+2e-5*Math.cos(a+r)+2e-5*Math.cos(2*u);return n===.25?p:-1*p}function pn(t,e){let n=(299.77+.107408*t-.009173*e**2)*c,o=(251.88+.016321*t)*c,i=(251.83+26.651776*t)*c,s=(349.42+36.412478*t)*c,l=(84.66+18.206239*t)*c,r=(141.74+53.303771*t)*c,a=(207.84+2.453732*t)*c,u=(154.84+7.30686*t)*c,p=(34.52+27.261239*t)*c,d=(207.19+.121824*t)*c,g=(291.34+1.844379*t)*c,h=(161.72+24.198154*t)*c,E=(239.56+25.513099*t)*c,f=(331.55+3.592518*t)*c;return 325e-6*Math.sin(n)+165e-6*Math.sin(o)+164e-6*Math.sin(i)+126e-6*Math.sin(s)+11e-5*Math.sin(l)+62e-6*Math.sin(r)+6e-5*Math.sin(a)+56e-6*Math.sin(u)+47e-6*Math.sin(p)+42e-6*Math.sin(d)+4e-5*Math.sin(g)+37e-6*Math.sin(h)+35e-6*Math.sin(E)+23e-6*Math.sin(f)}function mn(t,e){return 245155009766e-5+29.530588861*t+15437e-8*e**2+15e-8*e**3+73e-11*e**4}function Z(t,e){return 2.5534+29.1053567*t-14e-7*e**2-11e-8*e**3}function k(t,e){return 201.5643+385.81693528*t+.0107582*e**2+1238e-8*e**3+58e-9*e**4}function t0(t,e){return 160.7108+390.67050284*t+.0016118*e**2+227e-8*e**3+11e-9*e**4}function x0(t,e){return 124.7746+390.67050284*t+.0020672*e**2+215e-8*e**3}var y0=class t extends R{constructor(n,o=new j(n),i=new y(n)){super(n,"moon");this.sun=o;this.earth=i}static create(n){return new t(n)}getHeliocentricEclipticRectangularJ2000Coordinates(){return this.getHeliocentricEclipticRectangularDateCoordinates()}getHeliocentricEclipticRectangularDateCoordinates(){let n=this.getGeocentricEclipticRectangularDateCoordinates(),o=this.earth.getHeliocentricEclipticRectangularDateCoordinates();return Q0(n,o)}getHeliocentricEclipticSphericalJ2000Coordinates(){return this.getHeliocentricEclipticSphericalDateCoordinates()}getHeliocentricEclipticSphericalDateCoordinates(){let n=this.getHeliocentricEclipticRectangularDateCoordinates();return v0(n)}getGeocentricEclipticRectangularJ2000Coordinates(){return this.getGeocentricEclipticRectangularDateCoordinates()}getGeocentricEclipticRectangularDateCoordinates(){let n=this.getGeocentricEclipticSphericalDateCoordinates();return S(n)}getGeocentricEclipticSphericalJ2000Coordinates(){return this.getGeocentricEclipticSphericalDateCoordinates()}getGeocentricEclipticSphericalDateCoordinates(){let n=H0(this.T),o=N0(this.T),i=q0(this.T);return{lon:n,lat:o,radiusVector:i}}getApparentGeocentricEclipticSphericalCoordinates(){let n=this.getGeocentricEclipticSphericalDateCoordinates();return v(n,this.T)}getAngularDiameter(){let n=this.getApparentDistanceToEarth();return P(n,3474.8)}getTopocentricAngularDiameter(n){let o=this.getTopocentricDistanceToEarth(n);return P(o,3474.8)}getElongation(){let n=this.getApparentGeocentricEquatorialSphericalCoordinates(),o=this.sun.getApparentGeocentricEquatorialSphericalCoordinates();return W(n,o)}getTopocentricElongation(n){let o=this.getTopocentricEquatorialSphericalCoordinates(n),i=this.sun.getApparentGeocentricEquatorialSphericalCoordinates();return W(o,i)}getPhaseAngle(){let n=this.getApparentGeocentricEquatorialSphericalCoordinates(),o=this.sun.getApparentGeocentricEquatorialSphericalCoordinates();return S0(n,o)}getTopocentricPhaseAngle(n){let o=this.getTopocentricEquatorialSphericalCoordinates(n),i=this.sun.getApparentGeocentricEquatorialSphericalCoordinates();return S0(o,i)}getIlluminatedFraction(){let n=this.getPhaseAngle();return R0(n)}getTopocentricIlluminatedFraction(n){let o=this.getTopocentricPhaseAngle(n);return R0(o)}getPositionAngleOfBrightLimb(){let n=this.getApparentGeocentricEquatorialSphericalCoordinates(),o=this.sun.getApparentGeocentricEquatorialSphericalCoordinates();return C0(n,o)}getTopocentricPositionAngleOfBrightLimb(n){let o=this.getTopocentricEquatorialSphericalCoordinates(n),i=this.sun.getApparentGeocentricEquatorialSphericalCoordinates();return C0(o,i)}isWaxing(){let n=this.getPositionAngleOfBrightLimb();return A0(n)}isTopocentricWaxing(n){let o=this.getTopocentricPositionAngleOfBrightLimb(n);return A0(o)}getApparentMagnitude(){let n=this.getHeliocentricEclipticSphericalDateCoordinates(),o=this.getGeocentricEclipticSphericalDateCoordinates(),i=this.getPhaseAngle(),s=this.isWaxing();return O0(n.radiusVector,o.radiusVector,i,s)}getTopocentricApparentMagnitude(n){let o=this.getHeliocentricEclipticSphericalDateCoordinates(),i=this.getTopocentricEquatorialSphericalCoordinates(n),s=this.getTopocentricPhaseAngle(n),l=this.isTopocentricWaxing(n);return O0(o.radiusVector,i.radiusVector,s,l)}getUpcomingNewMoon(){let n=this.toi.getDecimalYear();return w(n,0)}getUpcomingFirstQuarter(){let n=this.toi.getDecimalYear();return w(n,.25)}getUpcomingFullMoon(){let n=this.toi.getDecimalYear();return w(n,.5)}getUpcomingLastQuarter(){let n=this.toi.getDecimalYear();return w(n,.75)}};export{L0 as a,y as b,j as c,y0 as d};
2
+ //# sourceMappingURL=chunk-IFJFPMLZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../app/resources/vsop87/vsop87EarthSphericalDateReduced.ts","../../../app/resources/vsop87/vsop87EarthSphericalJ2000Reduced.ts","../../../app/utils/math.ts","../../../app/utils/angle.ts","../../../app/constants/earth.ts","../../../app/constants/math.ts","../../../app/constants/moon.ts","../../../app/constants/units.ts","../../../app/utils/distance.ts","../../../app/utils/sun.ts","../../../app/utils/moon.ts","../../../app/utils/earth.ts","../../time/utils/dateTime.ts","../../../app/utils/siderealTime.ts","../../../app/utils/coordinateTransformation.ts","../../../app/utils/vsop87.ts","../../../app/utils/apparentPositionCorrections.ts","../../time/utils/deltaT.ts","../../time/models/TimeOfInterest.ts","../../core/models/models/AstronomicalObject.ts","../../earth/models/Earth.ts","../../../app/utils/observation.ts","../../sun/models/Sun.ts","../utils/magnitude.ts","../utils/phases.ts","../models/Moon.ts"],"sourcesContent":["import type {Vsop87Element, Vsop87Group} from '@app/types/Vsop87Types';\n\nconst VSOP87_L0: Vsop87Element = [\n [1.75347045673],\n [0.03341656456, 4.66925680417, 6283.0758499914],\n [0.00034894275, 4.62610241759, 12566.1516999828],\n [0.00003497056, 2.74411800971, 5753.3848848968],\n [0.00003417571, 2.82886579606, 3.523118349],\n [0.00003135896, 3.62767041758, 77713.7714681205],\n [0.00002676218, 4.41808351397, 7860.4193924392],\n [0.00002342687, 6.13516237631, 3930.2096962196],\n [0.00001324292, 0.74246356352, 11506.7697697936],\n [0.00001273166, 2.03709655772, 529.6909650946],\n [0.00001199167, 1.10962944315, 1577.3435424478],\n [0.0000099025, 5.23268129594, 5884.9268465832],\n [0.00000901855, 2.04505443513, 26.2983197998],\n [0.00000857223, 3.50849156957, 398.1490034082],\n [0.00000779786, 1.17882652114, 5223.6939198022],\n [0.00000753141, 2.53339053818, 5507.5532386674],\n [0.00000505264, 4.58292563052, 18849.2275499742],\n [0.00000492379, 4.20506639861, 775.522611324],\n [0.00000356655, 2.91954116867, 0.0673103028],\n [0.00000317087, 5.84901952218, 11790.6290886588],\n [0.00000284125, 1.89869034186, 796.2980068164],\n [0.00000271039, 0.31488607649, 10977.078804699],\n [0.0000024281, 0.34481140906, 5486.777843175],\n [0.0000020616, 4.80646606059, 2544.3144198834],\n [0.00000205385, 1.86947813692, 5573.1428014331],\n [0.00000202261, 2.45767795458, 6069.7767545534],\n [0.00000155516, 0.83306073807, 213.299095438],\n [0.00000132212, 3.41118275555, 2942.4634232916],\n [0.00000126184, 1.0830263021, 20.7753954924],\n [0.00000115132, 0.64544911683, 0.9803210682],\n [0.00000102851, 0.63599846727, 4694.0029547076],\n [0.00000101895, 0.97569221824, 15720.8387848784],\n [0.00000101724, 4.26679821365, 7.1135470008],\n [0.00000099206, 6.20992940258, 2146.1654164752],\n [0.00000097607, 0.6810127227, 155.4203994342],\n [0.00000085803, 5.98322631256, 161000.6857376741],\n [0.00000085128, 1.29870743025, 6275.9623029906],\n [0.00000084711, 3.67080093025, 71430.69561812909],\n [0.00000079637, 1.807913307, 17260.1546546904],\n [0.00000078756, 3.03698313141, 12036.4607348882],\n [0.00000074651, 1.75508916159, 5088.6288397668],\n [0.00000073874, 3.50319443167, 3154.6870848956],\n [0.00000073547, 4.67926565481, 801.8209311238],\n [0.00000069627, 0.83297596966, 9437.762934887],\n [0.00000062449, 3.97763880587, 8827.3902698748],\n [0.00000061148, 1.81839811024, 7084.8967811152],\n [0.00000056963, 2.78430398043, 6286.5989683404],\n [0.00000056116, 4.38694880779, 14143.4952424306],\n [0.00000055577, 3.47006009062, 6279.5527316424],\n [0.00000051992, 0.18914945834, 12139.5535091068],\n [0.00000051605, 1.33282746983, 1748.016413067],\n [0.00000051145, 0.28306864501, 5856.4776591154],\n [0.00000049, 0.48735065033, 1194.4470102246],\n [0.00000041036, 5.36817351402, 8429.2412664666],\n [0.00000040938, 2.39850881707, 19651.048481098],\n [0.000000392, 6.16832995016, 10447.3878396044],\n [0.0000003677, 6.04133859347, 10213.285546211],\n [0.00000036596, 2.56955238628, 1059.3819301892],\n [0.00000035954, 1.70876111898, 2352.8661537718],\n [0.00000035566, 1.77597314691, 6812.766815086],\n [0.00000033291, 0.59309499459, 17789.845619785],\n [0.00000030412, 0.44294464135, 83996.84731811189],\n [0.00000030047, 2.73975123935, 1349.8674096588],\n [0.00000025352, 3.16470953405, 4690.4798363586],\n];\n\nconst VSOP87_L1: Vsop87Element = [\n [6283.31966747491],\n [0.00206058863, 2.67823455584, 6283.0758499914],\n [0.0000430343, 2.63512650414, 12566.1516999828],\n [0.00000425264, 1.59046980729, 3.523118349],\n [0.00000119261, 5.79557487799, 26.2983197998],\n [0.00000108977, 2.96618001993, 1577.3435424478],\n [0.00000093478, 2.59212835365, 18849.2275499742],\n [0.00000072122, 1.13846158196, 529.6909650946],\n [0.00000067768, 1.87472304791, 398.1490034082],\n [0.00000067327, 4.40918235168, 5507.5532386674],\n [0.00000059027, 2.8879703846, 5223.6939198022],\n [0.00000055976, 2.17471680261, 155.4203994342],\n [0.00000045407, 0.39803079805, 796.2980068164],\n [0.00000036369, 0.46624739835, 775.522611324],\n [0.00000028958, 2.64707383882, 7.1135470008],\n [0.00000020844, 5.34138275149, 0.9803210682],\n [0.00000019097, 1.84628332577, 5486.777843175],\n [0.00000018508, 4.96855124577, 213.299095438],\n [0.00000017293, 2.99116864949, 6275.9623029906],\n [0.00000016233, 0.03216483047, 2544.3144198834],\n [0.00000015832, 1.43049285325, 2146.1654164752],\n [0.00000014615, 1.20532366323, 10977.078804699],\n [0.00000012461, 2.83432285512, 1748.016413067],\n [0.00000011877, 3.25804815607, 5088.6288397668],\n [0.00000011808, 5.2737979048, 1194.4470102246],\n [0.00000011514, 2.07502418155, 4694.0029547076],\n [0.00000010641, 0.76614199202, 553.5694028424],\n [0.00000009969, 1.30262991097, 6286.5989683404],\n [0.00000009721, 4.23925472239, 1349.8674096588],\n [0.00000009452, 2.69957062864, 242.728603974],\n [0.00000008577, 5.64475868067, 951.7184062506],\n [0.00000007576, 5.30062664886, 2352.8661537718],\n [0.00000006385, 2.65033984967, 9437.762934887],\n [0.00000006101, 4.66632584188, 4690.4798363586],\n];\n\nconst VSOP87_L2: Vsop87Element = [\n [0.0005291887],\n [0.00008719837, 1.07209665242, 6283.0758499914],\n [0.00000309125, 0.86728818832, 12566.1516999828],\n [0.00000027339, 0.05297871691, 3.523118349],\n [0.00000016334, 5.18826691036, 26.2983197998],\n [0.00000015752, 3.6845788943, 155.4203994342],\n [0.00000009541, 0.75742297675, 18849.2275499742],\n [0.00000008937, 2.05705419118, 77713.7714681205],\n [0.00000006952, 0.8267330541, 775.522611324],\n [0.00000005064, 4.66284525271, 1577.3435424478],\n [0.00000004061, 1.03057162962, 7.1135470008],\n [0.0000000381, 3.4405080349, 5573.1428014331],\n [0.00000003463, 5.14074632811, 796.2980068164],\n [0.00000003169, 6.05291851171, 5507.5532386674],\n [0.0000000302, 1.19246506441, 242.728603974],\n [0.00000002886, 6.11652627155, 529.6909650946],\n [0.00000002714, 0.30637881025, 398.1490034082],\n [0.00000002538, 2.27992810679, 553.5694028424],\n [0.00000002371, 4.38118838167, 5223.6939198022],\n [0.00000002079, 3.75435330484, 0.9803210682],\n];\n\nconst VSOP87_L3: Vsop87Element = [\n [0.00000289226, 5.84384198723, 6283.0758499914],\n [0.00000034955],\n [0.00000016819, 5.48766912348, 12566.1516999828],\n [0.00000002962, 5.19577265202, 155.4203994342],\n [0.00000001288, 4.72200252235, 3.523118349],\n [0.00000000714, 5.30045809128, 18849.2275499742],\n [0.00000000635, 5.96925937141, 242.728603974],\n];\n\nconst VSOP87_L4: Vsop87Element = [\n [0.00000007717, 4.13446589358, 6283.0758499914],\n [0.00000000765, 3.83803776214, 12566.1516999828],\n [0.0000000042, 0.41925861858, 155.4203994342],\n];\n\nconst VSOP87_L5: Vsop87Element = [[0.00000000172, 2.7657906951, 6283.0758499914]];\n\nconst VSOP87_B0: Vsop87Element = [\n [0.0000027962, 3.19870156017, 84334.66158130829],\n [0.00000101643, 5.42248619256, 5507.5532386674],\n [0.00000080445, 3.88013204458, 5223.6939198022],\n [0.00000043806, 3.70444689758, 2352.8661537718],\n [0.00000031933, 4.00026369781, 1577.3435424478],\n];\n\nconst VSOP87_B1: Vsop87Element = [\n [0.0000000903, 3.8972906189, 5507.5532386674],\n [0.00000006177, 1.73038850355, 5223.6939198022],\n];\n\nconst VSOP87_B2: Vsop87Element = [];\n\nconst VSOP87_B3: Vsop87Element = [];\n\nconst VSOP87_B4: Vsop87Element = [];\n\nconst VSOP87_B5: Vsop87Element = [];\n\nconst VSOP87_R0: Vsop87Element = [\n [1.00013988799],\n [0.01670699626, 3.09846350771, 6283.0758499914],\n [0.00013956023, 3.0552460962, 12566.1516999828],\n [0.0000308372, 5.19846674381, 77713.7714681205],\n [0.00001628461, 1.17387749012, 5753.3848848968],\n [0.00001575568, 2.84685245825, 7860.4193924392],\n [0.00000924799, 5.45292234084, 11506.7697697936],\n [0.00000542444, 4.56409149777, 3930.2096962196],\n [0.0000047211, 3.66100022149, 5884.9268465832],\n [0.00000345983, 0.96368617687, 5507.5532386674],\n [0.0000032878, 5.89983646482, 5223.6939198022],\n [0.00000306784, 0.29867139512, 5573.1428014331],\n [0.00000243189, 4.27349536153, 11790.6290886588],\n [0.00000211829, 5.84714540314, 1577.3435424478],\n [0.00000185752, 5.02194447178, 10977.078804699],\n [0.00000174844, 3.01193636534, 18849.2275499742],\n [0.00000109835, 5.05510636285, 5486.777843175],\n [0.00000098316, 0.88681311277, 6069.7767545534],\n [0.00000086499, 5.68959778254, 15720.8387848784],\n [0.00000085825, 1.27083733351, 161000.6857376741],\n [0.00000064903, 0.27250613787, 17260.1546546904],\n [0.00000062916, 0.92177108832, 529.6909650946],\n [0.00000057056, 2.01374292014, 83996.84731811189],\n [0.00000055736, 5.24159798933, 71430.69561812909],\n [0.00000049384, 3.24501240359, 2544.3144198834],\n [0.00000046963, 2.57805070386, 775.522611324],\n [0.00000044661, 5.53715807302, 9437.762934887],\n [0.00000042515, 6.01110242003, 6275.9623029906],\n [0.00000038968, 5.36071738169, 4694.0029547076],\n [0.00000038245, 2.39255343974, 8827.3902698748],\n [0.0000003749, 0.82952922332, 19651.048481098],\n [0.00000036957, 4.90107591914, 12139.5535091068],\n [0.0000003566, 1.67468058995, 12036.4607348882],\n [0.00000034537, 1.84270693282, 2942.4634232916],\n [0.00000033193, 0.24370300098, 7084.8967811152],\n [0.00000031921, 0.18368229781, 5088.6288397668],\n [0.00000031846, 1.77775642085, 398.1490034082],\n [0.00000028464, 1.21344868176, 6286.5989683404],\n [0.00000027793, 1.89934330904, 6279.5527316424],\n [0.00000026275, 4.58896850401, 10447.3878396044],\n];\n\nconst VSOP87_R1: Vsop87Element = [\n [0.00103018608, 1.10748969588, 6283.0758499914],\n [0.00001721238, 1.06442301418, 12566.1516999828],\n [0.00000032346, 1.02169059149, 18849.2275499742],\n [0.00000030799, 2.84353804832, 5507.5532386674],\n [0.00000024971, 1.31906709482, 5223.6939198022],\n [0.00000018485, 1.42429748614, 1577.3435424478],\n [0.00000010078, 5.91378194648, 10977.078804699],\n [0.00000008654, 1.42046854427, 6275.9623029906],\n [0.00000008634, 0.27146150602, 5486.777843175],\n [0.00000005069, 1.68613426734, 5088.6288397668],\n];\n\nconst VSOP87_R2: Vsop87Element = [\n [0.00004359385, 5.78455133738, 6283.0758499914],\n [0.00000123633, 5.57934722157, 12566.1516999828],\n [0.00000008792, 3.62777733395, 77713.7714681205],\n [0.00000005689, 1.86958905084, 5573.1428014331],\n [0.00000003301, 5.47027913302, 18849.2275499742],\n [0.00000001471, 4.48028885617, 5507.5532386674],\n];\n\nconst VSOP87_R3: Vsop87Element = [\n [0.00000144595, 4.27319435148, 6283.0758499914],\n [0.00000006729, 3.91697608662, 12566.1516999828],\n];\n\nconst VSOP87_R4: Vsop87Element = [[0.00000003858, 2.56384387339, 6283.0758499914]];\n\nconst VSOP87_R5: Vsop87Element = [];\n\nexport const VSOP87_X: Vsop87Group = [VSOP87_L0, VSOP87_L1, VSOP87_L2, VSOP87_L3, VSOP87_L4, VSOP87_L5];\nexport const VSOP87_Y: Vsop87Group = [VSOP87_B0, VSOP87_B1, VSOP87_B2, VSOP87_B3, VSOP87_B4, VSOP87_B5];\nexport const VSOP87_Z: Vsop87Group = [VSOP87_R0, VSOP87_R1, VSOP87_R2, VSOP87_R3, VSOP87_R4, VSOP87_R5];\n","import type {Vsop87Element, Vsop87Group} from '@app/types/Vsop87Types';\n\nconst VSOP87_L0: Vsop87Element = [\n [1.75347045673],\n [0.03341656453, 4.66925680415, 6283.0758499914],\n [0.00034894275, 4.62610242189, 12566.1516999828],\n [0.00003497056, 2.74411783405, 5753.3848848968],\n [0.00003417572, 2.82886579754, 3.523118349],\n [0.00003135899, 3.62767041756, 77713.7714681205],\n [0.00002676218, 4.41808345438, 7860.4193924392],\n [0.00002342691, 6.13516214446, 3930.2096962196],\n [0.00001324294, 0.74246341673, 11506.7697697936],\n [0.00001273165, 2.03709657878, 529.6909650946],\n [0.00001199167, 1.10962946234, 1577.3435424478],\n [0.0000099025, 5.23268072088, 5884.9268465832],\n [0.00000901854, 2.04505446477, 26.2983197998],\n [0.00000857223, 3.50849152283, 398.1490034082],\n [0.00000779786, 1.17882681962, 5223.6939198022],\n [0.00000753141, 2.53339052847, 5507.5532386674],\n [0.00000505267, 4.58292599973, 18849.2275499742],\n [0.00000492392, 4.20505711826, 775.522611324],\n [0.00000356672, 2.91954114478, 0.0673103028],\n [0.00000317087, 5.84901948512, 11790.6290886588],\n [0.00000284125, 1.89869240932, 796.2980068164],\n [0.00000271112, 0.31486255375, 10977.078804699],\n [0.00000242879, 0.34481445893, 5486.777843175],\n [0.00000206217, 4.80646631478, 2544.3144198834],\n [0.00000205478, 1.86953770281, 5573.1428014331],\n [0.00000202318, 2.45767790232, 6069.7767545534],\n [0.00000155516, 0.83306084617, 213.299095438],\n [0.00000132212, 3.41118292683, 2942.4634232916],\n [0.00000126225, 1.08295459501, 20.7753954924],\n [0.00000115132, 0.64544911683, 0.9803210682],\n [0.00000102851, 0.63599845579, 4694.0029547076],\n [0.00000101895, 0.97569280312, 15720.8387848784],\n [0.00000101724, 4.2667980198, 7.1135470008],\n [0.00000099206, 6.20992926918, 2146.1654164752],\n [0.00000097607, 0.68101342359, 155.4203994342],\n [0.00000085803, 5.9832263126, 161000.6857376741],\n [0.00000085128, 1.29870764804, 6275.9623029906],\n [0.00000084711, 3.67080093031, 71430.69561812909],\n [0.00000079637, 1.80791287082, 17260.1546546904],\n [0.00000078757, 3.03697458703, 12036.4607348882],\n [0.00000074651, 1.755089133, 5088.6288397668],\n [0.00000073874, 3.50319414955, 3154.6870848956],\n [0.00000073547, 4.67926633877, 801.8209311238],\n [0.00000069627, 0.83297621398, 9437.762934887],\n [0.00000062449, 3.97763912806, 8827.3902698748],\n [0.00000061148, 1.81839892984, 7084.8967811152],\n [0.00000056963, 2.78430458592, 6286.5989683404],\n [0.00000056116, 4.38694865354, 14143.4952424306],\n [0.00000055577, 3.47006059924, 6279.5527316424],\n [0.00000051992, 0.18914947184, 12139.5535091068],\n [0.00000051605, 1.33282739866, 1748.016413067],\n [0.00000051145, 0.28306832879, 5856.4776591154],\n [0.00000049, 0.48735014197, 1194.4470102246],\n [0.00000041036, 5.36817592855, 8429.2412664666],\n [0.00000040938, 2.39850938714, 19651.048481098],\n [0.000000392, 6.16833020996, 10447.3878396044],\n [0.0000003677, 6.04133863162, 10213.285546211],\n [0.00000036596, 2.56957481827, 1059.3819301892],\n [0.00000035954, 1.70875808777, 2352.8661537718],\n [0.0000003557, 1.775968892, 6812.766815086],\n [0.00000033296, 0.59310278598, 17789.845619785],\n [0.00000030412, 0.44294464169, 83996.84731811189],\n [0.00000030047, 2.73975124088, 1349.8674096588],\n [0.00000025352, 3.16470891653, 4690.4798363586],\n];\n\nconst VSOP87_L1: Vsop87Element = [\n [6283.0758499914],\n [0.00206058863, 2.67823455808, 6283.0758499914],\n [0.00004303419, 2.63512233481, 12566.1516999828],\n [0.00000425264, 1.59046982018, 3.523118349],\n [0.00000119305, 5.79555765566, 26.2983197998],\n [0.00000109017, 2.96631010675, 1577.3435424478],\n [0.00000093479, 2.59211109542, 18849.2275499742],\n [0.00000072121, 1.13840581212, 529.6909650946],\n [0.00000067784, 1.87453300345, 398.1490034082],\n [0.0000006735, 4.40932832004, 5507.5532386674],\n [0.00000059045, 2.88815790631, 5223.6939198022],\n [0.00000055976, 2.17471740035, 155.4203994342],\n [0.00000045411, 0.39799502896, 796.2980068164],\n [0.00000036298, 0.46875437227, 775.522611324],\n [0.00000028962, 2.64732254645, 7.1135470008],\n [0.00000020844, 5.34138275149, 0.9803210682],\n [0.00000019097, 1.84628376049, 5486.777843175],\n [0.00000018508, 4.96855179468, 213.299095438],\n [0.00000017293, 2.9911676063, 6275.9623029906],\n [0.00000016233, 0.03216587315, 2544.3144198834],\n [0.00000015832, 1.43049301283, 2146.1654164752],\n [0.00000014608, 1.2046979369, 10977.078804699],\n [0.00000012461, 2.83432282119, 1748.016413067],\n [0.00000011877, 3.25805082007, 5088.6288397668],\n [0.00000011808, 5.27379760438, 1194.4470102246],\n [0.00000011514, 2.07502080082, 4694.0029547076],\n [0.00000010641, 0.76614722966, 553.5694028424],\n [0.00000009969, 1.30263423409, 6286.5989683404],\n [0.00000009721, 4.2392586526, 1349.8674096588],\n [0.00000009452, 2.69956827011, 242.728603974],\n [0.00000008577, 5.6447608598, 951.7184062506],\n [0.00000007576, 5.30056172859, 2352.8661537718],\n [0.00000006385, 2.65034514038, 9437.762934887],\n [0.00000006101, 4.66633726278, 4690.4798363586],\n];\n\nconst VSOP87_L2: Vsop87Element = [\n [0.00008721859, 1.07253635559, 6283.0758499914],\n [0.00000294833, 0.43717350256, 12566.1516999828],\n [0.00000027338, 0.05295636147, 3.523118349],\n [0.00000016333, 5.18820215724, 26.2983197998],\n [0.00000015745, 3.68504712183, 155.4203994342],\n [0.00000009425, 0.29667114694, 18849.2275499742],\n [0.00000008938, 2.05706319592, 77713.7714681205],\n [0.0000000694, 0.82691541038, 775.522611324],\n [0.00000005061, 4.6624323168, 1577.3435424478],\n [0.0000000406, 1.03067032318, 7.1135470008],\n [0.00000003809, 3.44043369494, 5573.1428014331],\n [0.00000003464, 5.14021224609, 796.2980068164],\n [0.00000003172, 6.05479318507, 5507.5532386674],\n [0.0000000302, 1.19240008524, 242.728603974],\n [0.00000002885, 6.11705865396, 529.6909650946],\n [0.00000002719, 0.30363248164, 398.1490034082],\n [0.00000002538, 2.27966434314, 553.5694028424],\n [0.00000002365, 4.37666117992, 5223.6939198022],\n [0.00000002078, 3.75435095487, 0.9803210682],\n [0.00000001675, 0.90149951436, 951.7184062506],\n];\n\nconst VSOP87_L3: Vsop87Element = [\n [0.00000289058, 5.84173149732, 6283.0758499914],\n [0.00000020712, 6.0498393902, 12566.1516999828],\n [0.00000002962, 5.1956057957, 155.4203994342],\n [0.00000001288, 4.7219761197, 3.523118349],\n [0.00000000635, 5.96904899168, 242.728603974],\n [0.0000000057, 5.54182903238, 18849.2275499742],\n [0.00000000402, 3.78606612895, 553.5694028424],\n];\n\nconst VSOP87_L4: Vsop87Element = [\n [0.00000007714, 4.14117321449, 6283.0758499914],\n [0.00000001016, 3.27573644241, 12566.1516999828],\n [0.0000000042, 0.41892851415, 155.4203994342],\n];\n\nconst VSOP87_L5: Vsop87Element = [[0.00000000172, 2.74854172392, 6283.0758499914]];\n\nconst VSOP87_B0: Vsop87Element = [\n [0.0000027962, 3.19870156017, 84334.66158130829],\n [0.00000101643, 5.42248619256, 5507.5532386674],\n [0.00000080445, 3.88013204458, 5223.6939198022],\n [0.00000043806, 3.70444689759, 2352.8661537718],\n [0.00000031933, 4.00026369781, 1577.3435424478],\n];\n\nconst VSOP87_B1: Vsop87Element = [\n [0.00227777722, 3.4137662053, 6283.0758499914],\n [0.00003805678, 3.37063423795, 12566.1516999828],\n];\n\nconst VSOP87_B2: Vsop87Element = [];\n\nconst VSOP87_B3: Vsop87Element = [];\n\nconst VSOP87_B4: Vsop87Element = [];\n\nconst VSOP87_B5: Vsop87Element = [];\n\nconst VSOP87_R0: Vsop87Element = [\n [1.00013988784],\n [0.01670699632, 3.09846350258, 6283.0758499914],\n [0.00013956024, 3.05524609456, 12566.1516999828],\n [0.0000308372, 5.19846674381, 77713.7714681205],\n [0.00001628463, 1.17387558054, 5753.3848848968],\n [0.00001575572, 2.84685214877, 7860.4193924392],\n [0.00000924799, 5.45292236722, 11506.7697697936],\n [0.00000542439, 4.56409151453, 3930.2096962196],\n [0.0000047211, 3.66100022149, 5884.9268465832],\n [0.00000345969, 0.96368627272, 5507.5532386674],\n [0.0000032878, 5.89983686142, 5223.6939198022],\n [0.00000306784, 0.29867139512, 5573.1428014331],\n [0.00000243181, 4.2734953079, 11790.6290886588],\n [0.00000211836, 5.84714461348, 1577.3435424478],\n [0.0000018574, 5.02199710705, 10977.078804699],\n [0.00000174844, 3.01193636733, 18849.2275499742],\n [0.00000109835, 5.0551063586, 5486.777843175],\n [0.00000098316, 0.88681311278, 6069.7767545534],\n [0.000000865, 5.68956418946, 15720.8387848784],\n [0.00000085831, 1.27079125277, 161000.6857376741],\n [0.00000064908, 0.27251341435, 17260.1546546904],\n [0.00000062917, 0.92177053978, 529.6909650946],\n [0.00000057056, 2.01374292245, 83996.84731811189],\n [0.00000055736, 5.2415979917, 71430.69561812909],\n [0.00000049384, 3.24501240359, 2544.3144198834],\n [0.00000046966, 2.57799853213, 775.522611324],\n [0.00000044666, 5.53715663816, 9437.762934887],\n [0.0000004252, 6.01110257982, 6275.9623029906],\n [0.00000038963, 5.36063832897, 4694.0029547076],\n [0.00000038245, 2.39255343973, 8827.3902698748],\n [0.00000037486, 0.82961281844, 19651.048481098],\n [0.00000036957, 4.90107587287, 12139.5535091068],\n [0.00000035661, 1.67447135798, 12036.4607348882],\n [0.00000034537, 1.84270693281, 2942.4634232916],\n [0.00000033193, 0.24370221704, 7084.8967811152],\n [0.00000031922, 0.18368299942, 5088.6288397668],\n [0.00000031846, 1.77775642078, 398.1490034082],\n [0.00000028468, 1.21344887533, 6286.5989683404],\n [0.00000027795, 1.89934427832, 6279.5527316424],\n [0.00000026275, 4.58896863104, 10447.3878396044],\n];\n\nconst VSOP87_R1: Vsop87Element = [\n [0.00103018607, 1.10748968172, 6283.0758499914],\n [0.00001721238, 1.06442300386, 12566.1516999828],\n [0.00000032345, 1.02168583254, 18849.2275499742],\n [0.00000030801, 2.84358443952, 5507.5532386674],\n [0.00000024978, 1.31906570344, 5223.6939198022],\n [0.00000018487, 1.42428709076, 1577.3435424478],\n [0.00000010077, 5.91385248388, 10977.078804699],\n [0.00000008654, 1.42046854427, 6275.9623029906],\n [0.00000008635, 0.27158192945, 5486.777843175],\n [0.00000005069, 1.68613408916, 5088.6288397668],\n];\n\nconst VSOP87_R2: Vsop87Element = [\n [0.00004359385, 5.78455133808, 6283.0758499914],\n [0.00000123633, 5.57935427994, 12566.1516999828],\n [0.00000008792, 3.62777893099, 77713.7714681205],\n [0.00000005689, 1.86958905084, 5573.1428014331],\n [0.00000003302, 5.47034879713, 18849.2275499742],\n [0.00000001471, 4.47964125007, 5507.5532386674],\n];\n\nconst VSOP87_R3: Vsop87Element = [\n [0.00000144595, 4.27319433901, 6283.0758499914],\n [0.00000006729, 3.91706261708, 12566.1516999828],\n];\n\nconst VSOP87_R4: Vsop87Element = [[0.00000003858, 2.56389016346, 6283.0758499914]];\n\nconst VSOP87_R5: Vsop87Element = [];\n\nexport const VSOP87_X: Vsop87Group = [VSOP87_L0, VSOP87_L1, VSOP87_L2, VSOP87_L3, VSOP87_L4, VSOP87_L5];\nexport const VSOP87_Y: Vsop87Group = [VSOP87_B0, VSOP87_B1, VSOP87_B2, VSOP87_B3, VSOP87_B4, VSOP87_B5];\nexport const VSOP87_Z: Vsop87Group = [VSOP87_R0, VSOP87_R1, VSOP87_R2, VSOP87_R3, VSOP87_R4, VSOP87_R5];\n","export function round(value: number, decimals = 0): number {\n const p = 10 ** decimals;\n\n return Math.round(value * p) / p;\n}\n\nexport function pad(num: number | string, size: number): string {\n let numStr = num.toString();\n\n while (numStr.length < size) {\n numStr = `0${numStr}`;\n }\n\n return numStr;\n}\n\nexport function sin2(number: number): number {\n return Math.sin(number) * Math.sin(number);\n}\n\nexport function cos2(number: number): number {\n return Math.cos(number) * Math.cos(number);\n}\n","import {pad, round} from './math';\n\nexport type AnglePrefixes = {\n positivePrefix: string;\n negativePrefix: string;\n};\n\n/**\n * @deprecated use decimal2degreeMinutesSeconds instead\n * @param deg\n * @param short\n */\nexport function deg2angle(deg: number, short = false): string {\n return decimal2degreeMinutesSeconds(deg, short);\n}\n\nexport function decimal2degreeMinutes(decimal: number, short = false, prefixes?: AnglePrefixes): string {\n const sign = getSignPrefix(decimal, prefixes);\n\n decimal = Math.abs(decimal);\n\n const degPart = Math.floor(decimal);\n const min = round((decimal - degPart) * 60, 5);\n\n const degString = `${degPart}° `;\n const minString = `${pad(min, 2)}'`;\n\n if (short && degPart === 0.0) {\n return sign + minString;\n }\n\n return sign + degString + minString;\n}\n\nexport function decimal2degreeMinutesSeconds(decimal: number, short = false, prefixes?: AnglePrefixes): string {\n const sign = getSignPrefix(decimal, prefixes);\n\n decimal = Math.abs(decimal);\n\n const degPart = Math.floor(decimal);\n const min = Math.floor((decimal - degPart) * 60);\n const sec = round((decimal - degPart - min / 60) * 3600, 3);\n const secParts = sec.toString().split('.');\n\n const degString = `${degPart}° `;\n const minString = `${pad(min, 2)}' `;\n const secString = `${secParts.length === 1 ? pad(sec, 2) : `${pad(secParts[0], 2)}.${secParts[1]}`}\"`;\n\n if (short && degPart === 0.0 && min === 0.0) {\n return sign + secString;\n }\n\n if (short && degPart === 0.0) {\n return sign + minString + secString;\n }\n\n return sign + degString + minString + secString;\n}\n\nexport function angle2deg(angle: string): number {\n const matches = angle.match(/(-?)(\\d+)°.*?(\\d+)'.*?([\\d.]+)\"/);\n\n if (!matches) {\n throw new Error('false angle format');\n }\n\n const sign = matches[1].trim() === '-' ? -1 : 1;\n const deg = parseInt(matches[2], 10);\n const min = parseInt(matches[3], 10);\n const sec = parseFloat(matches[4]);\n\n return sign * (deg + min / 60 + sec / 3600);\n}\n\nexport function deg2time(angle: number): string {\n const sign = angle < 0 ? '-' : '';\n const time = Math.abs(angle / 15);\n\n const hour = Math.floor(time);\n const min = Math.floor((time - hour) * 60);\n const sec = round((time - hour - min / 60) * 3600, 3);\n const secParts = sec.toString().split('.');\n\n const hourString = sign + hour;\n const minString = pad(min, 2);\n const secString = secParts.length === 1 ? pad(sec, 2) : `${pad(secParts[0], 2)}.${secParts[1]}`;\n\n return `${hourString}h ${minString}m ${secString}s`;\n}\n\nexport function time2deg(timeAngle: string): number {\n const matches = timeAngle.match(/(-?)(\\d+)h.*?(\\d+)m.*?([\\d.]+)s/);\n\n if (!matches) {\n throw new Error('false time angle format');\n }\n\n const sign = matches[1].trim() === '-' ? -1 : 1;\n const deg = parseInt(matches[2], 10);\n const min = parseInt(matches[3], 10);\n const sec = parseFloat(matches[4]);\n\n const angleDeg = sign * (deg + min / 60 + sec / 3600);\n\n return angleDeg * 15;\n}\n\nexport function normalizeAngle(degrees: number, baseAngle = 360.0): number {\n let angle = degrees % baseAngle;\n\n if (angle < 0) {\n angle = angle + baseAngle;\n }\n\n return angle;\n}\n\nexport function sec2deg(seconds: number): number {\n return seconds / 3600;\n}\n\nfunction getSignPrefix(decimal: number, prefixes?: AnglePrefixes): string {\n if (prefixes) {\n return decimal < 0 ? prefixes.negativePrefix : prefixes.positivePrefix;\n }\n\n return decimal < 0 ? '-' : '';\n}\n","export const EARTH_EQUATORIAL_RADIUS_METERS = 6_378_137;\nexport const EARTH_EQUATORIAL_RADIUS_KM = EARTH_EQUATORIAL_RADIUS_METERS / 1000;\nexport const EARTH_AXIS_RATIO = 0.996647189335;\nexport const EARTH_FLATTENING = 1 - EARTH_AXIS_RATIO;\nexport const EARTH_ROTATION_DEG_PER_HOUR = 1.002738 * 15;\n\nexport const EARTH_ARGUMENTS_OF_NUTATION = [\n [0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9],\n [0, 0, 2, -2, 2, -13187, -1.6, 5736, -3.1],\n [0, 0, 2, 0, 2, -2274, -0.2, 977, -0.5],\n [0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5],\n [0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1],\n [1, 0, 0, 0, 0, 712, 0.1, -7, 0.0],\n [0, 1, 2, -2, 2, -517, 1.2, 224, -0.6],\n [0, 0, 2, 0, 1, -386, -0.4, 200, 0.0],\n [1, 0, 2, 0, 2, -301, 0.0, 129, -0.1],\n [0, -1, 2, -2, 2, 217, -0.5, -95, 0.3],\n [1, 0, 0, -2, 0, -158, 0.0, -1, 0.0],\n [0, 0, 2, -2, 1, 129, 0.1, -70, 0.0],\n [-1, 0, 2, 0, 2, 123, 0.0, -53, 0.0],\n [0, 0, 0, 2, 0, 63, 0.0, -2, 0.0],\n [1, 0, 0, 0, 1, 63, 0.1, -33, 0.0],\n [-1, 0, 2, 2, 2, -59, 0.0, 26, 0.0],\n [-1, 0, 0, 0, 1, -58, -0.1, 32, 0.0],\n [1, 0, 2, 0, 1, -51, 0.0, 27, 0.0],\n [2, 0, 0, -2, 0, 48, 0.0, 1, 0.0],\n [-2, 0, 2, 0, 1, 46, 0.0, -24, 0.0],\n [0, 0, 2, 2, 2, -38, 0.0, 16, 0.0],\n [2, 0, 2, 0, 2, -31, 0.0, 13, 0.0],\n [2, 0, 0, 0, 0, 29, 0.0, -1, 0.0],\n [1, 0, 2, -2, 2, 29, 0.0, -12, 0.0],\n [0, 0, 2, 0, 0, 26, 0.0, -1, 0.0],\n [0, 0, 2, -2, 0, -22, 0.0, 0, 0.0],\n [-1, 0, 2, 0, 1, 21, 0.0, -10, 0.0],\n [0, 2, 0, 0, 0, 17, -0.1, 0, 0.0],\n [0, 2, 2, -2, 2, -16, 0.1, 7, 0.0],\n [-1, 0, 0, 2, 1, 16, 0.0, -8, 0.0],\n [0, 1, 0, 0, 1, -15, 0.0, 9, 0.0],\n [1, 0, 0, -2, 1, -13, 0.0, 7, 0.0],\n [0, -1, 0, 0, 1, -12, 0.0, 6, 0.0],\n [2, 0, -2, 0, 0, 11, 0.0, 0, 0.0],\n [-1, 0, 2, 2, 1, -10, 0.0, 5, 0.0],\n [1, 0, 2, 2, 2, -8, 0.0, 3, 0.0],\n [1, 1, 0, -2, 0, -7, 0.0, 0, 0.0],\n [0, 1, 2, 0, 2, 7, 0.0, -3, 0.0],\n [0, -1, 2, 0, 2, -7, 0.0, 3, 0.0],\n [0, 0, 2, 2, 1, -7, 0.0, 3, 0.0],\n [-2, 0, 0, 2, 1, -6, 0.0, 3, 0.0],\n [1, 0, 0, 2, 0, 6, 0.0, 0, 0.0],\n [2, 0, 2, -2, 2, 6, 0.0, -3, 0.0],\n [0, 0, 0, 2, 1, -6, 0.0, 3, 0.0],\n [1, 0, 2, -2, 1, 6, 0.0, -3, 0.0],\n [0, -1, 2, -2, 1, -5, 0.0, 3, 0.0],\n [0, 0, 0, -2, 1, -5, 0.0, 3, 0.0],\n [1, -1, 0, 0, 0, 5, 0.0, 0, 0.0],\n [2, 0, 2, 0, 1, -5, 0.0, 3, 0.0],\n [2, 0, 0, -2, 1, 4, 0.0, -2, 0.0],\n [0, 1, 2, -2, 1, 4, 0.0, -2, 0.0],\n [1, 0, 0, -1, 0, -4, 0.0, 0, 0.0],\n [0, 1, 0, -2, 0, -4, 0.0, 0, 0.0],\n [1, 0, -2, 0, 0, 4, 0.0, 0, 0.0],\n [0, 0, 0, 1, 0, -4, 0.0, 0, 0.0],\n [-2, 0, 2, 0, 2, -3, 0.0, 1, 0.0],\n [1, -1, 0, -1, 0, -3, 0.0, 0, 0.0],\n [1, 1, 0, 0, 0, -3, 0.0, 0, 0.0],\n [1, 0, 2, 0, 0, 3, 0.0, 0, 0.0],\n [1, -1, 2, 0, 2, -3, 0.0, 1, 0.0],\n [-1, -1, 2, 2, 2, -3, 0.0, 1, 0.0],\n [3, 0, 2, 0, 2, -3, 0.0, 1, 0.0],\n [0, -1, 2, 2, 2, -3, 0.0, 1, 0.0],\n [0, -2, 2, -2, 1, -2, 0.0, 1, 0.0],\n [-2, 0, 0, 0, 1, -2, 0.0, 1, 0.0],\n [1, 1, 2, 0, 2, 2, 0.0, -1, 0.0],\n [-1, 0, 2, -2, 1, -2, 0.0, 1, 0.0],\n [2, 0, 0, 0, 1, 2, 0.0, -1, 0.0],\n [1, 0, 0, 0, 2, -2, 0.0, 1, 0.0],\n [3, 0, 0, 0, 0, 2, 0.0, 0, 0.0],\n [0, 0, 2, 1, 2, 2, 0.0, -1, 0.0],\n [-1, 0, 2, 4, 2, -2, 0.0, 1, 0.0],\n [2, 0, -2, 0, 1, 1, 0.0, 0, 0.0],\n [2, 1, 0, -2, 0, 1, 0.0, 0, 0.0],\n [0, 0, -2, 2, 1, 1, 0.0, 0, 0.0],\n [0, 1, -2, 2, 0, -1, 0.0, 0, 0.0],\n [0, 1, 0, 0, 2, 1, 0.0, 0, 0.0],\n [-1, 0, 0, 1, 1, 1, 0.0, 0, 0.0],\n [0, 1, 2, -2, 0, -1, 0.0, 0, 0.0],\n [-1, 0, 0, 0, 2, 1, 0.0, -1, 0.0],\n [1, 0, 0, -4, 0, -1, 0.0, 0, 0.0],\n [-2, 0, 2, 2, 2, 1, 0.0, -1, 0.0],\n [2, 0, 0, -4, 0, -1, 0.0, 0, 0.0],\n [1, 1, 2, -2, 2, 1, 0.0, -1, 0.0],\n [1, 0, 2, 2, 1, -1, 0.0, 1, 0.0],\n [-2, 0, 2, 4, 2, -1, 0.0, 1, 0.0],\n [-1, 0, 4, 0, 2, 1, 0.0, 0, 0.0],\n [1, -1, 0, -2, 0, 1, 0.0, 0, 0.0],\n [2, 0, 2, -2, 1, 1, 0.0, -1, 0.0],\n [2, 0, 2, 2, 2, -1, 0.0, 0, 0.0],\n [1, 0, 0, 2, 1, -1, 0.0, 0, 0.0],\n [0, 0, 4, -2, 2, 1, 0.0, 0, 0.0],\n [3, 0, 2, -2, 2, 1, 0.0, 0, 0.0],\n [1, 0, 2, -2, 0, -1, 0.0, 0, 0.0],\n [0, 1, 2, 0, 1, 1, 0.0, 0, 0.0],\n [-1, -1, 0, 2, 1, 1, 0.0, 0, 0.0],\n [0, 0, -2, 0, 1, -1, 0.0, 0, 0.0],\n [0, 0, 2, -1, 2, -1, 0.0, 0, 0.0],\n [0, 1, 0, 2, 0, -1, 0.0, 0, 0.0],\n [1, 0, -2, -2, 0, -1, 0.0, 0, 0.0],\n [0, -1, 2, 0, 1, -1, 0.0, 0, 0.0],\n [1, 1, 0, -2, 1, -1, 0.0, 0, 0.0],\n [1, 0, -2, 2, 0, -1, 0.0, 0, 0.0],\n [2, 0, 0, 2, 0, 1, 0.0, 0, 0.0],\n [0, 0, 2, 4, 2, -1, 0.0, 0, 0.0],\n [0, 1, 0, 1, 0, 1, 0.0, 0, 0.0],\n];\n","export const DEG = Math.PI / 180;\nexport const RAD = 180 / Math.PI;\n","export const INCLINATION_OF_MEAN_LUNAR_EQUATOR = 1.54242;\n\n// Source: https://nssdc.gsfc.nasa.gov/planetary/factsheet/\nexport const MOON_DIAMETER_KM = 3474.8;\n\nexport const MOON_PHASE_NEW_MOON = 0;\nexport const MOON_PHASE_FIRST_QUARTER = 0.25;\nexport const MOON_PHASE_FULL_MOON = 0.5;\nexport const MOON_PHASE_LAST_QUARTER = 0.75;\n\nexport const MOON_ARGUMENTS_LR = [\n [0, 0, 1, 0, 6288774, -20905355],\n [2, 0, -1, 0, 1274027, -3699111],\n [2, 0, 0, 0, 658314, -2955968],\n [0, 0, 2, 0, 213618, -569925],\n [0, 1, 0, 0, -185116, 48888],\n [0, 0, 0, 2, -114332, -3149],\n [2, 0, -2, 0, 58793, 246158],\n [2, -1, -1, 0, 57066, -152138],\n [2, 0, 1, 0, 53322, -170733],\n [2, -1, 0, 0, 45758, -204586],\n [0, 1, -1, 0, -40923, -129620],\n [1, 0, 0, 0, -34720, 108743],\n [0, 1, 1, 0, -30383, 104755],\n [2, 0, 0, -2, 15327, 10321],\n [0, 0, 1, 2, -12528, 0],\n [0, 0, 1, -2, 10980, 79661],\n [4, 0, -1, 0, 10675, -34782],\n [0, 0, 3, 0, 10034, -23210],\n [4, 0, -2, 0, 8548, -21636],\n [2, 1, -1, 0, -7888, 24208],\n [2, 1, 0, 0, -6766, 30824],\n [1, 0, -1, 0, -5163, -8379],\n [1, 1, 0, 0, 4987, -16675],\n [2, -1, 1, 0, 4036, -12831],\n [2, 0, 2, 0, 3994, -10445],\n [4, 0, 0, 0, 3861, -11650],\n [2, 0, -3, 0, 3665, 14403],\n [0, 1, -2, 0, -2689, -7003],\n [2, 0, -1, 2, -2602, 0],\n [2, -1, -2, 0, 2390, 10056],\n [1, 0, 1, 0, -2348, 6322],\n [2, -2, 0, 0, 2236, -9884],\n [0, 1, 2, 0, -2120, 5751],\n [0, 2, 0, 0, -2069, 0],\n [2, -2, -1, 0, 2048, -4950],\n [2, 0, 1, -2, -1773, 4130],\n [2, 0, 0, 2, -1595, 0],\n [4, -1, -1, 0, 1215, -3958],\n [0, 0, 2, 2, -1110, 0],\n [3, 0, -1, 0, -892, 3258],\n [2, 1, 1, 0, -810, 2616],\n [4, -1, -2, 0, 759, -1897],\n [0, 2, -1, 0, -713, -2117],\n [2, 2, -1, 0, -700, 2354],\n [2, 1, -2, 0, 691, 0],\n [2, -1, 0, -2, 596, 0],\n [4, 0, 1, 0, 549, -1423],\n [0, 0, 4, 0, 537, -1117],\n [4, -1, 0, 0, 520, -1571],\n [1, 0, -2, 0, -487, -1739],\n [2, 1, 0, -2, -399, 0],\n [0, 0, 2, -2, -381, -4421],\n [1, 1, 1, 0, 351, 0],\n [3, 0, -2, 0, -340, 0],\n [4, 0, -3, 0, 330, 0],\n [2, -1, 2, 0, 327, 0],\n [0, 2, 1, 0, -323, 1165],\n [1, 1, -1, 0, 299, 0],\n [2, 0, 3, 0, 294, 0],\n [2, 0, -1, -2, 0, 8752],\n];\n\nexport const MOON_ARGUMENTS_B = [\n [0, 0, 0, 1, 5128122],\n [0, 0, 1, 1, 280602],\n [0, 0, 1, -1, 277693],\n [2, 0, 0, -1, 173237],\n [2, 0, -1, 1, 55413],\n [2, 0, -1, -1, 46271],\n [2, 0, 0, 1, 32573],\n [0, 0, 2, 1, 17198],\n [2, 0, 1, -1, 9266],\n [0, 0, 2, -1, 8822],\n [2, -1, 0, -1, 8216],\n [2, 0, -2, -1, 4324],\n [2, 0, 1, 1, 4200],\n [2, 1, 0, -1, -3359],\n [2, -1, -1, 1, 2463],\n [2, -1, 0, 1, 2211],\n [2, -1, -1, -1, 2065],\n [0, 1, -1, -1, -1870],\n [4, 0, -1, -1, 1828],\n [0, 1, 0, 1, -1794],\n [0, 0, 0, 3, -1749],\n [0, 1, -1, 1, -1565],\n [1, 0, 0, 1, -1491],\n [0, 1, 1, 1, -1475],\n [0, 1, 1, -1, -1410],\n [0, 1, 0, -1, -1344],\n [1, 0, 0, -1, -1335],\n [0, 0, 3, 1, 1107],\n [4, 0, 0, -1, 1021],\n [4, 0, -1, 1, 833],\n [0, 0, 1, -3, 777],\n [4, 0, -2, 1, 671],\n [2, 0, 0, -3, 607],\n [2, 0, 2, -1, 596],\n [2, -1, 1, -1, 491],\n [2, 0, -2, 1, -451],\n [0, 0, 3, -1, 439],\n [2, 0, 2, 1, 422],\n [2, 0, -3, -1, 421],\n [2, 1, -1, 1, -366],\n [2, 1, 0, 1, -351],\n [4, 0, 0, 1, 331],\n [2, -1, 1, 1, 315],\n [2, -2, 0, -1, 302],\n [0, 0, 1, 3, -283],\n [2, 1, 1, -1, -229],\n [1, 1, 0, -1, 223],\n [1, 1, 0, 1, 223],\n [0, 1, -2, -1, -220],\n [2, 1, -1, -1, -220],\n [1, 0, 1, 1, -185],\n [2, -1, -2, -1, 181],\n [0, 1, 2, 1, -177],\n [4, 0, -2, -1, 176],\n [4, -1, -1, -1, 166],\n [1, 0, 1, -1, -164],\n [4, 0, 1, -1, 132],\n [1, 0, -1, -1, -119],\n [4, -1, 0, -1, 115],\n [2, -2, 0, 1, 107],\n];\n","export const ASTRONOMICAL_UNIT_IN_METERS = 149_597_870_700.0;\nexport const LIGHT_SPEED_KM_PER_SEC = 299_792.458;\n","import {DEG} from '@app/constants/math';\nimport {EARTH_EQUATORIAL_RADIUS_METERS, EARTH_FLATTENING} from '../constants/earth';\nimport {ASTRONOMICAL_UNIT_IN_METERS} from '../constants/units';\nimport type {LatLon} from '../types/LocationTypes';\nimport {cos2, sin2} from './math';\n\nexport function au2km(R: number): number {\n return R * (ASTRONOMICAL_UNIT_IN_METERS / 1000);\n}\n\nexport function km2au(km: number): number {\n return km / (ASTRONOMICAL_UNIT_IN_METERS / 1000);\n}\n\nexport function getDistanceInKm(location1: LatLon, location2: LatLon): number {\n const {lat: lat1, lon: lon1} = location1;\n const {lat: lat2, lon: lon2} = location2;\n\n // Meeus 11\n const F = (lat1 + lat2) / 2;\n const G = (lat1 - lat2) / 2;\n const lambda = (lon2 - lon1) / 2;\n\n const FRad = F * DEG;\n const GRad = G * DEG;\n const lambdaRad = lambda * DEG;\n\n const S = sin2(GRad) * cos2(lambdaRad) + cos2(FRad) * sin2(lambdaRad);\n const C = cos2(GRad) * cos2(lambdaRad) + sin2(FRad) * sin2(lambdaRad);\n\n const omegaRad = Math.atan(Math.sqrt(S / C));\n\n const R = Math.sqrt(S * C) / omegaRad;\n const D = (2 * omegaRad * EARTH_EQUATORIAL_RADIUS_METERS) / 1000;\n const H1 = (3 * R - 1) / (2 * C);\n const H2 = (3 * R + 1) / (2 * S);\n\n return D * (1 + EARTH_FLATTENING * H1 * sin2(FRad) * cos2(GRad) - EARTH_FLATTENING * H2 * cos2(FRad) * sin2(GRad));\n}\n","import {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\n\nexport function getMeanAnomaly(T: number): number {\n // Meeus 47.4\n const M = 357.5291092 + 35999.0502909 * T - 0.0001536 * T ** 2 + T ** 3 / 2449000;\n\n return normalizeAngle(M);\n}\n\nexport function getTrueAnomaly(T: number): number {\n // Meeus 25.4\n const M = getMeanAnomaly(T);\n const C = getEquationOfCenter(T);\n\n return M + C;\n}\n\nexport function getMeanLongitude(T: number): number {\n const t = T / 10;\n\n // Meeus 28.2\n const L0 =\n 280.4664567 + 360007.6982779 * t + 0.03042028 * t ** 2 + t ** 3 / 49931 - t ** 4 / 15300 + t ** 5 / 2000000;\n\n return normalizeAngle(L0);\n}\n\nexport function getTrueLongitude(T: number): number {\n // Meeus 25.4\n const L0 = getMeanLongitude(T);\n const C = getEquationOfCenter(T);\n\n return L0 + C;\n}\n\nexport function getApparentLongitude(T: number): number {\n // Meeus 25.5\n const o = getTrueLongitude(T);\n\n const omega = 125.04 - 1934.136 * T;\n const omegaRad = omega * DEG;\n\n return o - 0.00569 - 0.00478 * Math.sin(omegaRad);\n}\n\nexport function getEquationOfCenter(T: number): number {\n const M = getMeanAnomaly(T);\n\n // Meeus 25.4\n let C = (1.914602 - 0.004817 * T - 0.000014 * T ** 2) * Math.sin(M * DEG);\n C += (0.019993 - 0.000101 * T) * Math.sin(2 * M * DEG);\n C += 0.000289 * Math.sin(3 * M * DEG);\n\n return C;\n}\n","import {DEG, RAD} from '@app/constants/math';\nimport {MOON_ARGUMENTS_B, MOON_ARGUMENTS_LR} from '@app/constants/moon';\nimport {normalizeAngle} from '@app/utils/angle';\nimport {km2au} from '@app/utils/distance';\nimport * as earth from '@app/utils/earth';\nimport * as sun from '@app/utils/sun';\n\nexport function getMeanElongation(T: number): number {\n // Meeus 47.2\n const D = 297.8501921 + 445267.1114034 * T - 0.0018819 * T ** 2 + T ** 3 / 545868 - T ** 4 / 113065000;\n\n return normalizeAngle(D);\n}\n\nexport function getMeanAnomaly(T: number): number {\n // Meeus 47.2\n const Mmoon = 134.9633964 + 477198.8675055 * T + 0.0087414 * T ** 2 + T ** 3 / 69699 - T ** 4 / 1471200;\n\n return normalizeAngle(Mmoon);\n}\n\nexport function getArgumentOfLatitude(T: number): number {\n // Meeus 47.5\n const F = 93.272095 + 483202.0175233 * T - 0.0036539 * T ** 2 - T ** 3 / 352600 + T ** 4 / 86331000;\n\n return normalizeAngle(F);\n}\n\nexport function getMeanLongitude(T: number): number {\n // Meeus 47.1\n const L = 218.3164477 + 481267.88123421 * T - 0.0015786 * T ** 2 + T ** 3 / 538841 - T ** 4 / 65194000;\n\n return normalizeAngle(L);\n}\n\nexport function getMeanLongitudeOfAscendingNode(T: number): number {\n return 125.0445479 - 1934.1362891 * T + 0.0020754 * T ** 2 + T ** 3 / 467441 - T ** 4 / 60616000;\n}\n\nexport function getEquatorialHorizontalParallax(T: number): number {\n const d = getDistanceToEarth(T);\n\n // Meeus 47\n return Math.asin(6378.14 / d) * RAD;\n}\n\nexport function getLongitude(T: number): number {\n const L = getMeanLongitude(T);\n const sumL = getSumL(T);\n\n return L + sumL / 1000000;\n}\n\nexport function getLatitude(T: number): number {\n const sumB = getSumB(T);\n\n return sumB / 1000000;\n}\n\nexport function getRadiusVector(T: number): number {\n return km2au(getDistanceToEarth(T));\n}\n\nexport function getDistanceToEarth(T: number): number {\n const sumR = getSumR(T);\n\n return 385000.56 + sumR / 1000;\n}\n\nfunction getSumR(T: number): number {\n // Meeus 47.b\n const D = getMeanElongation(T);\n const Msun = sun.getMeanAnomaly(T);\n const Mmoon = getMeanAnomaly(T);\n const F = getArgumentOfLatitude(T);\n\n // Action of jupiter\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n let sumR = 0;\n MOON_ARGUMENTS_LR.forEach((args: Array<number>) => {\n const argD = args[0];\n const argMsun = args[1];\n const argMmoon = args[2];\n const argF = args[3];\n const argSumR = args[5];\n\n let tmpSumR = Math.cos((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n switch (argMsun) {\n case 1:\n case -1:\n tmpSumR = tmpSumR * argSumR * E;\n break;\n case 2:\n case -2:\n tmpSumR = tmpSumR * argSumR * E * E;\n break;\n default:\n tmpSumR = tmpSumR * argSumR;\n break;\n }\n\n sumR += tmpSumR;\n });\n\n return sumR;\n}\n\nfunction getSumL(T: number): number {\n // Meeus 47.b\n const L = getMeanLongitude(T);\n const D = getMeanElongation(T);\n const Msun = sun.getMeanAnomaly(T);\n const Mmoon = getMeanAnomaly(T);\n const F = getArgumentOfLatitude(T);\n\n // Action of venus\n const A1 = 119.75 + 131.849 * T;\n // Action of jupiter\n const A2 = 53.09 + 479264.29 * T;\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n let sumL = 3958 * Math.sin(A1 * DEG) + 1962 * Math.sin((L - F) * DEG) + 318 * Math.sin(A2 * DEG);\n\n MOON_ARGUMENTS_LR.forEach((args: Array<number>) => {\n const argD = args[0];\n const argMsun = args[1];\n const argMmoon = args[2];\n const argF = args[3];\n const argSumL = args[4];\n\n let tmpSumL = Math.sin((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n switch (argMsun) {\n case 1:\n case -1:\n tmpSumL = tmpSumL * argSumL * E;\n break;\n case 2:\n case -2:\n tmpSumL = tmpSumL * argSumL * E * E;\n break;\n default:\n tmpSumL = tmpSumL * argSumL;\n break;\n }\n\n sumL += tmpSumL;\n });\n\n return sumL;\n}\n\nfunction getSumB(T: number): number {\n // Meeus 47.B\n const L = getMeanLongitude(T);\n const D = getMeanElongation(T);\n const Msun = sun.getMeanAnomaly(T);\n const Mmoon = getMeanAnomaly(T);\n const F = getArgumentOfLatitude(T);\n\n // Action of venus\n const A1 = 119.75 + 131.849 * T;\n // Action of jupiter\n const A3 = 313.45 + 481266.484 * T;\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n\n let sumB =\n -2235 * Math.sin(L * DEG)\n + 382 * Math.sin(A3 * DEG)\n + 175 * Math.sin((A1 - F) * DEG)\n + 175 * Math.sin((A1 + F) * DEG)\n + 127 * Math.sin((L - Mmoon) * DEG)\n - 115 * Math.sin((L + Mmoon) * DEG);\n\n MOON_ARGUMENTS_B.forEach((args: Array<number>) => {\n const argD = args[0];\n const argMsun = args[1];\n const argMmoon = args[2];\n const argF = args[3];\n const argSumB = args[4];\n\n let tmpSumB = Math.sin((argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F) * DEG);\n\n switch (argMsun) {\n case 1:\n case -1:\n tmpSumB = tmpSumB * argSumB * E;\n break;\n case 2:\n case -2:\n tmpSumB = tmpSumB * argSumB * E ** 2;\n break;\n default:\n tmpSumB = tmpSumB * argSumB;\n break;\n }\n\n sumB += tmpSumB;\n });\n\n return sumB;\n}\n\nexport function getOpticalLiberationInLongitude(longitude: number, latitude: number, T: number): number {\n const latRad = latitude * DEG;\n\n const i = 1.54242;\n const iRad = i * DEG;\n\n const phi = earth.getNutationInLongitude(T);\n const F = getArgumentOfLatitude(T);\n const Omega = getMeanLongitudeOfAscendingNode(T);\n\n // Meeus 53.1\n const W = normalizeAngle(longitude - phi - Omega);\n const WRad = W * DEG;\n\n const ARad = Math.atan2(\n Math.sin(WRad) * Math.cos(latRad) * Math.cos(iRad) - Math.sin(latRad) * Math.sin(iRad),\n Math.cos(WRad) * Math.cos(latRad),\n );\n const A = normalizeAngle(ARad * RAD);\n\n return A - F;\n}\n\nexport function getOpticalLiberationInLatitude(longitude: number, latitude: number, T: number): number {\n const latRad = latitude * DEG;\n\n const i = 1.54242;\n const iRad = i * DEG;\n\n const phi = earth.getNutationInLongitude(T);\n const Omega = getMeanLongitudeOfAscendingNode(T);\n\n // Meeus 53.1\n const W = normalizeAngle(longitude - phi - Omega);\n const WRad = W * DEG;\n\n const bRad = Math.asin(-1 * Math.sin(WRad) * Math.cos(latRad) * Math.sin(iRad) - Math.sin(latRad) * Math.cos(iRad));\n\n return bRad * RAD;\n}\n","import {EARTH_ARGUMENTS_OF_NUTATION} from '@app/constants/earth';\nimport {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\nimport * as moon from '@app/utils/moon';\nimport * as sun from '@app/utils/sun';\n\nexport function getMeanAnomaly(T: number): number {\n // Meeus 47.4\n const M = 357.5291092 + 35999.0502909 * T - 0.0001536 * T ** 2 + T ** 3 / 2449000;\n\n return normalizeAngle(M);\n}\n\nexport function getEccentricity(T: number): number {\n // Meeus 25.4\n return 0.016708634 - 0.000042037 * T - 0.0000001267 * T ** 2;\n}\n\nexport function getLongitudeOfPerihelionOfOrbit(T: number): number {\n // Meeus 23\n return 102.93735 + 1.71946 * T + 0.00046 * T ** 2;\n}\n\nexport function getMeanObliquityOfEcliptic(T: number): number {\n const U = T / 100;\n\n // Meeus 22.3\n const eps0 =\n 84381.448\n - 4680.93 * U\n - 1.55 * U ** 2\n + 1999.25 * U ** 3\n - 51.38 * U ** 4\n - 249.67 * U ** 5\n - 39.05 * U ** 6\n + 7.12 * U ** 7\n + 27.87 * U ** 8\n + 5.79 * U ** 9\n + 2.45 * U ** 10;\n\n return eps0 / 3600;\n}\n\nexport function getTrueObliquityOfEcliptic(T: number): number {\n const eps0 = getMeanObliquityOfEcliptic(T);\n const sumEps = getNutationInObliquity(T);\n\n // Meeus chapter 22\n return eps0 + sumEps;\n}\n\nexport function getNutationInLongitude(T: number): number {\n // Meeus chapter 22\n const D = moon.getMeanElongation(T);\n const Msun = sun.getMeanAnomaly(T);\n const Mmoon = moon.getMeanAnomaly(T);\n const F = moon.getArgumentOfLatitude(T);\n\n // Longitude of the ascending node of moon's mean orbit on ecliptic\n const O = 125.04452 - 1934.136261 * T + 0.0020708 * T ** 2 + T ** 3 / 450000;\n\n let sumPhi = 0;\n EARTH_ARGUMENTS_OF_NUTATION.forEach((args) => {\n const argMmoon = args[0]; // Mean anomaly of moon\n const argMsun = args[1]; // Mean anomaly of sun\n const argF = args[2]; // Mean argument of perigee\n const argD = args[3]; // Mean elongation of moon\n const argO = args[4]; // Mean length of ascending knot of moon's orbit\n const argPhi1 = args[5];\n const argPhi2 = args[6];\n\n const tmpSum = argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F + argO * O;\n\n sumPhi += Math.sin(tmpSum * DEG) * (argPhi1 + argPhi2 * T);\n });\n\n return (sumPhi * 0.0001) / 3600;\n}\n\nexport function getNutationInObliquity(T: number): number {\n // Meeus chapter 22\n const D = moon.getMeanElongation(T);\n const Msun = sun.getMeanAnomaly(T);\n const Mmoon = moon.getMeanAnomaly(T);\n const F = moon.getArgumentOfLatitude(T);\n\n // Longitude of the ascending node of moon's mean orbit on ecliptic\n const O = 125.04452 - 1934.136261 * T + 0.0020708 * T ** 2 + T ** 3 / 450000;\n\n let sumEps = 0;\n EARTH_ARGUMENTS_OF_NUTATION.forEach((args) => {\n const argMmoon = args[0]; // Mean anomaly of moon\n const argMsun = args[1]; // Mean anomaly of sun\n const argF = args[2]; // Mean argument of perigee\n const argD = args[3]; // Mean elongation of moon\n const argO = args[4]; // Mean length of ascending knot of moon's orbit\n const argEps1 = args[7];\n const argEps2 = args[8];\n\n const tmpSum = argD * D + argMsun * Msun + argMmoon * Mmoon + argF * F + argO * O;\n\n sumEps += Math.cos(tmpSum * DEG) * (argEps1 + argEps2 * T);\n });\n\n return (sumEps * 0.0001) / 3600;\n}\n","import {round} from '@app/utils/math';\nimport type {Time} from '../types/TimeTypes';\n\nexport function sec2string(sec: number, short = false): string {\n const sign = sec < 0 ? '-' : '';\n sec = Math.abs(sec);\n\n const hour = Math.floor(sec / 3660);\n const min = Math.floor((sec - hour * 3600) / 60);\n const secPart = round(sec - hour * 3600 - min * 60, 2);\n\n if (short && hour === 0.0 && min === 0.0) {\n return `${sign + secPart}s`;\n }\n\n if (short && hour === 0.0) {\n return `${sign + min}m ${secPart}s`;\n }\n\n return `${sign + hour}h ${min}m ${secPart}s`;\n}\n\nexport function time2julianDay(time: Time): number {\n const tmpYear = parseFloat(`${time.year}.${getDayOfYear(time)}`);\n\n let Y: number;\n let M: number;\n\n if (time.month > 2) {\n Y = time.year;\n M = time.month;\n } else {\n Y = time.year - 1;\n M = time.month + 12;\n }\n\n const D = time.day;\n const H = time.hour / 24 + time.min / 1440 + time.sec / 86400;\n\n let A: number;\n let B: number;\n\n if (tmpYear >= 1582.288) {\n // YYYY-MM-DD >= 1582-10-15\n A = Math.floor(Y / 100);\n B = 2 - A + Math.floor(A / 4);\n } else if (tmpYear <= 1582.277) {\n // YY-MM-DD <= 1582-10-04\n B = 0;\n } else {\n throw new Error('Date between 1582-10-04 and 1582-10-15 is not defined.');\n }\n\n // Meeus 7.1\n return Math.floor(365.25 * (Y + 4716)) + Math.floor(30.6001 * (M + 1)) + D + H + B - 1524.5;\n}\n\nexport function julianDay2time(jd: number): Time {\n jd = jd + 0.5;\n\n const Z = Math.floor(jd);\n const F = jd - Z;\n\n let A = Z;\n if (Z >= 2299161) {\n const a = Math.floor((Z - 1867216.25) / 36524.25);\n A = Z + 1 + a - Math.floor(a / 4);\n }\n\n const B = A + 1524;\n const C = Math.floor((B - 122.1) / 365.25);\n const D = Math.floor(365.25 * C);\n const E = Math.floor((B - D) / 30.6001);\n\n const dayOnMonth = B - D - Math.floor(30.6001 * E) + F;\n const month = E < 14 ? E - 1 : E - 13;\n const year = month > 2 ? C - 4716 : C - 4715;\n const hour = (dayOnMonth - Math.floor(dayOnMonth)) * 24;\n const min = (hour - Math.floor(hour)) * 60;\n const sec = (min - Math.floor(min)) * 60;\n\n return {\n year: Math.floor(year),\n month: Math.floor(month),\n day: Math.floor(dayOnMonth),\n hour: Math.floor(hour),\n min: Math.floor(min),\n sec: Math.floor(sec),\n };\n}\n\nexport function julianDay2julianDay0(jd: number): number {\n return Math.floor(jd + 0.5) - 0.5;\n}\n\nexport function julianDay2ModifiedJulianDay(jd: number): number {\n return jd - 2400000.5;\n}\n\nexport function julianDay2julianCenturiesJ2000(jd: number): number {\n return (jd - 2451545.0) / 36525.0;\n}\n\nexport function julianCenturiesJ20002julianDay(T: number): number {\n return T * 36525.0 + 2451545.0;\n}\n\nexport function julianDay2julianMillenniaJ2000(jd: number): number {\n const T = julianDay2julianCenturiesJ2000(jd);\n\n return T / 10;\n}\n\nexport function julianMillenniaJ20002julianDay(t: number): number {\n const T = t * 10;\n\n return julianCenturiesJ20002julianDay(T);\n}\n\nexport function dayOfYear2time(year: number, dayOfYear: number): Time {\n // Meeus 7\n const K = isLeapYear(year) ? 1 : 2;\n const month = dayOfYear < 32 ? 1 : Math.floor((9 * (K + dayOfYear)) / 275 + 0.98);\n const day = Math.floor(dayOfYear - Math.floor((275 * month) / 9) + K * Math.floor((month + 9) / 12) + 30);\n\n const hourFloat = 24 * (dayOfYear - Math.floor(dayOfYear));\n const hour = Math.floor(hourFloat);\n const minFloat = 60 * (hourFloat - hour);\n const min = Math.floor(minFloat);\n const sec = round(60 * (minFloat - min));\n\n return {year, month, day, hour, min, sec};\n}\n\nexport function getDecimalYear(time: Time): number {\n const daysInYear = isLeapYear(time.year) ? 366 : 365;\n const dayOfYear = getDayOfYear(time) - 1 + time.hour / 24 + time.min / 1440 + time.sec / 86400;\n\n return time.year + dayOfYear / daysInYear;\n}\n\nexport function getDayOfYear(time: Time): number {\n const K = isLeapYear(time.year) ? 1 : 2;\n const M = time.month;\n const D = time.day;\n\n // Meeus 7.f\n return Math.floor((275 * M) / 9) - K * Math.floor((M + 9) / 12) + D - 30;\n}\n\nexport function getDayOfWeek(time: Time): number {\n const jd = time2julianDay(time);\n\n // Meeus 7.e\n return Math.floor((jd + 1.5) % 7);\n}\n\nexport function isLeapYear(year: number): boolean {\n if (year / 4 !== Math.floor(year / 4)) {\n return false;\n } else if (year / 100 !== Math.floor(year / 100)) {\n return true;\n } else if (year / 400 !== Math.floor(year / 400)) {\n return false;\n } else {\n return true;\n }\n}\n\nexport function shortYear2longYear(shortYearString: string): number {\n const currentDate = new Date(Date.now());\n const currentYear = currentDate.getFullYear();\n const currentYearStr = currentYear.toString();\n\n const currentYearFirstDigitsStr = currentYearStr.substr(0, currentYearStr.length - 2);\n const currentYearFirstDigits = parseInt(currentYearFirstDigitsStr, 10);\n\n const year1Str = currentYearFirstDigits + shortYearString;\n const year1 = parseInt(year1Str, 10);\n const year2Str = (currentYearFirstDigits - 1).toString() + shortYearString;\n const year2 = parseInt(year2Str, 10);\n\n return year1 <= currentYear ? year1 : year2;\n}\n","import {DEG} from '@app/constants/math';\nimport {normalizeAngle} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport {julianCenturiesJ20002julianDay} from '@package/time/utils/dateTime';\n\nexport function getGreenwichMeanSiderealTime(T: number): number {\n const jd = julianCenturiesJ20002julianDay(T);\n\n // Meeus 12.4\n const GMST = 280.46061837 + 360.98564736629 * (jd - 2451545) + 0.000387933 * T ** 2 + T ** 3 / 38710000;\n\n return normalizeAngle(GMST);\n}\n\nexport function getGreenwichApparentSiderealTime(T: number): number {\n const GMST = getGreenwichMeanSiderealTime(T);\n const p = earth.getNutationInLongitude(T);\n const e = earth.getTrueObliquityOfEcliptic(T);\n const eRad = e * DEG;\n\n // Meeus 12\n return GMST + p * Math.cos(eRad);\n}\n\nexport function getLocalMeanSiderealTime(T: number, lon: number): number {\n const GMST = getGreenwichMeanSiderealTime(T);\n\n const LMST = GMST + lon;\n\n return normalizeAngle(LMST);\n}\n\nexport function getLocalApparentSiderealTime(T: number, lon: number): number {\n const GAST = getGreenwichApparentSiderealTime(T);\n\n // Meeus 12\n return GAST + lon;\n}\n\nexport function getLocalHourAngle(T: number, lon: number, rightAscension: number): number {\n const LAST = getLocalApparentSiderealTime(T, lon);\n\n return normalizeAngle(LAST - rightAscension);\n}\n","import {EARTH_AXIS_RATIO, EARTH_EQUATORIAL_RADIUS_METERS} from '@app/constants/earth';\nimport {DEG, RAD} from '@app/constants/math';\nimport type {Location} from '@app/types/LocationTypes';\nimport {normalizeAngle, sec2deg} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport {correctPrecessionForEclipticCoordinates} from '@app/utils/precession';\nimport {getLocalApparentSiderealTime, getLocalHourAngle} from '@app/utils/siderealTime';\nimport {julianCenturiesJ20002julianDay} from '@package/time/utils/dateTime';\nimport type {\n EclipticSphericalCoordinates,\n EquatorialSphericalCoordinates,\n LocalHorizontalCoordinates,\n RectangularCoordinates,\n} from '../types/CoordinateTypes';\n\nexport function rectangular2spherical(coords: RectangularCoordinates): EclipticSphericalCoordinates {\n const {x, y, z} = coords;\n\n // Meeus 33.2\n const lonRad = Math.atan2(y, x);\n const lon = normalizeAngle(lonRad * RAD);\n\n const latRad = Math.atan(z / Math.sqrt(x ** 2 + y ** 2));\n const lat = latRad * RAD;\n\n const radiusVector = Math.sqrt(x ** 2 + y ** 2 + z ** 2);\n\n return {lon, lat, radiusVector};\n}\n\nexport function spherical2rectangular(coords: EclipticSphericalCoordinates): RectangularCoordinates {\n const {lon, lat, radiusVector} = coords;\n\n const lonRad = lon * DEG;\n const latRad = lat * DEG;\n\n const x = radiusVector * Math.cos(latRad) * Math.cos(lonRad);\n const y = radiusVector * Math.cos(latRad) * Math.sin(lonRad);\n const z = radiusVector * Math.sin(latRad);\n\n return {x, y, z};\n}\n\nexport function equatorialSpherical2topocentricSpherical(\n coords: EquatorialSphericalCoordinates,\n location: Location,\n T: number,\n): EquatorialSphericalCoordinates {\n const {rightAscension, declination, radiusVector} = coords;\n let {lat, lon, elevation} = location;\n\n const dRad = declination * DEG;\n\n elevation = elevation || 0.0;\n const rhoSinLat = getRhoSinLat(lat, elevation);\n const rhoCosLat = getRhoCosLat(lat, elevation);\n\n const pi = getEquatorialParallax(radiusVector);\n const piRad = pi * DEG;\n\n const LAST = getLocalApparentSiderealTime(T, lon);\n const H = getLocalHourAngle(T, lon, rightAscension);\n const HRad = H * DEG;\n\n // Meeus 40.6\n const A = Math.cos(dRad) * Math.sin(HRad);\n const B = Math.cos(dRad) * Math.cos(HRad) - rhoCosLat * Math.sin(piRad);\n const C = Math.sin(dRad) - rhoSinLat * Math.sin(piRad);\n\n // Meeus 40.7\n const q = Math.sqrt(A * A + B * B + C * C);\n\n const HTopo = Math.atan2(A, B) * RAD;\n const dTopoRad = Math.asin(C / q);\n\n return {\n rightAscension: normalizeAngle(LAST - HTopo),\n declination: dTopoRad * RAD,\n radiusVector: q * radiusVector,\n };\n}\n\nexport function equatorialSpherical2topocentricHorizontal(\n coords: EquatorialSphericalCoordinates,\n location: Location,\n T: number,\n): LocalHorizontalCoordinates {\n const {rightAscension, declination} = coords;\n const {lat, lon} = location;\n\n const topoCoords = equatorialSpherical2topocentricSpherical(coords, location, T);\n const H = getLocalHourAngle(T, lon, rightAscension);\n\n return equatorialSpherical2topocentricHorizontalByLocalHourAngle(H, declination, lat, topoCoords.radiusVector);\n}\n\nexport function equatorialSpherical2topocentricHorizontalByLocalHourAngle(\n localHourAngle: number,\n declination: number,\n lat: number,\n radiusVector = 0,\n): LocalHorizontalCoordinates {\n const HRad = localHourAngle * DEG;\n const dRad = declination * DEG;\n const latRad = lat * DEG;\n\n // Meeus 13.5\n const ARad = Math.atan2(Math.sin(HRad), Math.cos(HRad) * Math.sin(latRad) - Math.tan(dRad) * Math.cos(latRad));\n\n // Meeus 13.6\n const hRad = Math.asin(Math.sin(latRad) * Math.sin(dRad) + Math.cos(latRad) * Math.cos(dRad) * Math.cos(HRad));\n\n return {\n azimuth: normalizeAngle(ARad * RAD + 180),\n altitude: hRad * RAD,\n radiusVector: radiusVector,\n };\n}\n\nexport function eclipticSpherical2equatorialSpherical(\n coords: EclipticSphericalCoordinates,\n T: number,\n normalize = true,\n): EquatorialSphericalCoordinates {\n const {lon, lat, radiusVector} = coords;\n\n const eps = earth.getTrueObliquityOfEcliptic(T);\n const epsRad = eps * DEG;\n const lonRad = lon * DEG;\n const latRad = lat * DEG;\n\n // Meeus 13.3\n const n = Math.sin(lonRad) * Math.cos(epsRad) - (Math.sin(latRad) / Math.cos(latRad)) * Math.sin(epsRad);\n const d = Math.cos(lonRad);\n const rightAscensionRad = Math.atan2(n, d);\n const rightAscension = normalize ? normalizeAngle(rightAscensionRad * RAD) : rightAscensionRad * RAD;\n\n // Meeus 13.4\n const declinationRad = Math.asin(\n Math.sin(latRad) * Math.cos(epsRad) + Math.cos(latRad) * Math.sin(epsRad) * Math.sin(lonRad),\n );\n const declination = declinationRad * RAD;\n\n return {rightAscension, declination, radiusVector};\n}\n\nexport function equatorialSpherical2eclipticSpherical(\n coords: EquatorialSphericalCoordinates,\n T: number,\n): EclipticSphericalCoordinates {\n const {rightAscension, declination, radiusVector} = coords;\n\n const eps = earth.getTrueObliquityOfEcliptic(T);\n const epsRad = eps * DEG;\n const rightAscensionRad = rightAscension * DEG;\n const declinationRad = declination * DEG;\n\n // Meeus 13.1\n const n = Math.sin(rightAscensionRad) * Math.cos(epsRad) + Math.tan(declinationRad) * Math.sin(epsRad);\n const d = Math.cos(rightAscensionRad);\n const lonRad = Math.atan2(n, d);\n const lon = normalizeAngle(lonRad * RAD);\n\n // Meeus 13.2\n const latRad = Math.asin(\n Math.sin(declinationRad) * Math.cos(epsRad)\n - Math.cos(declinationRad) * Math.sin(epsRad) * Math.sin(rightAscensionRad),\n );\n const lat = latRad * RAD;\n\n return {lon, lat, radiusVector};\n}\n\nexport function rectangularHeliocentric2rectangularGeocentric(\n heliocentricCoords: RectangularCoordinates,\n heliocentricCoordsEarth: RectangularCoordinates,\n): RectangularCoordinates {\n return {\n x: heliocentricCoords.x - heliocentricCoordsEarth.x,\n y: heliocentricCoords.y - heliocentricCoordsEarth.y,\n z: heliocentricCoords.z - heliocentricCoordsEarth.z,\n };\n}\n\nexport function rectangularGeocentric2rectangularHeliocentric(\n geocentricCoords: RectangularCoordinates,\n heliocentricCoordsEarth: RectangularCoordinates,\n): RectangularCoordinates {\n return {\n x: geocentricCoords.x + heliocentricCoordsEarth.x,\n y: geocentricCoords.y + heliocentricCoordsEarth.y,\n z: geocentricCoords.z + heliocentricCoordsEarth.z,\n };\n}\n\nexport function earthEclipticSpherical2sunEclipticSpherical(\n coordsEarth: EclipticSphericalCoordinates,\n): EclipticSphericalCoordinates {\n const {lon, lat, radiusVector} = coordsEarth;\n\n return {\n lon: normalizeAngle(lon + 180),\n lat: -1 * lat,\n radiusVector: radiusVector,\n };\n}\n\n/**\n * @deprecated Use correctPrecessionForEclipticCoordinates()\n */\nexport function eclipticJ20002eclipticDate(\n lon: number,\n lat: number,\n radiusVector: number,\n T: number,\n): EclipticSphericalCoordinates {\n const jd = julianCenturiesJ20002julianDay(T);\n\n return correctPrecessionForEclipticCoordinates({lon, lat, radiusVector}, jd);\n}\n\nexport function getEquatorialParallax(d: number): number {\n // Meeus 40.1\n const angle = sec2deg(8.794) * DEG;\n const piRad = Math.asin(Math.sin(angle) / d);\n\n return piRad * RAD;\n}\n\nexport function getRhoSinLat(lat: number, elevation: number): number {\n const latRad = lat * DEG;\n\n // Meeus 11\n const uRad = Math.atan(EARTH_AXIS_RATIO * Math.tan(latRad));\n\n return EARTH_AXIS_RATIO * Math.sin(uRad) + (elevation / EARTH_EQUATORIAL_RADIUS_METERS) * Math.sin(latRad);\n}\n\nexport function getRhoCosLat(lat: number, elevation: number): number {\n const latRad = lat * DEG;\n\n // Meeus 11\n const uRad = Math.atan(EARTH_AXIS_RATIO * Math.tan(latRad));\n\n return Math.cos(uRad) + (elevation / EARTH_EQUATORIAL_RADIUS_METERS) * Math.cos(latRad);\n}\n","import {RAD} from '@app/constants/math';\n\nexport function calculateVSOP87Angle(terms: Array<Array<Array<number>>>, t: number): number {\n const result = calculateVSOP87(terms, t);\n\n return result * RAD;\n}\n\nexport function calculateVSOP87(terms: Array<Array<Array<number>>>, t: number): number {\n let result = 0.0;\n\n terms.forEach((term: Array<Array<number>>, key: number) => {\n result += sumUpTerm(term, t) * t ** key;\n });\n\n return result;\n}\n\nfunction sumUpTerm(terms: Array<Array<number>>, t: number): number {\n let result = 0.0;\n\n terms.forEach((term: Array<number>) => {\n const a = term[0] || 0;\n const b = term[1] || 0;\n const c = term[2] || 0;\n\n result += a * Math.cos(b + c * t);\n });\n\n return result;\n}\n","import {DEG} from '@app/constants/math';\nimport {sec2deg} from '@app/utils/angle';\nimport * as earth from '@app/utils/earth';\nimport * as sun from '@app/utils/sun';\nimport type {EclipticSphericalCoordinates} from '../types/CoordinateTypes';\n\nexport function getLightTimeCorrectedJulianDay(jd: number, d: number): number {\n // Meeus 33.3\n const theta = 0.0057755183 * d;\n\n return jd - theta;\n}\n\nexport function correctEffectOfNutation(coords: EclipticSphericalCoordinates, T: number): EclipticSphericalCoordinates {\n const phi = earth.getNutationInLongitude(T);\n\n return {\n lon: coords.lon + phi,\n lat: coords.lat,\n radiusVector: coords.radiusVector,\n };\n}\n\nexport function correctEffectOfAberration(\n coords: EclipticSphericalCoordinates,\n T: number,\n): EclipticSphericalCoordinates {\n // TODO Better formula with Ron-Vondrak expression\n const lonSun = sun.getTrueLongitude(T);\n const e = earth.getEccentricity(T);\n const pi = earth.getLongitudeOfPerihelionOfOrbit(T);\n const k = sec2deg(20.49552);\n\n const lonRad = coords.lon * DEG;\n const latRad = coords.lat * DEG;\n const lonSunRad = lonSun * DEG;\n const piRad = pi * DEG;\n\n const dLon = (-1 * k * Math.cos(lonSunRad - lonRad) + e * k * Math.cos(piRad - lonRad)) / Math.cos(latRad);\n const dLat = -1 * k * Math.sin(latRad) * (Math.sin(lonSunRad - lonRad) - e * Math.sin(piRad - lonRad));\n\n return {\n lon: coords.lon + dLon,\n lat: coords.lat + dLat,\n radiusVector: coords.radiusVector,\n };\n}\n\nexport function correctEffectOfRefraction(altitude: number): number {\n if (altitude < -5) {\n return altitude;\n }\n\n // Meeus 16.4\n const R = 1.02 / Math.tan((altitude + 10.3 / (altitude + 5.11)) * DEG);\n\n return altitude + R / 60;\n}\n","export function getDeltaT(year: number, month = 0): number {\n // https://eclipse.gsfc.nasa.gov/SEcat5/deltatpoly.html\n const y = year + (month - 0.5) / 12;\n\n let t: number;\n let deltaT = 0;\n\n if (year < -500) {\n t = (y - 1820) / 100;\n deltaT = -20 + 32 * t ** 2;\n }\n\n if (year >= -500 && year < 500) {\n t = y / 100;\n deltaT =\n 10583.6\n - 1014.41 * t\n + 33.78311 * t ** 2\n - 5.952053 * t ** 3\n - 0.1798452 * t ** 4\n + 0.022174192 * t ** 5\n + 0.0090316521 * t ** 6;\n }\n\n if (year >= 500 && year < 1600) {\n t = (y - 1000) / 100;\n deltaT =\n 1574.2\n - 556.01 * t\n + 71.23472 * t ** 2\n + 0.319781 * t ** 3\n - 0.8503463 * t ** 4\n - 0.005050998 * t ** 5\n + 0.0083572073 * t ** 6;\n }\n\n if (year >= 1600 && year < 1700) {\n t = y - 1600;\n deltaT = 120 - 0.9808 * t - 0.01532 * t ** 2 + t ** 3 / 7129;\n }\n\n if (year >= 1700 && year < 1800) {\n t = y - 1700;\n deltaT = 8.83 + 0.1603 * t - 0.0059285 * t ** 2 + 0.00013336 * t ** 3 - t ** 4 / 1174000;\n }\n\n if (year >= 1800 && year < 1860) {\n t = y - 1800;\n deltaT =\n 13.72\n - 0.332447 * t\n + 0.0068612 * t ** 2\n + 0.0041116 * t ** 3\n - 0.00037436 * t ** 4\n + 0.0000121272 * t ** 5\n - 0.0000001699 * t ** 6\n + 0.000000000875 * t ** 7;\n }\n\n if (year >= 1860 && year < 1900) {\n t = y - 1860;\n\n deltaT = 7.62 + 0.5737 * t - 0.251754 * t ** 2 + 0.01680668 * t ** 3 - 0.0004473624 * t ** 4 + t ** 5 / 233174;\n }\n\n if (year >= 1900 && year < 1920) {\n t = y - 1900;\n deltaT = -2.79 + 1.494119 * t - 0.0598939 * t ** 2 + 0.0061966 * t ** 3 - 0.000197 * t ** 4;\n }\n\n if (year >= 1920 && year < 1941) {\n t = y - 1920;\n deltaT = 21.2 + 0.84493 * t - 0.0761 * t ** 2 + 0.0020936 * t ** 3;\n }\n\n if (year >= 1941 && year < 1961) {\n t = y - 1950;\n deltaT = 29.07 + 0.407 * t - t ** 2 / 233 + t ** 3 / 2547;\n }\n\n if (year >= 1961 && year < 1986) {\n t = y - 1975;\n deltaT = 45.45 + 1.067 * t - t ** 2 / 260 - t ** 3 / 718;\n }\n\n if (year >= 1986 && year < 2005) {\n t = y - 2000;\n deltaT =\n 63.86 + 0.3345 * t - 0.060374 * t ** 2 + 0.0017275 * t ** 3 + 0.000651814 * t ** 4 + 0.00002373599 * t ** 5;\n }\n\n if (year >= 2005 && year < 2050) {\n t = y - 2000;\n deltaT = 62.92 + 0.32217 * t + 0.005589 * t ** 2;\n }\n\n if (year >= 2050) {\n t = (y - 1820) / 100;\n deltaT = -20 + 32 * t ** 2;\n }\n\n return deltaT;\n}\n","import type {LatLon} from '@app/types/LocationTypes';\nimport {pad} from '@app/utils/math';\nimport {\n getGreenwichApparentSiderealTime,\n getGreenwichMeanSiderealTime,\n getLocalApparentSiderealTime,\n getLocalMeanSiderealTime,\n} from '@app/utils/siderealTime';\nimport type {Time} from '../types/TimeTypes';\nimport {\n dayOfYear2time,\n getDayOfWeek,\n getDayOfYear,\n getDecimalYear,\n isLeapYear,\n julianCenturiesJ20002julianDay,\n julianDay2julianCenturiesJ2000,\n julianDay2julianDay0,\n julianDay2julianMillenniaJ2000,\n julianDay2time,\n time2julianDay,\n} from '../utils/dateTime';\nimport {getDeltaT} from '../utils/deltaT';\n\nexport default class TimeOfInterest {\n public readonly jd: number = 0.0;\n\n public readonly T: number = 0.0;\n\n public constructor(public readonly time: Time) {\n this.jd = time2julianDay(time);\n this.T = julianDay2julianCenturiesJ2000(this.jd);\n }\n\n public static fromCurrentTime(): TimeOfInterest {\n const date = new Date(Date.now());\n\n return new TimeOfInterest({\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n hour: date.getUTCHours(),\n min: date.getUTCMinutes(),\n sec: date.getUTCSeconds(),\n });\n }\n\n public static fromTime(year: number, month: number, day: number, hour = 0, min = 0, sec = 0): TimeOfInterest {\n return new TimeOfInterest({year, month, day, hour, min, sec});\n }\n\n public static fromDate(date: Date): TimeOfInterest {\n return new TimeOfInterest({\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n hour: date.getUTCHours(),\n min: date.getUTCMinutes(),\n sec: date.getUTCSeconds(),\n });\n }\n\n public static fromYearOfDay(year: number, dayOfYear: number): TimeOfInterest {\n const time = dayOfYear2time(year, dayOfYear);\n\n return new TimeOfInterest(time);\n }\n\n public static fromJulianDay(jd: number): TimeOfInterest {\n const time = julianDay2time(jd);\n\n return new TimeOfInterest(time);\n }\n\n public static fromJulianCenturiesJ2000(T: number): TimeOfInterest {\n const jd = julianCenturiesJ20002julianDay(T);\n const time = julianDay2time(jd);\n\n return new TimeOfInterest(time);\n }\n\n public getTime(): Time {\n return this.time;\n }\n\n public getString(): string {\n const {year, month, day, hour, min, sec} = this.time;\n\n return `${year}-${pad(month, 2)}-${pad(day, 2)} ${pad(hour, 2)}:${pad(min, 2)}:${pad(sec, 2)}`;\n }\n\n public getDate(): Date {\n const {year, month, day, hour, min, sec} = this.time;\n\n return new Date(Date.UTC(year, month - 1, day, hour, min, sec));\n }\n\n public getDecimalYear(): number {\n return getDecimalYear(this.time);\n }\n\n public getDayOfYear(): number {\n return getDayOfYear(this.time);\n }\n\n public getDayOfWeek(): number {\n return getDayOfWeek(this.time);\n }\n\n public isLeapYear(): boolean {\n return isLeapYear(this.time.year);\n }\n\n public getJulianDay(): number {\n return this.jd;\n }\n\n public getJulianDay0(): number {\n return julianDay2julianDay0(this.jd);\n }\n\n public getJulianCenturiesJ2000(): number {\n return this.T;\n }\n\n public getJulianMillenniaJ2000(): number {\n return julianDay2julianMillenniaJ2000(this.jd);\n }\n\n public getGreenwichMeanSiderealTime(): number {\n return getGreenwichMeanSiderealTime(this.T);\n }\n\n public getGreenwichApparentSiderealTime(): number {\n return getGreenwichApparentSiderealTime(this.T);\n }\n\n public getLocalMeanSiderealTime(location: LatLon): number {\n return getLocalMeanSiderealTime(this.T, location.lon);\n }\n\n public getLocalApparentSiderealTime(location: LatLon): number {\n return getLocalApparentSiderealTime(this.T, location.lon);\n }\n\n public getDeltaT(): number {\n const {year, month} = this.time;\n\n return getDeltaT(year, month);\n }\n}\n","import {LIGHT_SPEED_KM_PER_SEC} from '@app/constants/units';\nimport type {\n EclipticSphericalCoordinates,\n EquatorialSphericalCoordinates,\n LocalHorizontalCoordinates,\n RectangularCoordinates,\n} from '@app/types/CoordinateTypes';\nimport type {Location} from '@app/types/LocationTypes';\nimport {correctEffectOfRefraction} from '@app/utils/apparentPositionCorrections';\nimport {\n eclipticSpherical2equatorialSpherical,\n equatorialSpherical2topocentricHorizontal,\n equatorialSpherical2topocentricSpherical,\n spherical2rectangular,\n} from '@app/utils/coordinateTransformation';\nimport {au2km} from '@app/utils/distance';\nimport TimeOfInterest from '@package/time/models/TimeOfInterest';\nimport type {AstronomicalObjectInterface} from './AstronomicalObjectInterface';\n\nexport default abstract class AstronomicalObject implements AstronomicalObjectInterface {\n protected readonly jd: number = 0.0;\n\n protected readonly jd0: number = 0.0;\n\n protected readonly T: number = 0.0;\n\n protected readonly t: number = 0.0;\n\n protected constructor(\n protected readonly toi: TimeOfInterest = TimeOfInterest.fromCurrentTime(),\n public readonly name = 'astronomical object',\n ) {\n this.jd = toi.getJulianDay();\n this.jd0 = toi.getJulianDay0();\n this.T = toi.getJulianCenturiesJ2000();\n this.t = toi.getJulianMillenniaJ2000();\n }\n\n public getTimeOfInterest(): TimeOfInterest {\n return this.toi;\n }\n\n public abstract getHeliocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates;\n\n public abstract getHeliocentricEclipticRectangularDateCoordinates(): RectangularCoordinates;\n\n public abstract getHeliocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates;\n\n public abstract getHeliocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates;\n\n public abstract getGeocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates;\n\n public abstract getGeocentricEclipticRectangularDateCoordinates(): RectangularCoordinates;\n\n public abstract getGeocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates;\n\n public abstract getGeocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates;\n\n public getGeocentricEquatorialSphericalJ2000Coordinates(): EquatorialSphericalCoordinates {\n const coords = this.getGeocentricEclipticSphericalJ2000Coordinates();\n\n return eclipticSpherical2equatorialSpherical(coords, this.T);\n }\n\n public getGeocentricEquatorialSphericalDateCoordinates(): EquatorialSphericalCoordinates {\n const coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n return eclipticSpherical2equatorialSpherical(coords, this.T);\n }\n\n public getApparentGeocentricEclipticRectangularCoordinates(): RectangularCoordinates {\n const coords = this.getApparentGeocentricEclipticSphericalCoordinates();\n\n return spherical2rectangular(coords);\n }\n\n public abstract getApparentGeocentricEclipticSphericalCoordinates(): EclipticSphericalCoordinates;\n\n public getApparentGeocentricEquatorialSphericalCoordinates(): EquatorialSphericalCoordinates {\n const coords = this.getApparentGeocentricEclipticSphericalCoordinates();\n\n return eclipticSpherical2equatorialSpherical(coords, this.T);\n }\n\n public getTopocentricEquatorialSphericalCoordinates(location: Location): EquatorialSphericalCoordinates {\n const coords = this.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return equatorialSpherical2topocentricSpherical(coords, location, this.T);\n }\n\n public getTopocentricHorizontalCoordinates(location: Location): LocalHorizontalCoordinates {\n const coords = this.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return equatorialSpherical2topocentricHorizontal(coords, location, this.T);\n }\n\n public getApparentTopocentricHorizontalCoordinates(location: Location): LocalHorizontalCoordinates {\n const {azimuth, altitude, radiusVector} = this.getTopocentricHorizontalCoordinates(location);\n\n return {\n azimuth: azimuth,\n altitude: correctEffectOfRefraction(altitude),\n radiusVector: radiusVector,\n };\n }\n\n public getDistanceToEarth(): number {\n const coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n return au2km(coords.radiusVector);\n }\n\n public getApparentDistanceToEarth(): number {\n const coords = this.getApparentGeocentricEclipticSphericalCoordinates();\n\n return au2km(coords.radiusVector);\n }\n\n public getTopocentricDistanceToEarth(location: Location): number {\n const coords = this.getTopocentricEquatorialSphericalCoordinates(location);\n\n return au2km(coords.radiusVector);\n }\n\n public getLightTime(): number {\n const {radiusVector} = this.getGeocentricEclipticSphericalDateCoordinates();\n\n return au2km(radiusVector) / LIGHT_SPEED_KM_PER_SEC;\n }\n\n // public getConjunctionInRightAscensionTo(\n // astronomicalObjectConstructor: AstronomicalObjectConstructor,\n // ): Conjunction {\n // return getConjunctionInRightAscension(\n // this.constructor as AstronomicalObjectConstructor,\n // astronomicalObjectConstructor,\n // this.jd0,\n // );\n // }\n //\n // public getConjunctionInLongitudeTo(\n // astronomicalObjectConstructor: AstronomicalObjectConstructor,\n // ): Conjunction {\n // return getConjunctionInLongitude(\n // this.constructor as AstronomicalObjectConstructor,\n // astronomicalObjectConstructor,\n // this.jd0,\n // );\n // }\n}\n","import * as vsop87DateDefault from '@app/resources/vsop87/vsop87EarthSphericalDateReduced';\nimport * as vsop87J2000Default from '@app/resources/vsop87/vsop87EarthSphericalJ2000Reduced';\nimport type {EclipticSphericalCoordinates, RectangularCoordinates} from '@app/types/CoordinateTypes';\nimport type {Vsop87} from '@app/types/Vsop87Types';\nimport {normalizeAngle} from '@app/utils/angle';\nimport {spherical2rectangular} from '@app/utils/coordinateTransformation';\nimport * as earth from '@app/utils/earth';\nimport {calculateVSOP87, calculateVSOP87Angle} from '@app/utils/vsop87';\nimport AstronomicalObject from '@package/core/models/models/AstronomicalObject';\nimport type TimeOfInterest from '@package/time/models/TimeOfInterest';\n\nexport default class Earth extends AstronomicalObject {\n public constructor(\n toi?: TimeOfInterest,\n private readonly vsop87Date: Vsop87 = vsop87DateDefault,\n private readonly vsop87J2000: Vsop87 = vsop87J2000Default,\n ) {\n super(toi, 'earth');\n }\n\n public static create(toi?: TimeOfInterest): Earth {\n return new Earth(toi);\n }\n\n public getHeliocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n return spherical2rectangular(this.getHeliocentricEclipticSphericalJ2000Coordinates());\n }\n\n public getHeliocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n return spherical2rectangular(this.getHeliocentricEclipticSphericalDateCoordinates());\n }\n\n public getHeliocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n return {\n lon: normalizeAngle(calculateVSOP87Angle(this.vsop87J2000.VSOP87_X, this.t)),\n lat: calculateVSOP87Angle(this.vsop87J2000.VSOP87_Y, this.t),\n radiusVector: calculateVSOP87(this.vsop87J2000.VSOP87_Z, this.t),\n };\n }\n\n public getHeliocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n return {\n lon: normalizeAngle(calculateVSOP87Angle(this.vsop87Date.VSOP87_X, this.t)),\n lat: calculateVSOP87Angle(this.vsop87Date.VSOP87_Y, this.t),\n radiusVector: calculateVSOP87(this.vsop87Date.VSOP87_Z, this.t),\n };\n }\n\n public getGeocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n return {x: 0, y: 0, z: 0};\n }\n\n public getGeocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n return {x: 0, y: 0, z: 0};\n }\n\n public getGeocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n return {lon: 0, lat: 0, radiusVector: 0};\n }\n\n public getGeocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n return {lon: 0, lat: 0, radiusVector: 0};\n }\n\n public getApparentGeocentricEclipticSphericalCoordinates(): EclipticSphericalCoordinates {\n return {lon: 0, lat: 0, radiusVector: 0};\n }\n\n public getNutationInLongitude(): number {\n return earth.getNutationInLongitude(this.T);\n }\n\n public getNutationInObliquity(): number {\n return earth.getNutationInObliquity(this.T);\n }\n\n public getMeanObliquityOfEcliptic(): number {\n return earth.getMeanObliquityOfEcliptic(this.T);\n }\n\n public getTrueObliquityOfEcliptic(): number {\n return earth.getTrueObliquityOfEcliptic(this.T);\n }\n}\n","import {DEG, RAD} from '@app/constants/math';\nimport type {EquatorialSphericalCoordinates} from '@app/types/CoordinateTypes';\nimport {normalizeAngle} from '@app/utils/angle';\n\nexport function getElongation(\n equCoordsObj: EquatorialSphericalCoordinates,\n equCoordsSun: EquatorialSphericalCoordinates,\n): number {\n const raObjRad = equCoordsObj.rightAscension * DEG;\n const dObjRad = equCoordsObj.declination * DEG;\n\n const raSunRad = equCoordsSun.rightAscension * DEG;\n const dSunRad = equCoordsSun.declination * DEG;\n\n // Meeus 48.2\n const phiRad = Math.acos(\n Math.sin(dSunRad) * Math.sin(dObjRad) + Math.cos(dSunRad) * Math.cos(dObjRad) * Math.cos(raSunRad - raObjRad),\n );\n\n return phiRad * RAD;\n}\n\nexport function getPhaseAngle(\n equCoordsObj: EquatorialSphericalCoordinates,\n equCoordsSun: EquatorialSphericalCoordinates,\n): number {\n const distObj = equCoordsObj.radiusVector;\n const distSun = equCoordsSun.radiusVector;\n\n const phi = getElongation(equCoordsObj, equCoordsSun);\n const phiRad = phi * DEG;\n\n // Meeus 48.3\n const i = Math.atan2(distSun * Math.sin(phiRad), distObj - distSun * Math.cos(phiRad));\n\n return i * RAD;\n}\n\nexport function getIlluminatedFraction(phaseAngle: number): number {\n const iRad = phaseAngle * DEG;\n\n // Meeus 48.1\n return (1 + Math.cos(iRad)) / 2;\n}\n\nexport function getPositionAngleOfBrightLimb(\n equCoordsObj: EquatorialSphericalCoordinates,\n equCoordsSun: EquatorialSphericalCoordinates,\n): number {\n const raObjRad = equCoordsObj.rightAscension * DEG;\n const dObjRad = equCoordsObj.declination * DEG;\n const raSunRad = equCoordsSun.rightAscension * DEG;\n const dSunRad = equCoordsSun.declination * DEG;\n\n const numerator = Math.cos(dSunRad) * Math.sin(raSunRad - raObjRad);\n const denominator =\n Math.sin(dSunRad) * Math.cos(dObjRad) - Math.cos(dSunRad) * Math.sin(dObjRad) * Math.cos(raSunRad - raObjRad);\n\n const chiRad = Math.atan2(numerator, denominator);\n\n return normalizeAngle(chiRad * RAD);\n}\n\nexport function isWaxing(chi: number): boolean {\n return chi >= 180;\n}\n\nexport function getAngularDiameter(distance: number, trueDiameter: number): number {\n const delta = 2 * Math.atan2(trueDiameter, 2 * distance);\n\n return delta * RAD;\n}\n\nexport function getAngularSeparation(\n coords1: EquatorialSphericalCoordinates,\n coords2: EquatorialSphericalCoordinates,\n): number {\n const raRad1 = coords1.rightAscension * DEG;\n const dRad1 = coords1.declination * DEG;\n const raRad2 = coords2.rightAscension * DEG;\n const dRad2 = coords2.declination * DEG;\n\n const dRad = Math.acos(\n Math.sin(dRad1) * Math.sin(dRad2) + Math.cos(dRad1) * Math.cos(dRad2) * Math.cos(raRad1 - raRad2),\n );\n\n return dRad * RAD;\n}\n","import type {EclipticSphericalCoordinates, RectangularCoordinates} from '@app/types/CoordinateTypes';\nimport type {Location} from '@app/types/LocationTypes';\nimport {correctEffectOfAberration, correctEffectOfNutation} from '@app/utils/apparentPositionCorrections';\nimport {earthEclipticSpherical2sunEclipticSpherical, spherical2rectangular} from '@app/utils/coordinateTransformation';\nimport {getAngularDiameter} from '@app/utils/observation';\nimport AstronomicalObject from '@package/core/models/models/AstronomicalObject';\nimport Earth from '@package/earth/models/Earth';\nimport {SUN_DIAMETER_KM} from '@package/sun/constants/diameters';\nimport type TimeOfInterest from '@package/time/models/TimeOfInterest';\n\nexport default class Sun extends AstronomicalObject {\n public constructor(\n toi?: TimeOfInterest,\n private readonly earth: Earth = Earth.create(toi),\n ) {\n super(toi, 'sun');\n }\n\n public static create(toi?: TimeOfInterest): Sun {\n return new Sun(toi);\n }\n\n public getHeliocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n return {x: 0, y: 0, z: 0};\n }\n\n public getHeliocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n return {x: 0, y: 0, z: 0};\n }\n\n public getHeliocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n return {lon: 0, lat: 0, radiusVector: 0};\n }\n\n public getHeliocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n return {lon: 0, lat: 0, radiusVector: 0};\n }\n\n public getGeocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n return spherical2rectangular(this.getGeocentricEclipticSphericalJ2000Coordinates());\n }\n\n public getGeocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n return spherical2rectangular(this.getGeocentricEclipticSphericalDateCoordinates());\n }\n\n public getGeocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n return earthEclipticSpherical2sunEclipticSpherical(\n this.earth.getHeliocentricEclipticSphericalJ2000Coordinates(),\n );\n }\n\n public getGeocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n return earthEclipticSpherical2sunEclipticSpherical(\n this.earth.getHeliocentricEclipticSphericalDateCoordinates(),\n );\n }\n\n public getApparentGeocentricEclipticSphericalCoordinates(): EclipticSphericalCoordinates {\n let coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n coords = correctEffectOfAberration(coords, this.T);\n coords = correctEffectOfNutation(coords, this.T);\n\n return coords;\n }\n\n public getAngularDiameter(): number {\n return getAngularDiameter(this.getApparentDistanceToEarth(), SUN_DIAMETER_KM);\n }\n\n public getTopocentricAngularDiameter(location: Location): number {\n return getAngularDiameter(this.getTopocentricDistanceToEarth(location), SUN_DIAMETER_KM);\n }\n\n public getApparentMagnitude(): number {\n return -26.74;\n }\n\n public getTopocentricApparentMagnitude(): number {\n return -26.74;\n }\n}\n","import {au2km} from '@app/utils/distance';\n\nexport function getApparentMagnitudeMoon(\n distanceSun: number,\n distanceEarth: number,\n phaseAngle: number,\n isWaxing: boolean,\n): number {\n const signedPhaseAngle = isWaxing ? -1 * phaseAngle : phaseAngle;\n\n let V = 5 * (Math.log10(distanceSun) + Math.log10(au2km(distanceEarth) / 384400));\n\n // Numeric formula by. Dr. Elmar Schmidt (Arbeitskreis Meteore e.V.)\n\n // Area A\n if (phaseAngle >= 160) {\n V += -449.88 + 7.1112 * phaseAngle - 0.037714 * phaseAngle ** 2 + 0.000066667 * phaseAngle ** 3;\n }\n\n // Area B\n if (phaseAngle >= 40 && phaseAngle < 160) {\n V +=\n -12.07857\n + 0.002175199 * signedPhaseAngle\n + 0.0002859289 * signedPhaseAngle ** 2\n - 2.495124e-7 * signedPhaseAngle ** 3\n - 8.699235e-9 * signedPhaseAngle ** 4\n + 7.606291e-12 * signedPhaseAngle ** 5\n + 3.403311e-13 * signedPhaseAngle ** 6;\n }\n\n // Area C2\n if (signedPhaseAngle >= 0 && signedPhaseAngle < 40) {\n V += -12.861 + 0.037 * phaseAngle - 0.00012 * phaseAngle ** 2;\n }\n\n // Area C1\n if (signedPhaseAngle > -40 && signedPhaseAngle < 0) {\n V += -12.85 - 0.037 * signedPhaseAngle - 0.000235 * signedPhaseAngle ** 2;\n }\n\n return V;\n}\n","import {DEG} from '@app/constants/math';\nimport {\n MOON_PHASE_FIRST_QUARTER,\n MOON_PHASE_FULL_MOON,\n MOON_PHASE_LAST_QUARTER,\n MOON_PHASE_NEW_MOON,\n} from '@app/constants/moon';\nimport {round} from '@app/utils/math';\nimport TimeOfInterest from '@package/time/models/TimeOfInterest';\n\nexport function getTimeOfInterestOfUpcomingPhase(decimalYear: number, moonPhase: number): TimeOfInterest {\n const k = round((decimalYear - 2000) * 12.3685) + moonPhase;\n const T = k / 1236.85;\n\n const JDE = getJulianEphemerisDays(k, T);\n const corrections = getPeriodicTermCorrections(k, T, moonPhase);\n const wCorrections = getQuarterPhaseCorrections(k, T, moonPhase);\n const pCorrections = getPlanetaryCorrections(k, T);\n\n const jd = JDE + corrections + wCorrections + pCorrections;\n\n return TimeOfInterest.fromJulianDay(jd);\n}\n\nfunction getPeriodicTermCorrections(k: number, T: number, moonPhase: number): number {\n switch (moonPhase) {\n case MOON_PHASE_NEW_MOON:\n return getPeriodicTermCorrectionsForNewMoon(k, T);\n case MOON_PHASE_FULL_MOON:\n return getPeriodicTermCorrectionsForFullMoon(k, T);\n case MOON_PHASE_FIRST_QUARTER:\n case MOON_PHASE_LAST_QUARTER:\n return getPeriodicTermCorrectionsForQuarters(k, T);\n default:\n throw new Error(`Invalid moon phase: ${moonPhase}`);\n }\n}\n\nfunction getPeriodicTermCorrectionsForNewMoon(k: number, T: number): number {\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n const Msun = getMeanAnomalySun(k, T);\n const Mmoon = getMeanAnomalyMoon(k, T);\n const F = getArgumentOfLatitudeMoon(k, T);\n const omega = getLongitudeOfAscendingNodeMoon(k, T);\n\n const MsunRad = Msun * DEG;\n const MmoonRad = Mmoon * DEG;\n const FRad = F * DEG;\n const omegaRad = omega * DEG;\n\n return (\n -0.4072 * Math.sin(MmoonRad)\n + 0.17241 * E * Math.sin(MsunRad)\n + 0.01608 * Math.sin(2.0 * MmoonRad)\n + 0.01039 * Math.sin(2.0 * FRad)\n + 0.00739 * E * Math.sin(MmoonRad - MsunRad)\n - 0.00514 * E * Math.sin(MmoonRad + MsunRad)\n + 0.00208 * E * E * Math.sin(2.0 * MsunRad)\n - 0.00111 * Math.sin(MmoonRad - 2.0 * FRad)\n - 0.00057 * Math.sin(MmoonRad + 2.0 * FRad)\n + 0.00056 * E * Math.sin(2.0 * MmoonRad + MsunRad)\n - 0.00042 * Math.sin(3.0 * MmoonRad)\n + 0.00042 * E * Math.sin(MsunRad + 2.0 * FRad)\n + 0.00038 * E * Math.sin(MsunRad - 2.0 * FRad)\n - 0.00024 * E * Math.sin(2.0 * MmoonRad - MsunRad)\n - 0.00017 * Math.sin(omegaRad)\n - 0.00007 * Math.sin(MmoonRad + 2.0 * MsunRad)\n + 0.00004 * Math.sin(2.0 * MmoonRad - 2.0 * FRad)\n + 0.00004 * Math.sin(3.0 * MsunRad)\n + 0.00003 * Math.sin(MmoonRad + MsunRad - 2.0 * FRad)\n + 0.00003 * Math.sin(2.0 * MmoonRad + 2.0 * FRad)\n - 0.00003 * Math.sin(MmoonRad + MsunRad + 2.0 * FRad)\n + 0.00003 * Math.sin(MmoonRad - MsunRad + 2.0 * FRad)\n - 0.00002 * Math.sin(MmoonRad - MsunRad - 2.0 * FRad)\n - 0.00002 * Math.sin(3.0 * MmoonRad + MsunRad)\n + 0.00002 * Math.sin(4.0 * MmoonRad)\n );\n}\n\nfunction getPeriodicTermCorrectionsForFullMoon(k: number, T: number): number {\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n const Msun = getMeanAnomalySun(k, T);\n const Mmoon = getMeanAnomalyMoon(k, T);\n const F = getArgumentOfLatitudeMoon(k, T);\n const omega = getLongitudeOfAscendingNodeMoon(k, T);\n\n const MsunRad = Msun * DEG;\n const MmoonRad = Mmoon * DEG;\n const FRad = F * DEG;\n const omegaRad = omega * DEG;\n\n return (\n -0.40614 * Math.sin(MmoonRad)\n + 0.17302 * E * Math.sin(MsunRad)\n + 0.01614 * Math.sin(2.0 * MmoonRad)\n + 0.01043 * Math.sin(2.0 * FRad)\n + 0.00734 * E * Math.sin(MmoonRad - MsunRad)\n - 0.00515 * E * Math.sin(MmoonRad + MsunRad)\n + 0.00209 * E * E * Math.sin(2.0 * MsunRad)\n - 0.00111 * Math.sin(MmoonRad - 2.0 * FRad)\n - 0.00057 * Math.sin(MmoonRad + 2.0 * FRad)\n + 0.00056 * E * Math.sin(2.0 * MmoonRad + MsunRad)\n - 0.00042 * Math.sin(3.0 * MmoonRad)\n + 0.00042 * E * Math.sin(MsunRad + 2.0 * FRad)\n + 0.00038 * E * Math.sin(MsunRad - 2.0 * FRad)\n - 0.00024 * E * Math.sin(2.0 * MmoonRad - MsunRad)\n - 0.00017 * Math.sin(omegaRad)\n - 0.00007 * Math.sin(MmoonRad + 2.0 * MsunRad)\n + 0.00004 * Math.sin(2.0 * MmoonRad - 2.0 * FRad)\n + 0.00004 * Math.sin(3.0 * MsunRad)\n + 0.00003 * Math.sin(MmoonRad + MsunRad - 2.0 * FRad)\n + 0.00003 * Math.sin(2.0 * MmoonRad + 2.0 * FRad)\n - 0.00003 * Math.sin(MmoonRad + MsunRad + 2.0 * FRad)\n + 0.00003 * Math.sin(MmoonRad - MsunRad + 2.0 * FRad)\n - 0.00002 * Math.sin(MmoonRad - MsunRad - 2.0 * FRad)\n - 0.00002 * Math.sin(3.0 * MmoonRad + MsunRad)\n + 0.00002 * Math.sin(4.0 * MmoonRad)\n );\n}\n\nfunction getPeriodicTermCorrectionsForQuarters(k: number, T: number): number {\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n const Msun = getMeanAnomalySun(k, T);\n const Mmoon = getMeanAnomalyMoon(k, T);\n const F = getArgumentOfLatitudeMoon(k, T);\n const omega = getLongitudeOfAscendingNodeMoon(k, T);\n\n const MsunRad = Msun * DEG;\n const MmoonRad = Mmoon * DEG;\n const FRad = F * DEG;\n const omegaRad = omega * DEG;\n\n return (\n -0.62801 * Math.sin(MmoonRad)\n + 0.17172 * E * Math.sin(MsunRad)\n - 0.01183 * E * Math.sin(MmoonRad + MsunRad)\n + 0.00862 * Math.sin(2.0 * MmoonRad)\n + 0.00804 * Math.sin(2.0 * FRad)\n + 0.00454 * E * Math.sin(MmoonRad - MsunRad)\n + 0.00204 * E * E * Math.sin(2.0 * MsunRad)\n - 0.0018 * Math.sin(MmoonRad - 2.0 * FRad)\n - 0.0007 * Math.sin(MmoonRad + 2.0 * FRad)\n - 0.0004 * Math.sin(3.0 * MmoonRad)\n - 0.00034 * E * Math.sin(2.0 * MmoonRad - MsunRad)\n + 0.00032 * E * Math.sin(MsunRad + 2.0 * FRad)\n + 0.00032 * E * Math.sin(MsunRad - 2.0 * FRad)\n - 0.00028 * E * E * Math.sin(MmoonRad + 2.0 * MsunRad)\n + 0.00027 * E * Math.sin(2.0 * MmoonRad + MsunRad)\n - 0.00017 * Math.sin(omegaRad)\n - 0.00005 * Math.sin(MmoonRad - MsunRad - 2.0 * FRad)\n + 0.00004 * Math.sin(2.0 * MmoonRad + 2.0 * FRad)\n - 0.00004 * Math.sin(MmoonRad + MsunRad + 2.0 * FRad)\n + 0.00004 * Math.sin(MmoonRad - 2.0 * MsunRad)\n + 0.00003 * Math.sin(MmoonRad + MsunRad - 2.0 * FRad)\n + 0.00003 * Math.sin(3.0 * MsunRad)\n + 0.00002 * Math.sin(2.0 * MmoonRad - 2.0 * FRad)\n + 0.00002 * Math.sin(MmoonRad - MsunRad + 2.0 * FRad)\n - 0.00002 * Math.sin(3.0 * MmoonRad + MsunRad)\n );\n}\n\nfunction getQuarterPhaseCorrections(k: number, T: number, moonPhase: number): number {\n if (moonPhase === MOON_PHASE_FULL_MOON || moonPhase === MOON_PHASE_NEW_MOON) {\n return 0.0;\n }\n\n const E = 1 - 0.002516 * T - 0.0000074 * T ** 2;\n const Msun = getMeanAnomalySun(k, T);\n const Mmoon = getMeanAnomalyMoon(k, T);\n const F = getArgumentOfLatitudeMoon(k, T);\n\n const MsunRad = Msun * DEG;\n const MmoonRad = Mmoon * DEG;\n const FRad = F * DEG;\n\n const w =\n 0.00306\n - 0.00038 * E * Math.cos(MsunRad)\n + 0.00026 * Math.cos(MmoonRad)\n - 0.00002 * Math.cos(MmoonRad - MsunRad)\n + 0.00002 * Math.cos(MmoonRad + MsunRad)\n + 0.00002 * Math.cos(2 * FRad);\n\n return moonPhase === MOON_PHASE_FIRST_QUARTER ? w : -1 * w;\n}\n\nfunction getPlanetaryCorrections(k: number, T: number): number {\n const A1 = (299.77 + 0.107408 * k - 0.009173 * T ** 2) * DEG;\n const A2 = (251.88 + 0.016321 * k) * DEG;\n const A3 = (251.83 + 26.651776 * k) * DEG;\n const A4 = (349.42 + 36.412478 * k) * DEG;\n const A5 = (84.66 + 18.206239 * k) * DEG;\n const A6 = (141.74 + 53.303771 * k) * DEG;\n const A7 = (207.84 + 2.453732 * k) * DEG;\n const A8 = (154.84 + 7.30686 * k) * DEG;\n const A9 = (34.52 + 27.261239 * k) * DEG;\n const A10 = (207.19 + 0.121824 * k) * DEG;\n const A11 = (291.34 + 1.844379 * k) * DEG;\n const A12 = (161.72 + 24.198154 * k) * DEG;\n const A13 = (239.56 + 25.513099 * k) * DEG;\n const A14 = (331.55 + 3.592518 * k) * DEG;\n\n return (\n 0.000325 * Math.sin(A1)\n + 0.000165 * Math.sin(A2)\n + 0.000164 * Math.sin(A3)\n + 0.000126 * Math.sin(A4)\n + 0.00011 * Math.sin(A5)\n + 0.000062 * Math.sin(A6)\n + 0.00006 * Math.sin(A7)\n + 0.000056 * Math.sin(A8)\n + 0.000047 * Math.sin(A9)\n + 0.000042 * Math.sin(A10)\n + 0.00004 * Math.sin(A11)\n + 0.000037 * Math.sin(A12)\n + 0.000035 * Math.sin(A13)\n + 0.000023 * Math.sin(A14)\n );\n}\n\nfunction getJulianEphemerisDays(k: number, T: number): number {\n return 2451550.09766 + 29.530588861 * k + 0.00015437 * T ** 2 + 0.00000015 * T ** 3 + 0.00000000073 * T ** 4;\n}\n\nfunction getMeanAnomalySun(k: number, T: number): number {\n return 2.5534 + 29.1053567 * k - 0.0000014 * T ** 2 - 0.00000011 * T ** 3;\n}\n\nfunction getMeanAnomalyMoon(k: number, T: number): number {\n return 201.5643 + 385.81693528 * k + 0.0107582 * T ** 2 + 0.00001238 * T ** 3 + 0.000000058 * T ** 4;\n}\n\nfunction getArgumentOfLatitudeMoon(k: number, T: number): number {\n return 160.7108 + 390.67050284 * k + 0.0016118 * T ** 2 + 0.00000227 * T ** 3 + 0.000000011 * T ** 4;\n}\n\nfunction getLongitudeOfAscendingNodeMoon(k: number, T: number): number {\n return 124.7746 + 390.67050284 * k + 0.0020672 * T ** 2 + 0.00000215 * T ** 3;\n}\n","import {\n MOON_DIAMETER_KM,\n MOON_PHASE_FIRST_QUARTER,\n MOON_PHASE_FULL_MOON,\n MOON_PHASE_LAST_QUARTER,\n MOON_PHASE_NEW_MOON,\n} from '@app/constants/moon';\nimport type {EclipticSphericalCoordinates, RectangularCoordinates} from '@app/types/CoordinateTypes';\nimport type {Location} from '@app/types/LocationTypes';\nimport {correctEffectOfNutation} from '@app/utils/apparentPositionCorrections';\nimport {\n rectangular2spherical,\n rectangularGeocentric2rectangularHeliocentric,\n spherical2rectangular,\n} from '@app/utils/coordinateTransformation';\nimport * as moon from '@app/utils/moon';\nimport {\n getAngularDiameter,\n getElongation,\n getIlluminatedFraction,\n getPhaseAngle,\n getPositionAngleOfBrightLimb,\n isWaxing,\n} from '@app/utils/observation';\nimport AstronomicalObject from '@package/core/models/models/AstronomicalObject';\nimport Earth from '@package/earth/models/Earth';\nimport {getApparentMagnitudeMoon} from '@package/moon/utils/magnitude';\nimport {getTimeOfInterestOfUpcomingPhase} from '@package/moon/utils/phases';\nimport Sun from '@package/sun/models/Sun';\nimport type TimeOfInterest from '@package/time/models/TimeOfInterest';\n\nexport default class Moon extends AstronomicalObject {\n public constructor(\n toi?: TimeOfInterest,\n private readonly sun: Sun = new Sun(toi),\n private readonly earth: Earth = new Earth(toi),\n ) {\n super(toi, 'moon');\n }\n\n public static create(toi?: TimeOfInterest): Moon {\n return new Moon(toi);\n }\n\n public getHeliocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n return this.getHeliocentricEclipticRectangularDateCoordinates();\n }\n\n public getHeliocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n const geocentricCoords = this.getGeocentricEclipticRectangularDateCoordinates();\n const heliocentricCoordsEarth = this.earth.getHeliocentricEclipticRectangularDateCoordinates();\n\n return rectangularGeocentric2rectangularHeliocentric(geocentricCoords, heliocentricCoordsEarth);\n }\n\n public getHeliocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n return this.getHeliocentricEclipticSphericalDateCoordinates();\n }\n\n public getHeliocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n const coords = this.getHeliocentricEclipticRectangularDateCoordinates();\n\n return rectangular2spherical(coords);\n }\n\n public getGeocentricEclipticRectangularJ2000Coordinates(): RectangularCoordinates {\n return this.getGeocentricEclipticRectangularDateCoordinates();\n }\n\n public getGeocentricEclipticRectangularDateCoordinates(): RectangularCoordinates {\n const coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n return spherical2rectangular(coords);\n }\n\n public getGeocentricEclipticSphericalJ2000Coordinates(): EclipticSphericalCoordinates {\n return this.getGeocentricEclipticSphericalDateCoordinates();\n }\n\n public getGeocentricEclipticSphericalDateCoordinates(): EclipticSphericalCoordinates {\n const lon = moon.getLongitude(this.T);\n const lat = moon.getLatitude(this.T);\n const radiusVector = moon.getRadiusVector(this.T);\n\n return {lon, lat, radiusVector};\n }\n\n public getApparentGeocentricEclipticSphericalCoordinates(): EclipticSphericalCoordinates {\n const coords = this.getGeocentricEclipticSphericalDateCoordinates();\n\n return correctEffectOfNutation(coords, this.T);\n }\n\n public getAngularDiameter(): number {\n const distance = this.getApparentDistanceToEarth();\n\n return getAngularDiameter(distance, MOON_DIAMETER_KM);\n }\n\n public getTopocentricAngularDiameter(location: Location): number {\n const distance = this.getTopocentricDistanceToEarth(location);\n\n return getAngularDiameter(distance, MOON_DIAMETER_KM);\n }\n\n public getElongation(): number {\n const coordsMoon = this.getApparentGeocentricEquatorialSphericalCoordinates();\n const coordsSun = this.sun.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return getElongation(coordsMoon, coordsSun);\n }\n\n public getTopocentricElongation(location: Location): number {\n const coordsMoon = this.getTopocentricEquatorialSphericalCoordinates(location);\n const coordsSun = this.sun.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return getElongation(coordsMoon, coordsSun);\n }\n\n public getPhaseAngle(): number {\n const coordsMoon = this.getApparentGeocentricEquatorialSphericalCoordinates();\n const coordsSun = this.sun.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return getPhaseAngle(coordsMoon, coordsSun);\n }\n\n public getTopocentricPhaseAngle(location: Location): number {\n const coordsMoon = this.getTopocentricEquatorialSphericalCoordinates(location);\n const coordsSun = this.sun.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return getPhaseAngle(coordsMoon, coordsSun);\n }\n\n public getIlluminatedFraction(): number {\n const i = this.getPhaseAngle();\n\n return getIlluminatedFraction(i);\n }\n\n public getTopocentricIlluminatedFraction(location: Location): number {\n const i = this.getTopocentricPhaseAngle(location);\n\n return getIlluminatedFraction(i);\n }\n\n public getPositionAngleOfBrightLimb(): number {\n const coordsMoon = this.getApparentGeocentricEquatorialSphericalCoordinates();\n const coordsSun = this.sun.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return getPositionAngleOfBrightLimb(coordsMoon, coordsSun);\n }\n\n public getTopocentricPositionAngleOfBrightLimb(location: Location): number {\n const coordsMoon = this.getTopocentricEquatorialSphericalCoordinates(location);\n const coordsSun = this.sun.getApparentGeocentricEquatorialSphericalCoordinates();\n\n return getPositionAngleOfBrightLimb(coordsMoon, coordsSun);\n }\n\n public isWaxing(): boolean {\n const chi = this.getPositionAngleOfBrightLimb();\n\n return isWaxing(chi);\n }\n\n public isTopocentricWaxing(location: Location): boolean {\n const chi = this.getTopocentricPositionAngleOfBrightLimb(location);\n\n return isWaxing(chi);\n }\n\n public getApparentMagnitude(): number {\n const coordsHelio = this.getHeliocentricEclipticSphericalDateCoordinates();\n const coordsGeo = this.getGeocentricEclipticSphericalDateCoordinates();\n const i = this.getPhaseAngle();\n const waxing = this.isWaxing();\n\n return getApparentMagnitudeMoon(coordsHelio.radiusVector, coordsGeo.radiusVector, i, waxing);\n }\n\n public getTopocentricApparentMagnitude(location: Location): number {\n const coordsHelio = this.getHeliocentricEclipticSphericalDateCoordinates();\n const coordsGeo = this.getTopocentricEquatorialSphericalCoordinates(location);\n const i = this.getTopocentricPhaseAngle(location);\n const waxing = this.isTopocentricWaxing(location);\n\n return getApparentMagnitudeMoon(coordsHelio.radiusVector, coordsGeo.radiusVector, i, waxing);\n }\n\n public getUpcomingNewMoon(): TimeOfInterest {\n const decimalYear = this.toi.getDecimalYear();\n\n return getTimeOfInterestOfUpcomingPhase(decimalYear, MOON_PHASE_NEW_MOON);\n }\n\n public getUpcomingFirstQuarter(): TimeOfInterest {\n const decimalYear = this.toi.getDecimalYear();\n\n return getTimeOfInterestOfUpcomingPhase(decimalYear, MOON_PHASE_FIRST_QUARTER);\n }\n\n public getUpcomingFullMoon(): TimeOfInterest {\n const decimalYear = this.toi.getDecimalYear();\n\n return getTimeOfInterestOfUpcomingPhase(decimalYear, MOON_PHASE_FULL_MOON);\n }\n\n public getUpcomingLastQuarter(): TimeOfInterest {\n const decimalYear = this.toi.getDecimalYear();\n\n return getTimeOfInterestOfUpcomingPhase(decimalYear, MOON_PHASE_LAST_QUARTER);\n }\n}\n"],"mappings":"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AAG,EAChC,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EACjC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC9B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAC/B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAK,EAAG,CAAG,EAChC,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAK,EAAG,CAAG,EAC/B,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAK,EAAG,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAK,GAAI,CAAG,EAChC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAA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","names":["vsop87EarthSphericalDateReduced_exports","__export","VSOP87_X","VSOP87_Y","VSOP87_Z","VSOP87_L0","VSOP87_L1","VSOP87_L2","VSOP87_L3","VSOP87_L4","VSOP87_L5","VSOP87_B0","VSOP87_B1","VSOP87_B2","VSOP87_B3","VSOP87_B4","VSOP87_B5","VSOP87_R0","VSOP87_R1","VSOP87_R2","VSOP87_R3","VSOP87_R4","VSOP87_R5","vsop87EarthSphericalJ2000Reduced_exports","__export","VSOP87_X","VSOP87_Y","VSOP87_Z","VSOP87_L0","VSOP87_L1","VSOP87_L2","VSOP87_L3","VSOP87_L4","VSOP87_L5","VSOP87_B0","VSOP87_B1","VSOP87_B2","VSOP87_B3","VSOP87_B4","VSOP87_B5","VSOP87_R0","VSOP87_R1","VSOP87_R2","VSOP87_R3","VSOP87_R4","VSOP87_R5","round","value","decimals","p","pad","num","size","numStr","normalizeAngle","degrees","baseAngle","angle","sec2deg","seconds","EARTH_AXIS_RATIO","EARTH_FLATTENING","EARTH_ROTATION_DEG_PER_HOUR","EARTH_ARGUMENTS_OF_NUTATION","DEG","RAD","MOON_ARGUMENTS_LR","MOON_ARGUMENTS_B","LIGHT_SPEED_KM_PER_SEC","au2km","R","km2au","km","getMeanAnomaly","T","M","normalizeAngle","getMeanLongitude","T","t","L0","normalizeAngle","getTrueLongitude","C","getEquationOfCenter","getEquationOfCenter","T","M","getMeanAnomaly","C","DEG","getMeanElongation","T","D","normalizeAngle","getMeanAnomaly","Mmoon","getArgumentOfLatitude","F","getMeanLongitude","L","getLongitude","T","L","getMeanLongitude","sumL","getSumL","getLatitude","getSumB","getRadiusVector","km2au","getDistanceToEarth","getSumR","D","getMeanElongation","Msun","getMeanAnomaly","Mmoon","F","getArgumentOfLatitude","E","sumR","MOON_ARGUMENTS_LR","args","argD","argMsun","argMmoon","argF","argSumR","tmpSumR","DEG","A1","A2","argSumL","tmpSumL","A3","sumB","MOON_ARGUMENTS_B","argSumB","tmpSumB","getEccentricity","T","getLongitudeOfPerihelionOfOrbit","getMeanObliquityOfEcliptic","U","getTrueObliquityOfEcliptic","eps0","sumEps","getNutationInObliquity","getNutationInLongitude","D","getMeanElongation","Msun","getMeanAnomaly","Mmoon","F","getArgumentOfLatitude","O","sumPhi","EARTH_ARGUMENTS_OF_NUTATION","args","argMmoon","argMsun","argF","argD","argO","argPhi1","argPhi2","tmpSum","DEG","argEps1","argEps2","time2julianDay","time","tmpYear","getDayOfYear","Y","M","D","H","A","B","julianDay2time","jd","Z","F","a","C","E","dayOnMonth","month","year","hour","min","sec","julianDay2julianDay0","julianDay2julianCenturiesJ2000","jd","julianCenturiesJ20002julianDay","T","julianDay2julianMillenniaJ2000","dayOfYear2time","year","dayOfYear","K","isLeapYear","month","day","hourFloat","hour","minFloat","min","sec","round","getDecimalYear","time","daysInYear","getDayOfYear","M","D","getDayOfWeek","jd","time2julianDay","getGreenwichMeanSiderealTime","T","GMST","julianCenturiesJ20002julianDay","normalizeAngle","getGreenwichApparentSiderealTime","p","getNutationInLongitude","eRad","getTrueObliquityOfEcliptic","DEG","getLocalMeanSiderealTime","lon","LMST","getLocalApparentSiderealTime","getLocalHourAngle","rightAscension","LAST","rectangular2spherical","coords","x","y","z","lonRad","lon","normalizeAngle","RAD","lat","radiusVector","spherical2rectangular","DEG","latRad","equatorialSpherical2topocentricSpherical","location","T","rightAscension","declination","elevation","dRad","rhoSinLat","getRhoSinLat","rhoCosLat","getRhoCosLat","piRad","getEquatorialParallax","LAST","getLocalApparentSiderealTime","HRad","getLocalHourAngle","A","B","C","q","HTopo","dTopoRad","equatorialSpherical2topocentricHorizontal","topoCoords","H","equatorialSpherical2topocentricHorizontalByLocalHourAngle","localHourAngle","ARad","hRad","eclipticSpherical2equatorialSpherical","normalize","epsRad","getTrueObliquityOfEcliptic","n","rightAscensionRad","rectangularGeocentric2rectangularHeliocentric","geocentricCoords","heliocentricCoordsEarth","earthEclipticSpherical2sunEclipticSpherical","coordsEarth","lon","lat","radiusVector","normalizeAngle","getEquatorialParallax","d","angle","sec2deg","DEG","RAD","getRhoSinLat","lat","elevation","latRad","uRad","EARTH_AXIS_RATIO","getRhoCosLat","calculateVSOP87Angle","terms","t","calculateVSOP87","RAD","result","term","key","sumUpTerm","a","b","c","correctEffectOfNutation","coords","T","phi","getNutationInLongitude","correctEffectOfAberration","lonSun","getTrueLongitude","e","getEccentricity","pi","getLongitudeOfPerihelionOfOrbit","k","sec2deg","lonRad","DEG","latRad","lonSunRad","piRad","dLon","dLat","correctEffectOfRefraction","altitude","R","getDeltaT","year","month","y","t","deltaT","TimeOfInterest","_TimeOfInterest","time","time2julianDay","julianDay2julianCenturiesJ2000","date","year","month","day","hour","min","sec","dayOfYear","dayOfYear2time","jd","julianDay2time","T","julianCenturiesJ20002julianDay","pad","getDecimalYear","getDayOfYear","getDayOfWeek","isLeapYear","julianDay2julianDay0","julianDay2julianMillenniaJ2000","getGreenwichMeanSiderealTime","getGreenwichApparentSiderealTime","location","getLocalMeanSiderealTime","getLocalApparentSiderealTime","getDeltaT","AstronomicalObject","toi","TimeOfInterest","name","coords","eclipticSpherical2equatorialSpherical","spherical2rectangular","location","equatorialSpherical2topocentricSpherical","equatorialSpherical2topocentricHorizontal","azimuth","altitude","radiusVector","correctEffectOfRefraction","au2km","LIGHT_SPEED_KM_PER_SEC","Earth","_Earth","AstronomicalObject","toi","vsop87Date","vsop87EarthSphericalDateReduced_exports","vsop87J2000","vsop87EarthSphericalJ2000Reduced_exports","spherical2rectangular","normalizeAngle","calculateVSOP87Angle","calculateVSOP87","getNutationInLongitude","getNutationInObliquity","getMeanObliquityOfEcliptic","getTrueObliquityOfEcliptic","getElongation","equCoordsObj","equCoordsSun","raObjRad","DEG","dObjRad","raSunRad","dSunRad","RAD","getPhaseAngle","distObj","distSun","phiRad","getIlluminatedFraction","phaseAngle","iRad","getPositionAngleOfBrightLimb","numerator","denominator","chiRad","normalizeAngle","isWaxing","chi","getAngularDiameter","distance","trueDiameter","Sun","_Sun","AstronomicalObject","toi","earth","Earth","spherical2rectangular","earthEclipticSpherical2sunEclipticSpherical","coords","correctEffectOfAberration","correctEffectOfNutation","getAngularDiameter","location","getApparentMagnitudeMoon","distanceSun","distanceEarth","phaseAngle","isWaxing","signedPhaseAngle","V","au2km","getTimeOfInterestOfUpcomingPhase","decimalYear","moonPhase","k","round","T","JDE","getJulianEphemerisDays","corrections","getPeriodicTermCorrections","wCorrections","getQuarterPhaseCorrections","pCorrections","getPlanetaryCorrections","jd","TimeOfInterest","getPeriodicTermCorrectionsForNewMoon","getPeriodicTermCorrectionsForFullMoon","getPeriodicTermCorrectionsForQuarters","E","Msun","getMeanAnomalySun","Mmoon","getMeanAnomalyMoon","F","getArgumentOfLatitudeMoon","omega","getLongitudeOfAscendingNodeMoon","MsunRad","DEG","MmoonRad","FRad","omegaRad","w","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11","A12","A13","A14","Moon","_Moon","AstronomicalObject","toi","sun","Sun","earth","Earth","geocentricCoords","heliocentricCoordsEarth","rectangularGeocentric2rectangularHeliocentric","coords","rectangular2spherical","spherical2rectangular","lon","getLongitude","lat","getLatitude","radiusVector","getRadiusVector","correctEffectOfNutation","distance","getAngularDiameter","location","coordsMoon","coordsSun","getElongation","getPhaseAngle","i","getIlluminatedFraction","getPositionAngleOfBrightLimb","chi","isWaxing","coordsHelio","coordsGeo","waxing","getApparentMagnitudeMoon","decimalYear","getTimeOfInterestOfUpcomingPhase"]}
@@ -1,6 +1,6 @@
1
- import { M as MoonBase, T as TimeOfInterest } from './MoonBase-Q8bNAmwm.mjs';
1
+ import { M as Moon$1, T as TimeOfInterest } from './index-CVdG2AWH.mjs';
2
2
 
3
- declare class Moon extends MoonBase {
3
+ declare class Moon extends Moon$1 {
4
4
  constructor(toi?: TimeOfInterest);
5
5
  static create(toi?: TimeOfInterest): Moon;
6
6
  }
@@ -1,6 +1,6 @@
1
- import { M as MoonBase, T as TimeOfInterest } from './MoonBase-Q8bNAmwm.js';
1
+ import { M as Moon$1, T as TimeOfInterest } from './index-CVdG2AWH.js';
2
2
 
3
- declare class Moon extends MoonBase {
3
+ declare class Moon extends Moon$1 {
4
4
  constructor(toi?: TimeOfInterest);
5
5
  static create(toi?: TimeOfInterest): Moon;
6
6
  }