ootk 4.0.8 → 5.0.0

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.
Files changed (536) hide show
  1. package/CHANGELOG.md +9 -2
  2. package/README.md +0 -15
  3. package/dist/body/Celestial.d.ts +96 -0
  4. package/dist/body/Celestial.js +124 -0
  5. package/dist/body/Celestial.js.map +1 -0
  6. package/dist/body/Earth.d.ts +68 -0
  7. package/dist/body/Earth.js +198 -0
  8. package/dist/body/Earth.js.map +1 -0
  9. package/dist/body/Moon.d.ts +137 -0
  10. package/dist/body/Moon.js +464 -0
  11. package/dist/body/Moon.js.map +1 -0
  12. package/dist/body/NutationAngles.d.ts +38 -0
  13. package/dist/body/NutationAngles.js +24 -0
  14. package/dist/body/NutationAngles.js.map +1 -0
  15. package/dist/body/PrecessionAngles.d.ts +29 -0
  16. package/dist/body/PrecessionAngles.js +24 -0
  17. package/dist/body/PrecessionAngles.js.map +1 -0
  18. package/dist/body/Sun.d.ts +305 -0
  19. package/dist/body/Sun.js +548 -0
  20. package/dist/body/Sun.js.map +1 -0
  21. package/dist/body/index.d.ts +26 -0
  22. package/dist/body/index.js +27 -0
  23. package/dist/body/index.js.map +1 -0
  24. package/dist/coordinate/ClassicalElements.d.ts +132 -0
  25. package/dist/coordinate/ClassicalElements.js +279 -0
  26. package/dist/coordinate/ClassicalElements.js.map +1 -0
  27. package/dist/coordinate/EquinoctialElements.d.ts +114 -0
  28. package/dist/coordinate/EquinoctialElements.js +172 -0
  29. package/dist/coordinate/EquinoctialElements.js.map +1 -0
  30. package/dist/coordinate/FormatTle.d.ts +95 -0
  31. package/dist/coordinate/FormatTle.js +184 -0
  32. package/dist/coordinate/FormatTle.js.map +1 -0
  33. package/dist/coordinate/Geodetic.d.ts +110 -0
  34. package/dist/coordinate/Geodetic.js +163 -0
  35. package/dist/coordinate/Geodetic.js.map +1 -0
  36. package/dist/coordinate/Hill.d.ts +1 -1
  37. package/dist/coordinate/Hill.js +1 -1
  38. package/dist/coordinate/Hill.js.map +1 -1
  39. package/dist/coordinate/ITRF.d.ts +75 -0
  40. package/dist/coordinate/ITRF.js +135 -0
  41. package/dist/coordinate/ITRF.js.map +1 -0
  42. package/dist/coordinate/J2000.d.ts +65 -0
  43. package/dist/coordinate/J2000.js +120 -0
  44. package/dist/coordinate/J2000.js.map +1 -0
  45. package/dist/coordinate/RIC.d.ts +64 -0
  46. package/dist/coordinate/RIC.js +79 -0
  47. package/dist/coordinate/RIC.js.map +1 -0
  48. package/dist/coordinate/RelativeState.d.ts +70 -0
  49. package/dist/coordinate/RelativeState.js +79 -0
  50. package/dist/coordinate/RelativeState.js.map +1 -0
  51. package/dist/coordinate/StateVector.d.ts +76 -0
  52. package/dist/coordinate/StateVector.js +97 -0
  53. package/dist/coordinate/StateVector.js.map +1 -0
  54. package/dist/coordinate/TEME.d.ts +57 -0
  55. package/dist/coordinate/TEME.js +89 -0
  56. package/dist/coordinate/TEME.js.map +1 -0
  57. package/dist/coordinate/Tle.d.ts +430 -0
  58. package/dist/coordinate/Tle.js +865 -0
  59. package/dist/coordinate/Tle.js.map +1 -0
  60. package/dist/coordinate/index.d.ts +11 -0
  61. package/dist/coordinate/index.js +12 -0
  62. package/dist/coordinate/index.js.map +1 -1
  63. package/dist/coordinate/tle-format-data.d.ts +41 -0
  64. package/dist/coordinate/tle-format-data.js +46 -0
  65. package/dist/coordinate/tle-format-data.js.map +1 -0
  66. package/dist/covariance/CovarianceSample.d.ts +1 -1
  67. package/dist/covariance/CovarianceSample.js +1 -1
  68. package/dist/covariance/CovarianceSample.js.map +1 -1
  69. package/dist/covariance/StateCovariance.d.ts +1 -1
  70. package/dist/covariance/StateCovariance.js +1 -1
  71. package/dist/covariance/StateCovariance.js.map +1 -1
  72. package/dist/data/DataHandler.d.ts +66 -0
  73. package/dist/data/DataHandler.js +80 -0
  74. package/dist/data/DataHandler.js.map +1 -0
  75. package/dist/data/values/Egm96Data.d.ts +37 -0
  76. package/dist/data/values/Egm96Data.js +63 -0
  77. package/dist/data/values/Egm96Data.js.map +1 -0
  78. package/dist/data/values/HpAtmosphereData.d.ts +33 -0
  79. package/dist/data/values/HpAtmosphereData.js +58 -0
  80. package/dist/data/values/HpAtmosphereData.js.map +1 -0
  81. package/dist/data/values/HpAtmosphereResult.d.ts +29 -0
  82. package/dist/data/values/HpAtmosphereResult.js +38 -0
  83. package/dist/data/values/HpAtmosphereResult.js.map +1 -0
  84. package/dist/data/values/Iau1980Data.d.ts +36 -0
  85. package/dist/data/values/Iau1980Data.js +52 -0
  86. package/dist/data/values/Iau1980Data.js.map +1 -0
  87. package/dist/data/values/LeapSecond.d.ts +27 -0
  88. package/dist/data/values/LeapSecond.js +35 -0
  89. package/dist/data/values/LeapSecond.js.map +1 -0
  90. package/dist/data/values/LeapSecondData.d.ts +41 -0
  91. package/dist/data/values/LeapSecondData.js +103 -0
  92. package/dist/data/values/LeapSecondData.js.map +1 -0
  93. package/dist/data/values/egm96.d.ts +24 -0
  94. package/dist/data/values/egm96.js +726 -0
  95. package/dist/data/values/egm96.js.map +1 -0
  96. package/dist/data/values/hpAtmosphere.d.ts +24 -0
  97. package/dist/data/values/hpAtmosphere.js +76 -0
  98. package/dist/data/values/hpAtmosphere.js.map +1 -0
  99. package/dist/data/values/iau1980.d.ts +24 -0
  100. package/dist/data/values/iau1980.js +30 -0
  101. package/dist/data/values/iau1980.js.map +1 -0
  102. package/dist/enums/AngularDiameterMethod.d.ts +27 -0
  103. package/dist/enums/AngularDiameterMethod.js +29 -0
  104. package/dist/enums/AngularDiameterMethod.js.map +1 -0
  105. package/dist/enums/AngularDistanceMethod.d.ts +27 -0
  106. package/dist/enums/AngularDistanceMethod.js +29 -0
  107. package/dist/enums/AngularDistanceMethod.js.map +1 -0
  108. package/dist/enums/OrbitRegime.d.ts +30 -0
  109. package/dist/enums/OrbitRegime.js +32 -0
  110. package/dist/enums/OrbitRegime.js.map +1 -0
  111. package/dist/enums/PassType.d.ts +28 -0
  112. package/dist/enums/PassType.js +30 -0
  113. package/dist/enums/PassType.js.map +1 -0
  114. package/dist/enums/Sgp4OpsMode.d.ts +26 -0
  115. package/dist/enums/Sgp4OpsMode.js +28 -0
  116. package/dist/enums/Sgp4OpsMode.js.map +1 -0
  117. package/dist/enums/index.d.ts +5 -0
  118. package/dist/enums/index.js +5 -0
  119. package/dist/enums/index.js.map +1 -1
  120. package/dist/force/AtmosphericDrag.d.ts +1 -1
  121. package/dist/force/AtmosphericDrag.js +1 -1
  122. package/dist/force/AtmosphericDrag.js.map +1 -1
  123. package/dist/force/EarthGravity.d.ts +1 -1
  124. package/dist/force/EarthGravity.js +1 -1
  125. package/dist/force/EarthGravity.js.map +1 -1
  126. package/dist/force/Force.d.ts +1 -1
  127. package/dist/force/ForceModel.d.ts +1 -1
  128. package/dist/force/ForceModel.js +1 -1
  129. package/dist/force/ForceModel.js.map +1 -1
  130. package/dist/force/Gravity.d.ts +1 -1
  131. package/dist/force/Gravity.js +1 -1
  132. package/dist/force/Gravity.js.map +1 -1
  133. package/dist/force/SolarRadiationPressure.d.ts +1 -1
  134. package/dist/force/SolarRadiationPressure.js +1 -1
  135. package/dist/force/SolarRadiationPressure.js.map +1 -1
  136. package/dist/force/ThirdBodyGravity.d.ts +1 -1
  137. package/dist/force/ThirdBodyGravity.js +1 -1
  138. package/dist/force/ThirdBodyGravity.js.map +1 -1
  139. package/dist/force/Thrust.d.ts +1 -1
  140. package/dist/force/Thrust.js +1 -1
  141. package/dist/force/Thrust.js.map +1 -1
  142. package/dist/interfaces/BaseObjectParams.d.ts +31 -0
  143. package/dist/interfaces/BaseObjectParams.js +24 -0
  144. package/dist/interfaces/BaseObjectParams.js.map +1 -0
  145. package/dist/interfaces/ClassicalElementsParams.d.ts +33 -0
  146. package/dist/interfaces/ClassicalElementsParams.js +24 -0
  147. package/dist/interfaces/ClassicalElementsParams.js.map +1 -0
  148. package/dist/interfaces/EquinoctialElementsParams.d.ts +35 -0
  149. package/dist/interfaces/EquinoctialElementsParams.js +24 -0
  150. package/dist/interfaces/EquinoctialElementsParams.js.map +1 -0
  151. package/dist/interfaces/GroundPositionParams.d.ts +28 -0
  152. package/dist/interfaces/GroundPositionParams.js +24 -0
  153. package/dist/interfaces/GroundPositionParams.js.map +1 -0
  154. package/dist/interfaces/OmmFormat.d.ts +62 -0
  155. package/dist/interfaces/OmmFormat.js +2 -0
  156. package/dist/interfaces/OmmFormat.js.map +1 -0
  157. package/dist/interfaces/OptionsParams.d.ts +3 -0
  158. package/dist/interfaces/OptionsParams.js +2 -0
  159. package/dist/interfaces/OptionsParams.js.map +1 -0
  160. package/dist/interfaces/RfSensorParams.d.ts +1 -1
  161. package/dist/interfaces/SatelliteParams.d.ts +18 -0
  162. package/dist/interfaces/SatelliteParams.js +2 -0
  163. package/dist/interfaces/SatelliteParams.js.map +1 -0
  164. package/dist/interfaces/SensorParams.d.ts +38 -0
  165. package/dist/interfaces/SensorParams.js +2 -0
  166. package/dist/interfaces/SensorParams.js.map +1 -0
  167. package/dist/interfaces/StarObjectParams.d.ts +10 -0
  168. package/dist/interfaces/StarObjectParams.js +2 -0
  169. package/dist/interfaces/StarObjectParams.js.map +1 -0
  170. package/dist/interfaces/TimeVariables.d.ts +6 -0
  171. package/dist/interfaces/TimeVariables.js +2 -0
  172. package/dist/interfaces/TimeVariables.js.map +1 -0
  173. package/dist/interfaces/index.d.ts +8 -0
  174. package/dist/interpolator/ChebyshevCoefficients.d.ts +1 -1
  175. package/dist/interpolator/ChebyshevCoefficients.js +1 -1
  176. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  177. package/dist/interpolator/ChebyshevInterpolator.d.ts +1 -1
  178. package/dist/interpolator/ChebyshevInterpolator.js +1 -1
  179. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  180. package/dist/interpolator/CubicSpline.d.ts +1 -1
  181. package/dist/interpolator/CubicSplineInterpolator.d.ts +1 -1
  182. package/dist/interpolator/CubicSplineInterpolator.js +1 -1
  183. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  184. package/dist/interpolator/Interpolator.d.ts +1 -1
  185. package/dist/interpolator/Interpolator.js +1 -1
  186. package/dist/interpolator/Interpolator.js.map +1 -1
  187. package/dist/interpolator/LagrangeInterpolator.d.ts +1 -1
  188. package/dist/interpolator/LagrangeInterpolator.js +1 -1
  189. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  190. package/dist/interpolator/StateInterpolator.d.ts +1 -1
  191. package/dist/interpolator/VerletBlendInterpolator.d.ts +1 -1
  192. package/dist/interpolator/VerletBlendInterpolator.js +1 -1
  193. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  194. package/dist/main.d.ts +11 -3
  195. package/dist/main.js +11 -3
  196. package/dist/main.js.map +1 -1
  197. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +1 -1
  198. package/dist/maneuver/TwoBurnOrbitTransfer.js +1 -1
  199. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  200. package/dist/maneuver/Waypoint.d.ts +1 -1
  201. package/dist/maneuver/Waypoint.js +1 -1
  202. package/dist/maneuver/Waypoint.js.map +1 -1
  203. package/dist/objects/BaseObject.d.ts +74 -0
  204. package/dist/objects/BaseObject.js +151 -0
  205. package/dist/objects/BaseObject.js.map +1 -0
  206. package/dist/objects/DetailedSatellite.d.ts +3 -1
  207. package/dist/objects/DetailedSatellite.js +4 -2
  208. package/dist/objects/DetailedSatellite.js.map +1 -1
  209. package/dist/objects/DetailedSensor.d.ts +2 -1
  210. package/dist/objects/DetailedSensor.js +1 -1
  211. package/dist/objects/DetailedSensor.js.map +1 -1
  212. package/dist/objects/GroundObject.d.ts +85 -0
  213. package/dist/objects/GroundObject.js +143 -0
  214. package/dist/objects/GroundObject.js.map +1 -0
  215. package/dist/objects/LandObject.d.ts +2 -1
  216. package/dist/objects/LandObject.js +1 -1
  217. package/dist/objects/LandObject.js.map +1 -1
  218. package/dist/objects/Marker.d.ts +1 -1
  219. package/dist/objects/Marker.js +1 -1
  220. package/dist/objects/Marker.js.map +1 -1
  221. package/dist/objects/RfSensor.d.ts +1 -2
  222. package/dist/objects/RfSensor.js +1 -2
  223. package/dist/objects/RfSensor.js.map +1 -1
  224. package/dist/objects/Satellite.d.ts +226 -0
  225. package/dist/objects/Satellite.js +443 -0
  226. package/dist/objects/Satellite.js.map +1 -0
  227. package/dist/objects/Sensor.d.ts +100 -0
  228. package/dist/objects/Sensor.js +239 -0
  229. package/dist/objects/Sensor.js.map +1 -0
  230. package/dist/objects/Star.d.ts +36 -0
  231. package/dist/objects/Star.js +59 -0
  232. package/dist/objects/Star.js.map +1 -0
  233. package/dist/objects/index.d.ts +5 -0
  234. package/dist/objects/index.js +5 -0
  235. package/dist/objects/index.js.map +1 -1
  236. package/dist/observation/Observation.d.ts +1 -1
  237. package/dist/observation/ObservationOptical.d.ts +1 -1
  238. package/dist/observation/ObservationOptical.js +1 -1
  239. package/dist/observation/ObservationOptical.js.map +1 -1
  240. package/dist/observation/ObservationRadar.d.ts +1 -1
  241. package/dist/observation/ObservationRadar.js +1 -1
  242. package/dist/observation/ObservationRadar.js.map +1 -1
  243. package/dist/observation/ObservationUtils.d.ts +3 -1
  244. package/dist/observation/ObservationUtils.js +15 -1
  245. package/dist/observation/ObservationUtils.js.map +1 -1
  246. package/dist/observation/RAE.d.ts +111 -0
  247. package/dist/observation/RAE.js +215 -0
  248. package/dist/observation/RAE.js.map +1 -0
  249. package/dist/observation/RadecGeocentric.d.ts +111 -0
  250. package/dist/observation/RadecGeocentric.js +169 -0
  251. package/dist/observation/RadecGeocentric.js.map +1 -0
  252. package/dist/observation/RadecTopocentric.d.ts +123 -0
  253. package/dist/observation/RadecTopocentric.js +196 -0
  254. package/dist/observation/RadecTopocentric.js.map +1 -0
  255. package/dist/observation/index.d.ts +26 -0
  256. package/dist/observation/index.js +27 -0
  257. package/dist/observation/index.js.map +1 -0
  258. package/dist/operations/BoxMuller.d.ts +1 -1
  259. package/dist/operations/BoxMuller.js +1 -1
  260. package/dist/operations/BoxMuller.js.map +1 -1
  261. package/dist/operations/EulerAngles.d.ts +1 -1
  262. package/dist/operations/EulerAngles.js +1 -1
  263. package/dist/operations/EulerAngles.js.map +1 -1
  264. package/dist/operations/Matrix.d.ts +170 -0
  265. package/dist/operations/Matrix.js +405 -0
  266. package/dist/operations/Matrix.js.map +1 -0
  267. package/dist/operations/Quaternion.d.ts +1 -1
  268. package/dist/operations/Quaternion.js +1 -1
  269. package/dist/operations/Quaternion.js.map +1 -1
  270. package/dist/operations/Random.d.ts +40 -0
  271. package/dist/operations/Random.js +50 -0
  272. package/dist/operations/Random.js.map +1 -0
  273. package/dist/operations/RandomGaussianSource.d.ts +1 -1
  274. package/dist/operations/RandomGaussianSource.js +1 -1
  275. package/dist/operations/RandomGaussianSource.js.map +1 -1
  276. package/dist/operations/Vector.d.ts +262 -0
  277. package/dist/operations/Vector.js +415 -0
  278. package/dist/operations/Vector.js.map +1 -0
  279. package/dist/operations/Vector3D.d.ts +86 -0
  280. package/dist/operations/Vector3D.js +241 -0
  281. package/dist/operations/Vector3D.js.map +1 -0
  282. package/dist/operations/operations.d.ts +26 -0
  283. package/dist/operations/operations.js +27 -0
  284. package/dist/operations/operations.js.map +1 -0
  285. package/dist/optimize/ChebyshevCompressor.js +1 -1
  286. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  287. package/dist/optimize/PolynomialRegression.js +1 -1
  288. package/dist/optimize/PolynomialRegression.js.map +1 -1
  289. package/dist/optimize/SimplexEntry.js +1 -1
  290. package/dist/optimize/SimplexEntry.js.map +1 -1
  291. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +1 -1
  292. package/dist/orbit_determination/BatchLeastSquaresOD.js +1 -1
  293. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  294. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +1 -1
  295. package/dist/orbit_determination/GibbsIOD.d.ts +1 -1
  296. package/dist/orbit_determination/GibbsIOD.js +1 -1
  297. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  298. package/dist/orbit_determination/GoodingIOD.d.ts +1 -1
  299. package/dist/orbit_determination/GoodingIOD.js +1 -1
  300. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  301. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +1 -1
  302. package/dist/orbit_determination/HerrickGibbsIOD.js +1 -1
  303. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
  304. package/dist/orbit_determination/LambertIOD.d.ts +1 -1
  305. package/dist/orbit_determination/LambertIOD.js +1 -1
  306. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  307. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +1 -1
  308. package/dist/orbit_determination/ModifiedGoodingIOD.js +1 -1
  309. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  310. package/dist/orbit_determination/index.d.ts +7 -0
  311. package/dist/orbit_determination/index.js +8 -0
  312. package/dist/orbit_determination/index.js.map +1 -0
  313. package/dist/propagator/KeplerPropagator.d.ts +1 -1
  314. package/dist/propagator/KeplerPropagator.js +1 -1
  315. package/dist/propagator/KeplerPropagator.js.map +1 -1
  316. package/dist/propagator/Propagator.d.ts +1 -1
  317. package/dist/propagator/Propagator.js +1 -1
  318. package/dist/propagator/Propagator.js.map +1 -1
  319. package/dist/propagator/RkCheckpoint.d.ts +1 -1
  320. package/dist/propagator/RkResult.d.ts +1 -1
  321. package/dist/propagator/RungeKutta4Propagator.d.ts +1 -1
  322. package/dist/propagator/RungeKutta4Propagator.js +1 -1
  323. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  324. package/dist/propagator/RungeKuttaAdaptive.d.ts +1 -1
  325. package/dist/propagator/RungeKuttaAdaptive.js +1 -1
  326. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  327. package/dist/propagator/Sgp4Propagator.d.ts +1 -1
  328. package/dist/sgp4/index.d.ts +23 -0
  329. package/dist/sgp4/index.js +24 -0
  330. package/dist/sgp4/index.js.map +1 -0
  331. package/dist/sgp4/sgp4-error.d.ts +22 -0
  332. package/dist/sgp4/sgp4-error.js +44 -0
  333. package/dist/sgp4/sgp4-error.js.map +1 -0
  334. package/dist/sgp4/sgp4.d.ts +102 -0
  335. package/dist/sgp4/sgp4.js +3167 -0
  336. package/dist/sgp4/sgp4.js.map +1 -0
  337. package/dist/smoothing/ExponentialSmoothing.d.ts +1 -1
  338. package/dist/time/Epoch.d.ts +44 -0
  339. package/dist/time/Epoch.js +109 -0
  340. package/dist/time/Epoch.js.map +1 -0
  341. package/dist/time/EpochGPS.d.ts +42 -0
  342. package/dist/time/EpochGPS.js +70 -0
  343. package/dist/time/EpochGPS.js.map +1 -0
  344. package/dist/time/EpochTAI.d.ts +26 -0
  345. package/dist/time/EpochTAI.js +27 -0
  346. package/dist/time/EpochTAI.js.map +1 -0
  347. package/dist/time/EpochTDB.d.ts +26 -0
  348. package/dist/time/EpochTDB.js +27 -0
  349. package/dist/time/EpochTDB.js.map +1 -0
  350. package/dist/time/EpochTT.d.ts +26 -0
  351. package/dist/time/EpochTT.js +27 -0
  352. package/dist/time/EpochTT.js.map +1 -0
  353. package/dist/time/EpochUTC.d.ts +59 -0
  354. package/dist/time/EpochUTC.js +137 -0
  355. package/dist/time/EpochUTC.js.map +1 -0
  356. package/dist/time/EpochWindow.d.ts +28 -0
  357. package/dist/time/EpochWindow.js +31 -0
  358. package/dist/time/EpochWindow.js.map +1 -0
  359. package/dist/time/TimeStamped.d.ts +43 -0
  360. package/dist/time/TimeStamped.js +46 -0
  361. package/dist/time/TimeStamped.js.map +1 -0
  362. package/dist/time/index.d.ts +30 -0
  363. package/dist/time/index.js +31 -0
  364. package/dist/time/index.js.map +1 -0
  365. package/dist/transforms/TransformCache.d.ts +27 -0
  366. package/dist/transforms/TransformCache.js +41 -0
  367. package/dist/transforms/TransformCache.js.map +1 -0
  368. package/dist/transforms/conversions.d.ts +63 -0
  369. package/dist/transforms/conversions.js +88 -0
  370. package/dist/transforms/conversions.js.map +1 -0
  371. package/dist/transforms/index.d.ts +1 -0
  372. package/dist/transforms/index.js +1 -0
  373. package/dist/transforms/index.js.map +1 -1
  374. package/dist/transforms/transforms.d.ts +166 -2
  375. package/dist/transforms/transforms.js +372 -1
  376. package/dist/transforms/transforms.js.map +1 -1
  377. package/dist/types/types.d.ts +674 -2
  378. package/dist/types/types.js +36 -0
  379. package/dist/types/types.js.map +1 -1
  380. package/dist/utils/constants.d.ts +80 -0
  381. package/dist/utils/constants.js +87 -0
  382. package/dist/utils/constants.js.map +1 -0
  383. package/dist/utils/functions.d.ts +228 -0
  384. package/dist/utils/functions.js +476 -0
  385. package/dist/utils/functions.js.map +1 -1
  386. package/dist/utils/index.d.ts +3 -1
  387. package/dist/utils/index.js +3 -1
  388. package/dist/utils/index.js.map +1 -1
  389. package/dist/utils/jacobian.d.ts +1 -1
  390. package/dist/utils/jacobian.js +1 -1
  391. package/dist/utils/jacobian.js.map +1 -1
  392. package/dist/utils/linearDistance.d.ts +8 -0
  393. package/dist/utils/linearDistance.js +10 -0
  394. package/dist/utils/linearDistance.js.map +1 -0
  395. package/package.json +4 -7
  396. package/src/body/Celestial.ts +134 -0
  397. package/src/body/Earth.ts +260 -0
  398. package/src/body/Moon.ts +556 -0
  399. package/src/body/NutationAngles.ts +40 -0
  400. package/src/body/PrecessionAngles.ts +31 -0
  401. package/src/body/Sun.ts +669 -0
  402. package/src/body/index.ts +27 -0
  403. package/src/body/suncalc.LICENSE.md +18 -0
  404. package/src/coordinate/ClassicalElements.ts +326 -0
  405. package/src/coordinate/EquinoctialElements.ts +189 -0
  406. package/src/coordinate/FormatTle.ts +214 -0
  407. package/src/coordinate/Geodetic.ts +186 -0
  408. package/src/coordinate/Hill.ts +1 -1
  409. package/src/coordinate/ITRF.ts +146 -0
  410. package/src/coordinate/J2000.ts +130 -0
  411. package/src/coordinate/RIC.ts +87 -0
  412. package/src/coordinate/RelativeState.ts +101 -0
  413. package/src/coordinate/StateVector.ts +122 -0
  414. package/src/coordinate/TEME.ts +97 -0
  415. package/src/coordinate/Tle.ts +1024 -0
  416. package/src/coordinate/index.ts +12 -0
  417. package/src/coordinate/tle-format-data.ts +47 -0
  418. package/src/covariance/CovarianceSample.ts +1 -1
  419. package/src/covariance/StateCovariance.ts +1 -1
  420. package/src/data/DataHandler.ts +88 -0
  421. package/src/data/values/Egm96Data.ts +75 -0
  422. package/src/data/values/HpAtmosphereData.ts +76 -0
  423. package/src/data/values/HpAtmosphereResult.ts +41 -0
  424. package/src/data/values/Iau1980Data.ts +63 -0
  425. package/src/data/values/LeapSecond.ts +37 -0
  426. package/src/data/values/LeapSecondData.ts +113 -0
  427. package/src/data/values/egm96.ts +728 -0
  428. package/src/data/values/hpAtmosphere.ts +79 -0
  429. package/src/data/values/iau1980.ts +32 -0
  430. package/src/enums/AngularDiameterMethod.ts +28 -0
  431. package/src/enums/AngularDistanceMethod.ts +28 -0
  432. package/src/enums/OrbitRegime.ts +31 -0
  433. package/src/enums/PassType.ts +29 -0
  434. package/src/enums/Sgp4OpsMode.ts +27 -0
  435. package/src/enums/index.ts +5 -0
  436. package/src/force/AtmosphericDrag.ts +1 -1
  437. package/src/force/EarthGravity.ts +1 -1
  438. package/src/force/Force.ts +1 -1
  439. package/src/force/ForceModel.ts +1 -1
  440. package/src/force/Gravity.ts +1 -1
  441. package/src/force/SolarRadiationPressure.ts +1 -1
  442. package/src/force/ThirdBodyGravity.ts +1 -1
  443. package/src/force/Thrust.ts +1 -1
  444. package/src/interfaces/BaseObjectParams.ts +33 -0
  445. package/src/interfaces/ClassicalElementsParams.ts +35 -0
  446. package/src/interfaces/EquinoctialElementsParams.ts +37 -0
  447. package/src/interfaces/GroundPositionParams.ts +30 -0
  448. package/src/interfaces/OmmFormat.ts +63 -0
  449. package/src/interfaces/OptionsParams.ts +3 -0
  450. package/src/interfaces/RfSensorParams.ts +1 -1
  451. package/src/interfaces/SatelliteParams.ts +20 -0
  452. package/src/interfaces/SensorParams.ts +39 -0
  453. package/src/interfaces/StarObjectParams.ts +11 -0
  454. package/src/interfaces/TimeVariables.ts +7 -0
  455. package/src/interfaces/index.ts +8 -0
  456. package/src/interpolator/ChebyshevCoefficients.ts +1 -1
  457. package/src/interpolator/ChebyshevInterpolator.ts +1 -1
  458. package/src/interpolator/CubicSpline.ts +1 -1
  459. package/src/interpolator/CubicSplineInterpolator.ts +1 -1
  460. package/src/interpolator/Interpolator.ts +1 -1
  461. package/src/interpolator/LagrangeInterpolator.ts +1 -1
  462. package/src/interpolator/StateInterpolator.ts +1 -1
  463. package/src/interpolator/VerletBlendInterpolator.ts +1 -1
  464. package/src/main.ts +11 -3
  465. package/src/maneuver/TwoBurnOrbitTransfer.ts +1 -1
  466. package/src/maneuver/Waypoint.ts +1 -1
  467. package/src/objects/BaseObject.ts +171 -0
  468. package/src/objects/DetailedSatellite.ts +5 -3
  469. package/src/objects/DetailedSensor.ts +2 -1
  470. package/src/objects/GroundObject.ts +176 -0
  471. package/src/objects/LandObject.ts +2 -1
  472. package/src/objects/Marker.ts +1 -1
  473. package/src/objects/RfSensor.ts +1 -2
  474. package/src/objects/Satellite.ts +552 -0
  475. package/src/objects/Sensor.ts +280 -0
  476. package/src/objects/Star.ts +96 -0
  477. package/src/objects/index.ts +5 -0
  478. package/src/observation/Observation.ts +1 -1
  479. package/src/observation/ObservationOptical.ts +1 -1
  480. package/src/observation/ObservationRadar.ts +1 -1
  481. package/src/observation/ObservationUtils.ts +30 -1
  482. package/src/observation/RAE.ts +262 -0
  483. package/src/observation/RadecGeocentric.ts +206 -0
  484. package/src/observation/RadecTopocentric.ts +241 -0
  485. package/src/observation/index.ts +27 -0
  486. package/src/operations/BoxMuller.ts +1 -1
  487. package/src/operations/EulerAngles.ts +1 -1
  488. package/src/operations/Matrix.ts +473 -0
  489. package/src/operations/Quaternion.ts +1 -1
  490. package/src/operations/Random.ts +54 -0
  491. package/src/operations/RandomGaussianSource.ts +1 -1
  492. package/src/operations/Vector.ts +484 -0
  493. package/src/operations/Vector3D.ts +289 -0
  494. package/src/operations/operations.ts +27 -0
  495. package/src/optimize/ChebyshevCompressor.ts +1 -1
  496. package/src/optimize/PolynomialRegression.ts +1 -1
  497. package/src/optimize/SimplexEntry.ts +1 -1
  498. package/src/orbit_determination/BatchLeastSquaresOD.ts +1 -1
  499. package/src/orbit_determination/BatchLeastSquaresResult.ts +1 -1
  500. package/src/orbit_determination/GibbsIOD.ts +3 -1
  501. package/src/orbit_determination/GoodingIOD.ts +1 -1
  502. package/src/orbit_determination/HerrickGibbsIOD.ts +1 -1
  503. package/src/orbit_determination/LambertIOD.ts +1 -1
  504. package/src/orbit_determination/ModifiedGoodingIOD.ts +1 -1
  505. package/src/orbit_determination/index.ts +7 -0
  506. package/src/propagator/KeplerPropagator.ts +1 -1
  507. package/src/propagator/Propagator.ts +1 -1
  508. package/src/propagator/RkCheckpoint.ts +1 -1
  509. package/src/propagator/RkResult.ts +1 -1
  510. package/src/propagator/RungeKutta4Propagator.ts +1 -1
  511. package/src/propagator/RungeKuttaAdaptive.ts +1 -1
  512. package/src/propagator/Sgp4Propagator.ts +1 -1
  513. package/src/sgp4/index.ts +24 -0
  514. package/src/sgp4/sgp4-error.ts +53 -0
  515. package/src/sgp4/sgp4.LICENSE.md +28 -0
  516. package/src/sgp4/sgp4.ts +3986 -0
  517. package/src/smoothing/ExponentialSmoothing.ts +1 -1
  518. package/src/time/Epoch.ts +128 -0
  519. package/src/time/EpochGPS.ts +76 -0
  520. package/src/time/EpochTAI.ts +27 -0
  521. package/src/time/EpochTDB.ts +27 -0
  522. package/src/time/EpochTT.ts +27 -0
  523. package/src/time/EpochUTC.ts +188 -0
  524. package/src/time/EpochWindow.ts +33 -0
  525. package/src/time/TimeStamped.ts +50 -0
  526. package/src/time/index.ts +31 -0
  527. package/src/transforms/TransformCache.ts +46 -0
  528. package/src/transforms/conversions.ts +98 -0
  529. package/src/transforms/index.ts +1 -0
  530. package/src/transforms/transforms.ts +478 -2
  531. package/src/types/types.ts +721 -2
  532. package/src/utils/constants.ts +113 -0
  533. package/src/utils/functions.ts +562 -0
  534. package/src/utils/index.ts +3 -1
  535. package/src/utils/jacobian.ts +1 -1
  536. package/src/utils/linearDistance.ts +11 -0
@@ -0,0 +1,137 @@
1
+ /**
2
+ * @author Theodore Kruczek.
3
+ * @license MIT
4
+ * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
+ * hereby granted, free of charge, to any person obtaining a copy of this
6
+ * software and associated documentation files (the "Software"), to deal in the
7
+ * Software without restriction, including without limitation the rights to use,
8
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ * the Software, and to permit persons to whom the Software is furnished to do
10
+ * so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ * @copyright (c) 2011-2015, Vladimir Agafonkin
23
+ * @copyright (c) 2022 Robert Gester https://github.com/hypnos3/suncalc3
24
+ * @see suncalc.LICENSE.md
25
+ * Some of the math in this file was originally created by Vladimir Agafonkin.
26
+ * Robert Gester's update was referenced for documentation. There were a couple
27
+ * of bugs in both versions so there will be some differences if you are
28
+ * migrating from either to this library.
29
+ *
30
+ * suncalc is a JavaScript library for calculating sun/moon position and light
31
+ * phases. https://github.com/mourner/suncalc
32
+ * It was reworked and enhanced by Robert Gester.
33
+ *
34
+ * The original suncalc is released under the terms of the BSD 2-Clause License.
35
+ * @see http://aa.quae.nl/en/reken/hemelpositie.html
36
+ * moon calculations are based on formulas from this website
37
+ */
38
+ import { Degrees, Kilometers, RaDec, Radians } from '../main.js';
39
+ import { Vector3D } from '../operations/Vector3D.js';
40
+ import { EpochUTC } from '../time/EpochUTC.js';
41
+ type MoonIlluminationData = {
42
+ fraction: number;
43
+ phase: {
44
+ from: number;
45
+ to: number;
46
+ id: string;
47
+ emoji: string;
48
+ code: string;
49
+ name: string;
50
+ weight: number;
51
+ css: string;
52
+ };
53
+ phaseValue: number;
54
+ angle: number;
55
+ next: {
56
+ value: number;
57
+ date: string;
58
+ type: string;
59
+ newMoon: {
60
+ value: number;
61
+ date: string;
62
+ };
63
+ fullMoon: {
64
+ value: number;
65
+ date: string;
66
+ };
67
+ firstQuarter: {
68
+ value: number;
69
+ date: string;
70
+ };
71
+ thirdQuarter: {
72
+ value: number;
73
+ date: string;
74
+ };
75
+ };
76
+ };
77
+ export declare class Moon {
78
+ private constructor();
79
+ static readonly mu = 4902.799;
80
+ static readonly radiusEquator = 1738;
81
+ static eci(epoch?: EpochUTC): Vector3D<Kilometers>;
82
+ /**
83
+ * Calculates the illumination of the Moon at a given epoch.
84
+ * @param epoch - The epoch in UTC.
85
+ * @param origin - The origin vector. Defaults to the origin vector if not provided.
86
+ * @returns The illumination of the Moon, ranging from 0 to 1.
87
+ */
88
+ static illumination(epoch: EpochUTC, origin?: Vector3D<Kilometers>): number;
89
+ /**
90
+ * Calculates the diameter of the Moon.
91
+ * @param obsPos - The position of the observer.
92
+ * @param moonPos - The position of the Moon.
93
+ * @returns The diameter of the Moon.
94
+ */
95
+ static diameter(obsPos: Vector3D, moonPos: Vector3D): number;
96
+ /**
97
+ * calculations for illumination parameters of the moon, based on
98
+ * http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and Chapter 48 of "Astronomical Algorithms" 2nd
99
+ * edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
100
+ * @param date Date object or timestamp for calculating moon-illumination
101
+ * @returns result object of moon-illumination
102
+ */
103
+ static getMoonIllumination(date: number | Date): MoonIlluminationData;
104
+ static rae(date: Date, lat: Degrees, lon: Degrees): {
105
+ az: Radians;
106
+ el: Radians;
107
+ rng: Kilometers;
108
+ parallacticAngle: Radians;
109
+ };
110
+ /**
111
+ * calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
112
+ * @param date Date object or timestamp for calculating moon rise/set
113
+ * @param lat Latitude of observer in degrees
114
+ * @param lon Longitude of observer in degrees
115
+ * @param isUtc If true, date will be interpreted as UTC
116
+ * @returns result object of moon rise/set
117
+ */
118
+ static getMoonTimes(date: Date, lat: Degrees, lon: Degrees, isUtc?: boolean): {
119
+ rise: Date | null;
120
+ set: Date | null;
121
+ ye: number | null;
122
+ alwaysUp: boolean | null;
123
+ alwaysDown: boolean | null;
124
+ highest: Date | null;
125
+ };
126
+ private static hoursLater_;
127
+ /**
128
+ * Calculates the geocentric ecliptic coordinates of the moon.
129
+ * @param d - The number of days since year 2000.
130
+ * @returns An object containing the right ascension, declination, and
131
+ * distance to the moon.
132
+ */
133
+ static moonCoords(d: number): RaDec;
134
+ private static calculateRiseSetTimes_;
135
+ private static readonly moonCycles_;
136
+ }
137
+ export {};
@@ -0,0 +1,464 @@
1
+ /**
2
+ * @author Theodore Kruczek.
3
+ * @license MIT
4
+ * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
+ * hereby granted, free of charge, to any person obtaining a copy of this
6
+ * software and associated documentation files (the "Software"), to deal in the
7
+ * Software without restriction, including without limitation the rights to use,
8
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ * the Software, and to permit persons to whom the Software is furnished to do
10
+ * so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ * @copyright (c) 2011-2015, Vladimir Agafonkin
23
+ * @copyright (c) 2022 Robert Gester https://github.com/hypnos3/suncalc3
24
+ * @see suncalc.LICENSE.md
25
+ * Some of the math in this file was originally created by Vladimir Agafonkin.
26
+ * Robert Gester's update was referenced for documentation. There were a couple
27
+ * of bugs in both versions so there will be some differences if you are
28
+ * migrating from either to this library.
29
+ *
30
+ * suncalc is a JavaScript library for calculating sun/moon position and light
31
+ * phases. https://github.com/mourner/suncalc
32
+ * It was reworked and enhanced by Robert Gester.
33
+ *
34
+ * The original suncalc is released under the terms of the BSD 2-Clause License.
35
+ * @see http://aa.quae.nl/en/reken/hemelpositie.html
36
+ * moon calculations are based on formulas from this website
37
+ */
38
+ import { AngularDiameterMethod, Celestial } from '../main.js';
39
+ import { Vector3D } from '../operations/Vector3D.js';
40
+ import { EpochUTC } from '../time/EpochUTC.js';
41
+ import { DEG2RAD, MS_PER_DAY } from '../utils/constants.js';
42
+ import { angularDiameter } from '../utils/functions.js';
43
+ import { Earth } from './Earth.js';
44
+ import { Sun } from './Sun.js';
45
+ // / Moon metrics and operations.
46
+ export class Moon {
47
+ constructor() {
48
+ // disable constructor
49
+ }
50
+ // / Moon gravitational parameter _(km³/s²)_.
51
+ static mu = 4902.799;
52
+ // / Moon equatorial radius _(km)_.
53
+ static radiusEquator = 1738.0;
54
+ // / Calculate the Moon's ECI position _(km)_ for a given UTC [epoch].
55
+ static eci(epoch = EpochUTC.fromDateTime(new Date())) {
56
+ const jc = epoch.toJulianCenturies();
57
+ const dtr = DEG2RAD;
58
+ const lamEcl = 218.32 +
59
+ 481267.8813 * jc +
60
+ 6.29 * Math.sin((134.9 + 477198.85 * jc) * dtr) -
61
+ 1.27 * Math.sin((259.2 - 413335.38 * jc) * dtr) +
62
+ 0.66 * Math.sin((235.7 + 890534.23 * jc) * dtr) +
63
+ 0.21 * Math.sin((269.9 + 954397.7 * jc) * dtr) -
64
+ 0.19 * Math.sin((357.5 + 35999.05 * jc) * dtr) -
65
+ 0.11 * Math.sin((186.6 + 966404.05 * jc) * dtr);
66
+ const phiEcl = 5.13 * Math.sin((93.3 + 483202.03 * jc) * dtr) +
67
+ 0.28 * Math.sin((228.2 + 960400.87 * jc) * dtr) -
68
+ 0.28 * Math.sin((318.3 + 6003.18 * jc) * dtr) -
69
+ 0.17 * Math.sin((217.6 - 407332.2 * jc) * dtr);
70
+ const pllx = 0.9508 +
71
+ 0.0518 * Math.cos((134.9 + 477198.85 * jc) * dtr) +
72
+ 0.0095 * Math.cos((259.2 - 413335.38 * jc) * dtr) +
73
+ 0.0078 * Math.cos((235.7 + 890534.23 * jc) * dtr) +
74
+ 0.0028 * Math.cos((269.9 + 954397.7 * jc) * dtr);
75
+ const obq = 23.439291 - 0.0130042 * jc;
76
+ const rMag = 1 / Math.sin(pllx * dtr);
77
+ const r = new Vector3D(rMag * Math.cos(phiEcl * dtr) * Math.cos(lamEcl * dtr), rMag *
78
+ (Math.cos(obq * dtr) * Math.cos(phiEcl * dtr) * Math.sin(lamEcl * dtr) -
79
+ Math.sin(obq * dtr) * Math.sin(phiEcl * dtr)), rMag *
80
+ (Math.sin(obq * dtr) * Math.cos(phiEcl * dtr) * Math.sin(lamEcl * dtr) +
81
+ Math.cos(obq * dtr) * Math.sin(phiEcl * dtr)));
82
+ const rMOD = r.scale(Earth.radiusEquator);
83
+ const p = Earth.precession(epoch);
84
+ return rMOD
85
+ .rotZ(p.zed)
86
+ .rotY(-p.theta)
87
+ .rotZ(p.zeta);
88
+ }
89
+ /**
90
+ * Calculates the illumination of the Moon at a given epoch.
91
+ * @param epoch - The epoch in UTC.
92
+ * @param origin - The origin vector. Defaults to the origin vector if not provided.
93
+ * @returns The illumination of the Moon, ranging from 0 to 1.
94
+ */
95
+ static illumination(epoch, origin) {
96
+ const orig = origin ?? Vector3D.origin;
97
+ const sunPos = Sun.position(epoch).subtract(orig);
98
+ const moonPos = this.eci(epoch).subtract(orig);
99
+ const phaseAngle = sunPos.angle(moonPos);
100
+ return 0.5 * (1 - Math.cos(phaseAngle));
101
+ }
102
+ /**
103
+ * Calculates the diameter of the Moon.
104
+ * @param obsPos - The position of the observer.
105
+ * @param moonPos - The position of the Moon.
106
+ * @returns The diameter of the Moon.
107
+ */
108
+ static diameter(obsPos, moonPos) {
109
+ return angularDiameter(this.radiusEquator * 2, obsPos.subtract(moonPos).magnitude(), AngularDiameterMethod.Sphere);
110
+ }
111
+ /**
112
+ * calculations for illumination parameters of the moon, based on
113
+ * http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and Chapter 48 of "Astronomical Algorithms" 2nd
114
+ * edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
115
+ * @param date Date object or timestamp for calculating moon-illumination
116
+ * @returns result object of moon-illumination
117
+ */
118
+ // eslint-disable-next-line max-statements
119
+ static getMoonIllumination(date) {
120
+ const dateValue = date instanceof Date ? date.getTime() : date;
121
+ const lunarDaysMs = 2551442778; // The duration in days of a lunar cycle is 29.53058770576 days.
122
+ const firstNewMoon2000 = 947178840000; // first newMoon in the year 2000 2000-01-06 18:14
123
+ const dateObj = new Date(dateValue);
124
+ const d = Sun.date2jSince2000(dateObj);
125
+ const s = Sun.raDec(dateObj);
126
+ const m = Moon.moonCoords(d);
127
+ const sdist = 149598000; // distance from Earth to Sun in km
128
+ const phi = Math.acos(Math.sin(s.dec) * Math.sin(m.dec) + Math.cos(s.dec) * Math.cos(m.dec) * Math.cos(s.ra - m.ra));
129
+ const inc = Math.atan2(sdist * Math.sin(phi), m.dist - sdist * Math.cos(phi));
130
+ const angle = Math.atan2(Math.cos(s.dec) * Math.sin(s.ra - m.ra), Math.sin(s.dec) * Math.cos(m.dec) - Math.cos(s.dec) * Math.sin(m.dec) * Math.cos(s.ra - m.ra));
131
+ const phaseValue = 0.5 + (0.5 * inc * (angle < 0 ? -1 : 1)) / Math.PI;
132
+ /*
133
+ * calculates the difference in ms between the sirst fullMoon 2000 and given
134
+ * Date
135
+ */
136
+ const diffBase = dateValue - firstNewMoon2000;
137
+ // Calculate modulus to drop completed cycles
138
+ let cycleModMs = diffBase % lunarDaysMs;
139
+ // If negative number (date before new moon 2000) add lunarDaysMs
140
+ if (cycleModMs < 0) {
141
+ cycleModMs += lunarDaysMs;
142
+ }
143
+ const nextNewMoon = lunarDaysMs - cycleModMs + dateValue;
144
+ let nextFullMoon = lunarDaysMs / 2 - cycleModMs + dateValue;
145
+ if (nextFullMoon < dateValue) {
146
+ nextFullMoon += lunarDaysMs;
147
+ }
148
+ const quater = lunarDaysMs / 4;
149
+ let nextFirstQuarter = quater - cycleModMs + dateValue;
150
+ if (nextFirstQuarter < dateValue) {
151
+ nextFirstQuarter += lunarDaysMs;
152
+ }
153
+ let nextThirdQuarter = lunarDaysMs - quater - cycleModMs + dateValue;
154
+ if (nextThirdQuarter < dateValue) {
155
+ nextThirdQuarter += lunarDaysMs;
156
+ }
157
+ /*
158
+ * Calculate the fraction of the moon cycle const currentfrac = cycleModMs /
159
+ * lunarDaysMs;
160
+ */
161
+ const next = Math.min(nextNewMoon, nextFirstQuarter, nextFullMoon, nextThirdQuarter);
162
+ // eslint-disable-next-line init-declarations
163
+ let phase = null;
164
+ for (const moonCycle of Moon.moonCycles_) {
165
+ if (phaseValue >= moonCycle.from && phaseValue <= moonCycle.to) {
166
+ phase = moonCycle;
167
+ break;
168
+ }
169
+ }
170
+ if (!phase) {
171
+ throw new Error('Moon phase not found');
172
+ }
173
+ let type = '';
174
+ if (next === nextNewMoon) {
175
+ type = 'newMoon';
176
+ }
177
+ else if (next === nextFirstQuarter) {
178
+ type = 'firstQuarter';
179
+ }
180
+ else if (next === nextFullMoon) {
181
+ type = 'fullMoon';
182
+ }
183
+ else {
184
+ type = 'thirdQuarter';
185
+ }
186
+ return {
187
+ fraction: (1 + Math.cos(inc)) / 2,
188
+ phase,
189
+ phaseValue,
190
+ angle,
191
+ next: {
192
+ value: next,
193
+ date: new Date(next).toISOString(),
194
+ type,
195
+ newMoon: {
196
+ value: nextNewMoon,
197
+ date: new Date(nextNewMoon).toISOString(),
198
+ },
199
+ fullMoon: {
200
+ value: nextFullMoon,
201
+ date: new Date(nextFullMoon).toISOString(),
202
+ },
203
+ firstQuarter: {
204
+ value: nextFirstQuarter,
205
+ date: new Date(nextFirstQuarter).toISOString(),
206
+ },
207
+ thirdQuarter: {
208
+ value: nextThirdQuarter,
209
+ date: new Date(nextThirdQuarter).toISOString(),
210
+ },
211
+ },
212
+ };
213
+ }
214
+ static rae(date, lat, lon) {
215
+ const lw = (DEG2RAD * -lon);
216
+ const phi = (DEG2RAD * lat);
217
+ const d = Sun.date2jSince2000(date);
218
+ const c = Moon.moonCoords(d);
219
+ const H = Sun.siderealTime(d, lw) - c.ra;
220
+ let h = Celestial.elevation(H, phi, c.dec);
221
+ /*
222
+ * formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus
223
+ * (Willmann-Bell, Richmond) 1998.
224
+ */
225
+ const pa = Math.atan2(Math.sin(H), Math.tan(phi) * Math.cos(c.dec) - Math.sin(c.dec) * Math.cos(H));
226
+ h = (h + Celestial.atmosphericRefraction(h)); // altitude correction for refraction
227
+ return {
228
+ az: Celestial.azimuth(H, phi, c.dec),
229
+ el: h,
230
+ rng: c.dist,
231
+ parallacticAngle: pa,
232
+ };
233
+ }
234
+ /**
235
+ * calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
236
+ * @param date Date object or timestamp for calculating moon rise/set
237
+ * @param lat Latitude of observer in degrees
238
+ * @param lon Longitude of observer in degrees
239
+ * @param isUtc If true, date will be interpreted as UTC
240
+ * @returns result object of moon rise/set
241
+ */
242
+ static getMoonTimes(date, lat, lon, isUtc = false) {
243
+ // Clone the date so we don't change the original
244
+ const date_ = new Date(date);
245
+ if (isUtc) {
246
+ date_.setUTCHours(0, 0, 0, 0);
247
+ }
248
+ else {
249
+ date_.setHours(0, 0, 0, 0);
250
+ }
251
+ const { rise, set, ye } = Moon.calculateRiseSetTimes_(date_, lat, lon);
252
+ const result = {
253
+ rise: null,
254
+ set: null,
255
+ ye: null,
256
+ alwaysUp: null,
257
+ alwaysDown: null,
258
+ highest: null,
259
+ };
260
+ if (rise) {
261
+ result.rise = new Date(Moon.hoursLater_(date_, rise));
262
+ }
263
+ if (set) {
264
+ result.set = new Date(Moon.hoursLater_(date_, set));
265
+ }
266
+ if (!rise && !set) {
267
+ if (ye > 0) {
268
+ result.alwaysUp = true;
269
+ result.alwaysDown = false;
270
+ }
271
+ else {
272
+ result.alwaysUp = false;
273
+ result.alwaysDown = true;
274
+ }
275
+ }
276
+ else if (rise && set) {
277
+ result.alwaysUp = false;
278
+ result.alwaysDown = false;
279
+ result.highest = new Date(Moon.hoursLater_(date_, Math.min(rise, set) + Math.abs(set - rise) / 2));
280
+ }
281
+ else {
282
+ result.alwaysUp = false;
283
+ result.alwaysDown = false;
284
+ }
285
+ return result;
286
+ }
287
+ static hoursLater_(date, h) {
288
+ return new Date(date.getTime() + (h * MS_PER_DAY) / 24);
289
+ }
290
+ /**
291
+ * Calculates the geocentric ecliptic coordinates of the moon.
292
+ * @param d - The number of days since year 2000.
293
+ * @returns An object containing the right ascension, declination, and
294
+ * distance to the moon.
295
+ */
296
+ static moonCoords(d) {
297
+ const L = DEG2RAD * (218.316 + 13.176396 * d); // ecliptic longitude
298
+ const M = DEG2RAD * (134.963 + 13.064993 * d); // mean anomaly
299
+ const F = DEG2RAD * (93.272 + 13.22935 * d); // mean distance
300
+ const l = L + DEG2RAD * 6.289 * Math.sin(M); // longitude
301
+ const b = DEG2RAD * 5.128 * Math.sin(F); // latitude
302
+ const dt = 385001 - 20905 * Math.cos(M); // distance to the moon in km
303
+ return {
304
+ ra: Celestial.rightAscension(l, b),
305
+ dec: Celestial.declination(l, b),
306
+ dist: dt,
307
+ };
308
+ }
309
+ static calculateRiseSetTimes_(t, lat, lon) {
310
+ const hc = 0.133 * DEG2RAD;
311
+ let h0 = Moon.rae(t, lat, lon).el - hc;
312
+ let h1 = 0;
313
+ let h2 = 0;
314
+ let rise = 0;
315
+ let set = 0;
316
+ let a = 0;
317
+ let b = 0;
318
+ let xe = 0;
319
+ let ye = 0;
320
+ let d = 0;
321
+ let roots = 0;
322
+ let x1 = 0;
323
+ let x2 = 0;
324
+ let dx = 0;
325
+ /*
326
+ * go in 2-hour chunks, each time seeing if a 3-point quadratic curve
327
+ * crosses zero (which means rise or set)
328
+ */
329
+ for (let i = 1; i <= 24; i += 2) {
330
+ h1 = Moon.rae(Moon.hoursLater_(t, i), lat, lon).el - hc;
331
+ h2 = Moon.rae(Moon.hoursLater_(t, i + 1), lat, lon).el - hc;
332
+ a = (h0 + h2) / 2 - h1;
333
+ b = (h2 - h0) / 2;
334
+ xe = -b / (2 * a);
335
+ ye = (a * xe + b) * xe + h1;
336
+ d = b * b - 4 * a * h1;
337
+ roots = 0;
338
+ if (d >= 0) {
339
+ dx = Math.sqrt(d) / (Math.abs(a) * 2);
340
+ x1 = xe - dx;
341
+ x2 = xe + dx;
342
+ if (Math.abs(x1) <= 1) {
343
+ roots++;
344
+ }
345
+ if (Math.abs(x2) <= 1) {
346
+ roots++;
347
+ }
348
+ if (x1 < -1) {
349
+ x1 = x2;
350
+ }
351
+ }
352
+ if (roots === 1) {
353
+ if (h0 < 0) {
354
+ rise = i + x1;
355
+ }
356
+ else {
357
+ set = i + x1;
358
+ }
359
+ }
360
+ else if (roots === 2) {
361
+ rise = i + (ye < 0 ? x2 : x1);
362
+ set = i + (ye < 0 ? x1 : x2);
363
+ }
364
+ if (rise && set) {
365
+ break;
366
+ }
367
+ h0 = h2;
368
+ }
369
+ return { rise, set, ye };
370
+ }
371
+ static moonCycles_ = [
372
+ {
373
+ from: 0,
374
+ to: 0.033863193308711,
375
+ id: 'newMoon',
376
+ emoji: '🌚',
377
+ code: ':new_moon_with_face:',
378
+ name: 'New Moon',
379
+ weight: 1,
380
+ css: 'wi-moon-new',
381
+ },
382
+ {
383
+ from: 0.033863193308711,
384
+ to: 0.216136806691289,
385
+ id: 'waxingCrescentMoon',
386
+ emoji: '🌒',
387
+ code: ':waxing_crescent_moon:',
388
+ name: 'Waxing Crescent',
389
+ weight: 6.3825,
390
+ css: 'wi-moon-wax-cres',
391
+ },
392
+ {
393
+ from: 0.216136806691289,
394
+ to: 0.283863193308711,
395
+ id: 'firstQuarterMoon',
396
+ emoji: '🌓',
397
+ code: ':first_quarter_moon:',
398
+ name: 'First Quarter',
399
+ weight: 1,
400
+ css: 'wi-moon-first-quart',
401
+ },
402
+ {
403
+ from: 0.283863193308711,
404
+ to: 0.466136806691289,
405
+ id: 'waxingGibbousMoon',
406
+ emoji: '🌔',
407
+ code: ':waxing_gibbous_moon:',
408
+ name: 'Waxing Gibbous',
409
+ weight: 6.3825,
410
+ css: 'wi-moon-wax-gibb',
411
+ },
412
+ {
413
+ from: 0.466136806691289,
414
+ to: 0.533863193308711,
415
+ id: 'fullMoon',
416
+ emoji: '🌝',
417
+ code: ':full_moon_with_face:',
418
+ name: 'Full Moon',
419
+ weight: 1,
420
+ css: 'wi-moon-full',
421
+ },
422
+ {
423
+ from: 0.533863193308711,
424
+ to: 0.716136806691289,
425
+ id: 'waningGibbousMoon',
426
+ emoji: '🌖',
427
+ code: ':waning_gibbous_moon:',
428
+ name: 'Waning Gibbous',
429
+ weight: 6.3825,
430
+ css: 'wi-moon-wan-gibb',
431
+ },
432
+ {
433
+ from: 0.716136806691289,
434
+ to: 0.783863193308711,
435
+ id: 'thirdQuarterMoon',
436
+ emoji: '🌗',
437
+ code: ':last_quarter_moon:',
438
+ name: 'third Quarter',
439
+ weight: 1,
440
+ css: 'wi-moon-third-quart',
441
+ },
442
+ {
443
+ from: 0.783863193308711,
444
+ to: 0.966136806691289,
445
+ id: 'waningCrescentMoon',
446
+ emoji: '🌘',
447
+ code: ':waning_crescent_moon:',
448
+ name: 'Waning Crescent',
449
+ weight: 6.3825,
450
+ css: 'wi-moon-wan-cres',
451
+ },
452
+ {
453
+ from: 0.966136806691289,
454
+ to: 1,
455
+ id: 'newMoon',
456
+ emoji: '🌚',
457
+ code: ':new_moon_with_face:',
458
+ name: 'New Moon',
459
+ weight: 1,
460
+ css: 'wi-moon-new',
461
+ },
462
+ ];
463
+ }
464
+ //# sourceMappingURL=Moon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Moon.js","sourceRoot":"","sources":["../../src/body/Moon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @author Theodore Kruczek.
3
+ * @license MIT
4
+ * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
+ * hereby granted, free of charge, to any person obtaining a copy of this
6
+ * software and associated documentation files (the "Software"), to deal in the
7
+ * Software without restriction, including without limitation the rights to use,
8
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ * the Software, and to permit persons to whom the Software is furnished to do
10
+ * so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ import { Radians } from '../main.js';
24
+ /** Represents the nutation angles. */
25
+ export type NutationAngles = {
26
+ /** The nutation in longitude (Δψ) in radians. */
27
+ dPsi: Radians;
28
+ /** The nutation in obliquity (Δε) in radians. */
29
+ dEps: Radians;
30
+ /** The mean obliquity of the ecliptic (ε₀) in radians. */
31
+ mEps: Radians;
32
+ /** The true obliquity of the ecliptic (ε) in radians. */
33
+ eps: Radians;
34
+ /** The equation of the equinoxes (ΔΔt) in radians. */
35
+ eqEq: Radians;
36
+ /** The Greenwich Apparent Sidereal Time (GAST) in radians. */
37
+ gast: Radians;
38
+ };