ootk 4.0.9 → 5.1.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 (583) hide show
  1. package/README.md +0 -15
  2. package/dist/body/Celestial.d.ts +96 -0
  3. package/dist/body/Celestial.js +124 -0
  4. package/dist/body/Celestial.js.map +1 -0
  5. package/dist/body/Earth.d.ts +68 -0
  6. package/dist/body/Earth.js +198 -0
  7. package/dist/body/Earth.js.map +1 -0
  8. package/dist/body/Moon.d.ts +137 -0
  9. package/dist/body/Moon.js +464 -0
  10. package/dist/body/Moon.js.map +1 -0
  11. package/dist/body/NutationAngles.d.ts +38 -0
  12. package/dist/body/NutationAngles.js +24 -0
  13. package/dist/body/NutationAngles.js.map +1 -0
  14. package/dist/body/PrecessionAngles.d.ts +29 -0
  15. package/dist/body/PrecessionAngles.js +24 -0
  16. package/dist/body/PrecessionAngles.js.map +1 -0
  17. package/dist/body/Sun.d.ts +301 -0
  18. package/dist/body/Sun.js +544 -0
  19. package/dist/body/Sun.js.map +1 -0
  20. package/dist/body/index.d.ts +26 -0
  21. package/dist/body/index.js +27 -0
  22. package/dist/body/index.js.map +1 -0
  23. package/dist/coordinate/ClassicalElements.d.ts +132 -0
  24. package/dist/coordinate/ClassicalElements.js +279 -0
  25. package/dist/coordinate/ClassicalElements.js.map +1 -0
  26. package/dist/coordinate/EquinoctialElements.d.ts +114 -0
  27. package/dist/coordinate/EquinoctialElements.js +172 -0
  28. package/dist/coordinate/EquinoctialElements.js.map +1 -0
  29. package/dist/coordinate/FormatTle.d.ts +95 -0
  30. package/dist/coordinate/FormatTle.js +184 -0
  31. package/dist/coordinate/FormatTle.js.map +1 -0
  32. package/dist/coordinate/Geodetic.d.ts +110 -0
  33. package/dist/coordinate/Geodetic.js +163 -0
  34. package/dist/coordinate/Geodetic.js.map +1 -0
  35. package/dist/coordinate/Hill.d.ts +2 -2
  36. package/dist/coordinate/Hill.js +2 -2
  37. package/dist/coordinate/Hill.js.map +1 -1
  38. package/dist/coordinate/ITRF.d.ts +75 -0
  39. package/dist/coordinate/ITRF.js +134 -0
  40. package/dist/coordinate/ITRF.js.map +1 -0
  41. package/dist/coordinate/J2000.d.ts +65 -0
  42. package/dist/coordinate/J2000.js +120 -0
  43. package/dist/coordinate/J2000.js.map +1 -0
  44. package/dist/coordinate/RIC.d.ts +64 -0
  45. package/dist/coordinate/RIC.js +79 -0
  46. package/dist/coordinate/RIC.js.map +1 -0
  47. package/dist/coordinate/RelativeState.d.ts +70 -0
  48. package/dist/coordinate/RelativeState.js +79 -0
  49. package/dist/coordinate/RelativeState.js.map +1 -0
  50. package/dist/coordinate/StateVector.d.ts +76 -0
  51. package/dist/coordinate/StateVector.js +97 -0
  52. package/dist/coordinate/StateVector.js.map +1 -0
  53. package/dist/coordinate/TEME.d.ts +57 -0
  54. package/dist/coordinate/TEME.js +89 -0
  55. package/dist/coordinate/TEME.js.map +1 -0
  56. package/dist/coordinate/Tle.d.ts +429 -0
  57. package/dist/coordinate/Tle.js +865 -0
  58. package/dist/coordinate/Tle.js.map +1 -0
  59. package/dist/coordinate/index.d.ts +11 -0
  60. package/dist/coordinate/index.js +11 -0
  61. package/dist/coordinate/index.js.map +1 -1
  62. package/dist/coordinate/tle-format-data.d.ts +41 -0
  63. package/dist/coordinate/tle-format-data.js +46 -0
  64. package/dist/coordinate/tle-format-data.js.map +1 -0
  65. package/dist/covariance/CovarianceSample.d.ts +9 -6
  66. package/dist/covariance/CovarianceSample.js +92 -18
  67. package/dist/covariance/CovarianceSample.js.map +1 -1
  68. package/dist/covariance/StateCovariance.d.ts +2 -2
  69. package/dist/covariance/StateCovariance.js +2 -2
  70. package/dist/covariance/StateCovariance.js.map +1 -1
  71. package/dist/covariance/index.d.ts +2 -0
  72. package/dist/covariance/index.js +3 -0
  73. package/dist/covariance/index.js.map +1 -0
  74. package/dist/data/DataHandler.d.ts +66 -0
  75. package/dist/data/DataHandler.js +80 -0
  76. package/dist/data/DataHandler.js.map +1 -0
  77. package/dist/data/values/Egm96Data.d.ts +37 -0
  78. package/dist/data/values/Egm96Data.js +63 -0
  79. package/dist/data/values/Egm96Data.js.map +1 -0
  80. package/dist/data/values/HpAtmosphereData.d.ts +33 -0
  81. package/dist/data/values/HpAtmosphereData.js +58 -0
  82. package/dist/data/values/HpAtmosphereData.js.map +1 -0
  83. package/dist/data/values/HpAtmosphereResult.d.ts +29 -0
  84. package/dist/data/values/HpAtmosphereResult.js +38 -0
  85. package/dist/data/values/HpAtmosphereResult.js.map +1 -0
  86. package/dist/data/values/Iau1980Data.d.ts +36 -0
  87. package/dist/data/values/Iau1980Data.js +52 -0
  88. package/dist/data/values/Iau1980Data.js.map +1 -0
  89. package/dist/data/values/LeapSecond.d.ts +27 -0
  90. package/dist/data/values/LeapSecond.js +35 -0
  91. package/dist/data/values/LeapSecond.js.map +1 -0
  92. package/dist/data/values/LeapSecondData.d.ts +41 -0
  93. package/dist/data/values/LeapSecondData.js +103 -0
  94. package/dist/data/values/LeapSecondData.js.map +1 -0
  95. package/dist/data/values/egm96.d.ts +24 -0
  96. package/dist/data/values/egm96.js +726 -0
  97. package/dist/data/values/egm96.js.map +1 -0
  98. package/dist/data/values/hpAtmosphere.d.ts +24 -0
  99. package/dist/data/values/hpAtmosphere.js +76 -0
  100. package/dist/data/values/hpAtmosphere.js.map +1 -0
  101. package/dist/data/values/iau1980.d.ts +24 -0
  102. package/dist/data/values/iau1980.js +30 -0
  103. package/dist/data/values/iau1980.js.map +1 -0
  104. package/dist/enums/AngularDiameterMethod.d.ts +27 -0
  105. package/dist/enums/AngularDiameterMethod.js +29 -0
  106. package/dist/enums/AngularDiameterMethod.js.map +1 -0
  107. package/dist/enums/AngularDistanceMethod.d.ts +27 -0
  108. package/dist/enums/AngularDistanceMethod.js +29 -0
  109. package/dist/enums/AngularDistanceMethod.js.map +1 -0
  110. package/dist/enums/OrbitRegime.d.ts +30 -0
  111. package/dist/enums/OrbitRegime.js +32 -0
  112. package/dist/enums/OrbitRegime.js.map +1 -0
  113. package/dist/enums/PassType.d.ts +28 -0
  114. package/dist/enums/PassType.js +30 -0
  115. package/dist/enums/PassType.js.map +1 -0
  116. package/dist/enums/Sgp4OpsMode.d.ts +26 -0
  117. package/dist/enums/Sgp4OpsMode.js +28 -0
  118. package/dist/enums/Sgp4OpsMode.js.map +1 -0
  119. package/dist/enums/index.d.ts +5 -0
  120. package/dist/enums/index.js +5 -0
  121. package/dist/enums/index.js.map +1 -1
  122. package/dist/force/AtmosphericDrag.d.ts +2 -2
  123. package/dist/force/AtmosphericDrag.js +3 -6
  124. package/dist/force/AtmosphericDrag.js.map +1 -1
  125. package/dist/force/EarthGravity.d.ts +2 -2
  126. package/dist/force/EarthGravity.js +2 -2
  127. package/dist/force/EarthGravity.js.map +1 -1
  128. package/dist/force/Force.d.ts +2 -2
  129. package/dist/force/Force.js +1 -1
  130. package/dist/force/ForceModel.d.ts +2 -2
  131. package/dist/force/ForceModel.js +2 -2
  132. package/dist/force/ForceModel.js.map +1 -1
  133. package/dist/force/Gravity.d.ts +2 -2
  134. package/dist/force/Gravity.js +2 -2
  135. package/dist/force/Gravity.js.map +1 -1
  136. package/dist/force/SolarRadiationPressure.d.ts +2 -2
  137. package/dist/force/SolarRadiationPressure.js +2 -2
  138. package/dist/force/SolarRadiationPressure.js.map +1 -1
  139. package/dist/force/ThirdBodyGravity.d.ts +2 -2
  140. package/dist/force/ThirdBodyGravity.js +2 -2
  141. package/dist/force/ThirdBodyGravity.js.map +1 -1
  142. package/dist/force/Thrust.d.ts +2 -2
  143. package/dist/force/Thrust.js +2 -2
  144. package/dist/force/Thrust.js.map +1 -1
  145. package/dist/interfaces/BaseObjectParams.d.ts +31 -0
  146. package/dist/interfaces/BaseObjectParams.js +24 -0
  147. package/dist/interfaces/BaseObjectParams.js.map +1 -0
  148. package/dist/interfaces/ClassicalElementsParams.d.ts +33 -0
  149. package/dist/interfaces/ClassicalElementsParams.js +24 -0
  150. package/dist/interfaces/ClassicalElementsParams.js.map +1 -0
  151. package/dist/interfaces/EquinoctialElementsParams.d.ts +35 -0
  152. package/dist/interfaces/EquinoctialElementsParams.js +24 -0
  153. package/dist/interfaces/EquinoctialElementsParams.js.map +1 -0
  154. package/dist/interfaces/GroundPositionParams.d.ts +28 -0
  155. package/dist/interfaces/GroundPositionParams.js +24 -0
  156. package/dist/interfaces/GroundPositionParams.js.map +1 -0
  157. package/dist/interfaces/OmmFormat.d.ts +62 -0
  158. package/dist/interfaces/OmmFormat.js +2 -0
  159. package/dist/interfaces/OmmFormat.js.map +1 -0
  160. package/dist/interfaces/OptionsParams.d.ts +3 -0
  161. package/dist/interfaces/OptionsParams.js +2 -0
  162. package/dist/interfaces/OptionsParams.js.map +1 -0
  163. package/dist/interfaces/RfSensorParams.d.ts +1 -1
  164. package/dist/interfaces/SatelliteParams.d.ts +18 -0
  165. package/dist/interfaces/SatelliteParams.js +2 -0
  166. package/dist/interfaces/SatelliteParams.js.map +1 -0
  167. package/dist/interfaces/SensorParams.d.ts +38 -0
  168. package/dist/interfaces/SensorParams.js +2 -0
  169. package/dist/interfaces/SensorParams.js.map +1 -0
  170. package/dist/interfaces/StarObjectParams.d.ts +10 -0
  171. package/dist/interfaces/StarObjectParams.js +2 -0
  172. package/dist/interfaces/StarObjectParams.js.map +1 -0
  173. package/dist/interfaces/TimeVariables.d.ts +6 -0
  174. package/dist/interfaces/TimeVariables.js +2 -0
  175. package/dist/interfaces/TimeVariables.js.map +1 -0
  176. package/dist/interfaces/index.d.ts +8 -0
  177. package/dist/interpolator/ChebyshevCoefficients.d.ts +5 -5
  178. package/dist/interpolator/ChebyshevCoefficients.js +2 -2
  179. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  180. package/dist/interpolator/ChebyshevInterpolator.d.ts +3 -3
  181. package/dist/interpolator/ChebyshevInterpolator.js +9 -9
  182. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  183. package/dist/interpolator/CubicSpline.d.ts +2 -2
  184. package/dist/interpolator/CubicSpline.js +1 -1
  185. package/dist/interpolator/CubicSplineInterpolator.d.ts +4 -4
  186. package/dist/interpolator/CubicSplineInterpolator.js +10 -10
  187. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  188. package/dist/interpolator/FieldInterpolator.d.ts +1 -1
  189. package/dist/interpolator/FieldInterpolator.js +1 -1
  190. package/dist/interpolator/Interpolator.d.ts +2 -2
  191. package/dist/interpolator/Interpolator.js +2 -2
  192. package/dist/interpolator/Interpolator.js.map +1 -1
  193. package/dist/interpolator/LagrangeInterpolator.d.ts +7 -7
  194. package/dist/interpolator/LagrangeInterpolator.js +2 -2
  195. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  196. package/dist/interpolator/StateInterpolator.d.ts +2 -2
  197. package/dist/interpolator/StateInterpolator.js +1 -1
  198. package/dist/interpolator/VerletBlendInterpolator.d.ts +2 -2
  199. package/dist/interpolator/VerletBlendInterpolator.js +2 -2
  200. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  201. package/dist/main.d.ts +15 -5
  202. package/dist/main.js +15 -5
  203. package/dist/main.js.map +1 -1
  204. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +2 -2
  205. package/dist/maneuver/TwoBurnOrbitTransfer.js +2 -2
  206. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  207. package/dist/maneuver/Waypoint.d.ts +2 -2
  208. package/dist/maneuver/Waypoint.js +2 -2
  209. package/dist/maneuver/Waypoint.js.map +1 -1
  210. package/dist/objects/BaseObject.d.ts +74 -0
  211. package/dist/objects/BaseObject.js +151 -0
  212. package/dist/objects/BaseObject.js.map +1 -0
  213. package/dist/objects/DetailedSatellite.d.ts +3 -2
  214. package/dist/objects/DetailedSatellite.js +6 -4
  215. package/dist/objects/DetailedSatellite.js.map +1 -1
  216. package/dist/objects/DetailedSensor.d.ts +3 -2
  217. package/dist/objects/DetailedSensor.js +2 -2
  218. package/dist/objects/DetailedSensor.js.map +1 -1
  219. package/dist/objects/GroundObject.d.ts +85 -0
  220. package/dist/objects/GroundObject.js +143 -0
  221. package/dist/objects/GroundObject.js.map +1 -0
  222. package/dist/objects/LandObject.d.ts +3 -2
  223. package/dist/objects/LandObject.js +2 -2
  224. package/dist/objects/LandObject.js.map +1 -1
  225. package/dist/objects/Marker.d.ts +2 -2
  226. package/dist/objects/Marker.js +2 -2
  227. package/dist/objects/Marker.js.map +1 -1
  228. package/dist/objects/RfSensor.d.ts +1 -2
  229. package/dist/objects/RfSensor.js +1 -2
  230. package/dist/objects/RfSensor.js.map +1 -1
  231. package/dist/objects/Satellite.d.ts +226 -0
  232. package/dist/objects/Satellite.js +443 -0
  233. package/dist/objects/Satellite.js.map +1 -0
  234. package/dist/objects/Sensor.d.ts +99 -0
  235. package/dist/objects/Sensor.js +238 -0
  236. package/dist/objects/Sensor.js.map +1 -0
  237. package/dist/objects/Star.d.ts +36 -0
  238. package/dist/objects/Star.js +59 -0
  239. package/dist/objects/Star.js.map +1 -0
  240. package/dist/objects/index.d.ts +5 -0
  241. package/dist/objects/index.js +5 -0
  242. package/dist/objects/index.js.map +1 -1
  243. package/dist/observation/Observation.d.ts +2 -2
  244. package/dist/observation/Observation.js +1 -1
  245. package/dist/observation/ObservationOptical.d.ts +6 -6
  246. package/dist/observation/ObservationOptical.js +9 -9
  247. package/dist/observation/ObservationOptical.js.map +1 -1
  248. package/dist/observation/ObservationRadar.d.ts +6 -6
  249. package/dist/observation/ObservationRadar.js +9 -9
  250. package/dist/observation/ObservationRadar.js.map +1 -1
  251. package/dist/observation/ObservationUtils.d.ts +4 -2
  252. package/dist/observation/ObservationUtils.js +16 -2
  253. package/dist/observation/ObservationUtils.js.map +1 -1
  254. package/dist/observation/PropagatorPairs.d.ts +4 -4
  255. package/dist/observation/PropagatorPairs.js +7 -7
  256. package/dist/observation/PropagatorPairs.js.map +1 -1
  257. package/dist/observation/RAE.d.ts +111 -0
  258. package/dist/observation/RAE.js +214 -0
  259. package/dist/observation/RAE.js.map +1 -0
  260. package/dist/observation/RadecGeocentric.d.ts +111 -0
  261. package/dist/observation/RadecGeocentric.js +169 -0
  262. package/dist/observation/RadecGeocentric.js.map +1 -0
  263. package/dist/observation/RadecTopocentric.d.ts +123 -0
  264. package/dist/observation/RadecTopocentric.js +196 -0
  265. package/dist/observation/RadecTopocentric.js.map +1 -0
  266. package/dist/observation/index.d.ts +26 -0
  267. package/dist/observation/index.js +27 -0
  268. package/dist/observation/index.js.map +1 -0
  269. package/dist/operations/BoxMuller.d.ts +2 -2
  270. package/dist/operations/BoxMuller.js +2 -2
  271. package/dist/operations/BoxMuller.js.map +1 -1
  272. package/dist/operations/EulerAngles.d.ts +2 -2
  273. package/dist/operations/EulerAngles.js +2 -2
  274. package/dist/operations/EulerAngles.js.map +1 -1
  275. package/dist/operations/Matrix.d.ts +170 -0
  276. package/dist/operations/Matrix.js +405 -0
  277. package/dist/operations/Matrix.js.map +1 -0
  278. package/dist/operations/Quaternion.d.ts +7 -7
  279. package/dist/operations/Quaternion.js +2 -2
  280. package/dist/operations/Quaternion.js.map +1 -1
  281. package/dist/operations/Random.d.ts +40 -0
  282. package/dist/operations/Random.js +50 -0
  283. package/dist/operations/Random.js.map +1 -0
  284. package/dist/operations/RandomGaussianSource.d.ts +3 -3
  285. package/dist/operations/RandomGaussianSource.js +5 -5
  286. package/dist/operations/RandomGaussianSource.js.map +1 -1
  287. package/dist/operations/Vector.d.ts +262 -0
  288. package/dist/operations/Vector.js +415 -0
  289. package/dist/operations/Vector.js.map +1 -0
  290. package/dist/operations/Vector3D.d.ts +86 -0
  291. package/dist/operations/Vector3D.js +241 -0
  292. package/dist/operations/Vector3D.js.map +1 -0
  293. package/dist/operations/operations.d.ts +26 -0
  294. package/dist/operations/operations.js +27 -0
  295. package/dist/operations/operations.js.map +1 -0
  296. package/dist/optimize/ChebyshevCompressor.d.ts +3 -3
  297. package/dist/optimize/ChebyshevCompressor.js +8 -8
  298. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  299. package/dist/optimize/DownhillSimplex.d.ts +1 -1
  300. package/dist/optimize/DownhillSimplex.js +1 -1
  301. package/dist/optimize/GoldenSection.d.ts +2 -2
  302. package/dist/optimize/GoldenSection.js +3 -3
  303. package/dist/optimize/PolynomialRegression.d.ts +1 -1
  304. package/dist/optimize/PolynomialRegression.js +2 -2
  305. package/dist/optimize/PolynomialRegression.js.map +1 -1
  306. package/dist/optimize/PolynomicalRegressionResult.d.ts +1 -1
  307. package/dist/optimize/PolynomicalRegressionResult.js +1 -1
  308. package/dist/optimize/SimpleLinearRegression.d.ts +1 -1
  309. package/dist/optimize/SimpleLinearRegression.js +1 -1
  310. package/dist/optimize/SimplexEntry.d.ts +4 -4
  311. package/dist/optimize/SimplexEntry.js +11 -11
  312. package/dist/optimize/SimplexEntry.js.map +1 -1
  313. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +11 -11
  314. package/dist/orbit_determination/BatchLeastSquaresOD.js +2 -2
  315. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  316. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +2 -2
  317. package/dist/orbit_determination/BatchLeastSquaresResult.js +1 -1
  318. package/dist/orbit_determination/GibbsIOD.d.ts +2 -2
  319. package/dist/orbit_determination/GibbsIOD.js +2 -2
  320. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  321. package/dist/orbit_determination/GoodingIOD.d.ts +2 -2
  322. package/dist/orbit_determination/GoodingIOD.js +2 -2
  323. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  324. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +2 -2
  325. package/dist/orbit_determination/HerrickGibbsIOD.js +2 -2
  326. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
  327. package/dist/orbit_determination/LambertIOD.d.ts +2 -2
  328. package/dist/orbit_determination/LambertIOD.js +2 -2
  329. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  330. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +4 -4
  331. package/dist/orbit_determination/ModifiedGoodingIOD.js +2 -2
  332. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  333. package/dist/orbit_determination/index.d.ts +7 -0
  334. package/dist/orbit_determination/index.js +8 -0
  335. package/dist/orbit_determination/index.js.map +1 -0
  336. package/dist/propagator/DormandPrince54Propagator.d.ts +5 -5
  337. package/dist/propagator/DormandPrince54Propagator.js +9 -9
  338. package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
  339. package/dist/propagator/KeplerPropagator.d.ts +6 -6
  340. package/dist/propagator/KeplerPropagator.js +31 -31
  341. package/dist/propagator/KeplerPropagator.js.map +1 -1
  342. package/dist/propagator/Propagator.d.ts +2 -2
  343. package/dist/propagator/Propagator.js +2 -2
  344. package/dist/propagator/Propagator.js.map +1 -1
  345. package/dist/propagator/RkCheckpoint.d.ts +2 -2
  346. package/dist/propagator/RkCheckpoint.js +1 -1
  347. package/dist/propagator/RkResult.d.ts +2 -2
  348. package/dist/propagator/RkResult.js +1 -1
  349. package/dist/propagator/RungeKutta4Propagator.d.ts +3 -3
  350. package/dist/propagator/RungeKutta4Propagator.js +2 -2
  351. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  352. package/dist/propagator/RungeKutta89Propagator.d.ts +5 -5
  353. package/dist/propagator/RungeKutta89Propagator.js +1 -1
  354. package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
  355. package/dist/propagator/RungeKuttaAdaptive.d.ts +4 -4
  356. package/dist/propagator/RungeKuttaAdaptive.js +2 -2
  357. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  358. package/dist/propagator/Sgp4Propagator.d.ts +6 -6
  359. package/dist/propagator/Sgp4Propagator.js +15 -15
  360. package/dist/propagator/Sgp4Propagator.js.map +1 -1
  361. package/dist/sgp4/index.d.ts +23 -0
  362. package/dist/sgp4/index.js +24 -0
  363. package/dist/sgp4/index.js.map +1 -0
  364. package/dist/sgp4/sgp4-error.d.ts +22 -0
  365. package/dist/sgp4/sgp4-error.js +44 -0
  366. package/dist/sgp4/sgp4-error.js.map +1 -0
  367. package/dist/sgp4/sgp4.d.ts +99 -0
  368. package/dist/sgp4/sgp4.js +3164 -0
  369. package/dist/sgp4/sgp4.js.map +1 -0
  370. package/dist/smoothing/ExponentialSmoothing.d.ts +2 -2
  371. package/dist/smoothing/ExponentialSmoothing.js +1 -1
  372. package/dist/time/Epoch.d.ts +44 -0
  373. package/dist/time/Epoch.js +109 -0
  374. package/dist/time/Epoch.js.map +1 -0
  375. package/dist/time/EpochGPS.d.ts +42 -0
  376. package/dist/time/EpochGPS.js +70 -0
  377. package/dist/time/EpochGPS.js.map +1 -0
  378. package/dist/time/EpochTAI.d.ts +26 -0
  379. package/dist/time/EpochTAI.js +27 -0
  380. package/dist/time/EpochTAI.js.map +1 -0
  381. package/dist/time/EpochTDB.d.ts +26 -0
  382. package/dist/time/EpochTDB.js +27 -0
  383. package/dist/time/EpochTDB.js.map +1 -0
  384. package/dist/time/EpochTT.d.ts +26 -0
  385. package/dist/time/EpochTT.js +27 -0
  386. package/dist/time/EpochTT.js.map +1 -0
  387. package/dist/time/EpochUTC.d.ts +59 -0
  388. package/dist/time/EpochUTC.js +137 -0
  389. package/dist/time/EpochUTC.js.map +1 -0
  390. package/dist/time/EpochWindow.d.ts +28 -0
  391. package/dist/time/EpochWindow.js +31 -0
  392. package/dist/time/EpochWindow.js.map +1 -0
  393. package/dist/time/TimeStamped.d.ts +39 -0
  394. package/dist/time/TimeStamped.js +42 -0
  395. package/dist/time/TimeStamped.js.map +1 -0
  396. package/dist/time/index.d.ts +8 -0
  397. package/dist/time/index.js +9 -0
  398. package/dist/time/index.js.map +1 -0
  399. package/dist/transforms/TransformCache.d.ts +27 -0
  400. package/dist/transforms/TransformCache.js +41 -0
  401. package/dist/transforms/TransformCache.js.map +1 -0
  402. package/dist/transforms/conversions.d.ts +63 -0
  403. package/dist/transforms/conversions.js +88 -0
  404. package/dist/transforms/conversions.js.map +1 -0
  405. package/dist/transforms/index.d.ts +1 -0
  406. package/dist/transforms/index.js +1 -0
  407. package/dist/transforms/index.js.map +1 -1
  408. package/dist/transforms/transforms.d.ts +166 -2
  409. package/dist/transforms/transforms.js +372 -1
  410. package/dist/transforms/transforms.js.map +1 -1
  411. package/dist/types/types.d.ts +675 -3
  412. package/dist/types/types.js +37 -1
  413. package/dist/types/types.js.map +1 -1
  414. package/dist/utils/constants.d.ts +80 -0
  415. package/dist/utils/constants.js +87 -0
  416. package/dist/utils/constants.js.map +1 -0
  417. package/dist/utils/create-covariance-from-tle.d.ts +18 -0
  418. package/dist/utils/create-covariance-from-tle.js +57 -0
  419. package/dist/utils/create-covariance-from-tle.js.map +1 -0
  420. package/dist/utils/functions.d.ts +228 -0
  421. package/dist/utils/functions.js +476 -0
  422. package/dist/utils/functions.js.map +1 -1
  423. package/dist/utils/index.d.ts +4 -1
  424. package/dist/utils/index.js +4 -1
  425. package/dist/utils/index.js.map +1 -1
  426. package/dist/utils/jacobian.d.ts +7 -1
  427. package/dist/utils/jacobian.js +7 -2
  428. package/dist/utils/jacobian.js.map +1 -1
  429. package/dist/utils/linearDistance.d.ts +8 -0
  430. package/dist/utils/linearDistance.js +10 -0
  431. package/dist/utils/linearDistance.js.map +1 -0
  432. package/package.json +5 -8
  433. package/src/body/Celestial.ts +134 -0
  434. package/src/body/Earth.ts +260 -0
  435. package/src/body/Moon.ts +556 -0
  436. package/src/body/NutationAngles.ts +40 -0
  437. package/src/body/PrecessionAngles.ts +31 -0
  438. package/src/body/Sun.ts +665 -0
  439. package/src/body/index.ts +27 -0
  440. package/src/body/suncalc.LICENSE.md +18 -0
  441. package/src/coordinate/ClassicalElements.ts +327 -0
  442. package/src/coordinate/EquinoctialElements.ts +189 -0
  443. package/src/coordinate/FormatTle.ts +214 -0
  444. package/src/coordinate/Geodetic.ts +186 -0
  445. package/src/coordinate/Hill.ts +2 -2
  446. package/src/coordinate/ITRF.ts +146 -0
  447. package/src/coordinate/J2000.ts +130 -0
  448. package/src/coordinate/RIC.ts +87 -0
  449. package/src/coordinate/RelativeState.ts +101 -0
  450. package/src/coordinate/StateVector.ts +123 -0
  451. package/src/coordinate/TEME.ts +97 -0
  452. package/src/coordinate/Tle.ts +1024 -0
  453. package/src/coordinate/index.ts +11 -0
  454. package/src/coordinate/tle-format-data.ts +47 -0
  455. package/src/covariance/CovarianceSample.ts +117 -19
  456. package/src/covariance/StateCovariance.ts +2 -2
  457. package/src/covariance/index.ts +2 -0
  458. package/src/data/DataHandler.ts +88 -0
  459. package/src/data/values/Egm96Data.ts +75 -0
  460. package/src/data/values/HpAtmosphereData.ts +76 -0
  461. package/src/data/values/HpAtmosphereResult.ts +41 -0
  462. package/src/data/values/Iau1980Data.ts +63 -0
  463. package/src/data/values/LeapSecond.ts +37 -0
  464. package/src/data/values/LeapSecondData.ts +113 -0
  465. package/src/data/values/egm96.ts +728 -0
  466. package/src/data/values/hpAtmosphere.ts +79 -0
  467. package/src/data/values/iau1980.ts +32 -0
  468. package/src/enums/AngularDiameterMethod.ts +28 -0
  469. package/src/enums/AngularDistanceMethod.ts +28 -0
  470. package/src/enums/OrbitRegime.ts +31 -0
  471. package/src/enums/PassType.ts +29 -0
  472. package/src/enums/Sgp4OpsMode.ts +27 -0
  473. package/src/enums/index.ts +5 -0
  474. package/src/force/AtmosphericDrag.ts +2 -4
  475. package/src/force/EarthGravity.ts +2 -2
  476. package/src/force/Force.ts +2 -2
  477. package/src/force/ForceModel.ts +2 -2
  478. package/src/force/Gravity.ts +2 -2
  479. package/src/force/SolarRadiationPressure.ts +2 -2
  480. package/src/force/ThirdBodyGravity.ts +2 -2
  481. package/src/force/Thrust.ts +2 -2
  482. package/src/interfaces/BaseObjectParams.ts +33 -0
  483. package/src/interfaces/ClassicalElementsParams.ts +35 -0
  484. package/src/interfaces/EquinoctialElementsParams.ts +37 -0
  485. package/src/interfaces/GroundPositionParams.ts +30 -0
  486. package/src/interfaces/OmmFormat.ts +63 -0
  487. package/src/interfaces/OptionsParams.ts +3 -0
  488. package/src/interfaces/RfSensorParams.ts +1 -1
  489. package/src/interfaces/SatelliteParams.ts +20 -0
  490. package/src/interfaces/SensorParams.ts +39 -0
  491. package/src/interfaces/StarObjectParams.ts +11 -0
  492. package/src/interfaces/TimeVariables.ts +7 -0
  493. package/src/interfaces/index.ts +8 -0
  494. package/src/interpolator/ChebyshevCoefficients.ts +5 -5
  495. package/src/interpolator/ChebyshevInterpolator.ts +10 -10
  496. package/src/interpolator/CubicSpline.ts +2 -2
  497. package/src/interpolator/CubicSplineInterpolator.ts +8 -8
  498. package/src/interpolator/FieldInterpolator.ts +1 -1
  499. package/src/interpolator/Interpolator.ts +2 -2
  500. package/src/interpolator/LagrangeInterpolator.ts +7 -7
  501. package/src/interpolator/StateInterpolator.ts +2 -2
  502. package/src/interpolator/VerletBlendInterpolator.ts +2 -2
  503. package/src/main.ts +15 -5
  504. package/src/maneuver/TwoBurnOrbitTransfer.ts +2 -2
  505. package/src/maneuver/Waypoint.ts +2 -2
  506. package/src/objects/BaseObject.ts +171 -0
  507. package/src/objects/DetailedSatellite.ts +5 -4
  508. package/src/objects/DetailedSensor.ts +3 -2
  509. package/src/objects/GroundObject.ts +176 -0
  510. package/src/objects/LandObject.ts +3 -2
  511. package/src/objects/Marker.ts +2 -2
  512. package/src/objects/RfSensor.ts +1 -2
  513. package/src/objects/Satellite.ts +552 -0
  514. package/src/objects/Sensor.ts +279 -0
  515. package/src/objects/Star.ts +96 -0
  516. package/src/objects/index.ts +5 -0
  517. package/src/observation/Observation.ts +2 -2
  518. package/src/observation/ObservationOptical.ts +7 -7
  519. package/src/observation/ObservationRadar.ts +10 -6
  520. package/src/observation/ObservationUtils.ts +31 -2
  521. package/src/observation/PropagatorPairs.ts +3 -3
  522. package/src/observation/RAE.ts +261 -0
  523. package/src/observation/RadecGeocentric.ts +206 -0
  524. package/src/observation/RadecTopocentric.ts +241 -0
  525. package/src/observation/index.ts +27 -0
  526. package/src/operations/BoxMuller.ts +2 -2
  527. package/src/operations/EulerAngles.ts +2 -2
  528. package/src/operations/Matrix.ts +473 -0
  529. package/src/operations/Quaternion.ts +7 -7
  530. package/src/operations/Random.ts +54 -0
  531. package/src/operations/RandomGaussianSource.ts +5 -5
  532. package/src/operations/Vector.ts +484 -0
  533. package/src/operations/Vector3D.ts +289 -0
  534. package/src/operations/operations.ts +27 -0
  535. package/src/optimize/ChebyshevCompressor.ts +6 -6
  536. package/src/optimize/DownhillSimplex.ts +1 -1
  537. package/src/optimize/GoldenSection.ts +3 -3
  538. package/src/optimize/PolynomialRegression.ts +2 -2
  539. package/src/optimize/PolynomicalRegressionResult.ts +1 -1
  540. package/src/optimize/SimpleLinearRegression.ts +1 -1
  541. package/src/optimize/SimplexEntry.ts +9 -9
  542. package/src/orbit_determination/BatchLeastSquaresOD.ts +11 -11
  543. package/src/orbit_determination/BatchLeastSquaresResult.ts +2 -2
  544. package/src/orbit_determination/GibbsIOD.ts +4 -2
  545. package/src/orbit_determination/GoodingIOD.ts +2 -2
  546. package/src/orbit_determination/HerrickGibbsIOD.ts +2 -2
  547. package/src/orbit_determination/LambertIOD.ts +2 -2
  548. package/src/orbit_determination/ModifiedGoodingIOD.ts +4 -4
  549. package/src/orbit_determination/index.ts +7 -0
  550. package/src/propagator/DormandPrince54Propagator.ts +9 -9
  551. package/src/propagator/KeplerPropagator.ts +31 -31
  552. package/src/propagator/Propagator.ts +2 -2
  553. package/src/propagator/RkCheckpoint.ts +2 -2
  554. package/src/propagator/RkResult.ts +2 -2
  555. package/src/propagator/RungeKutta4Propagator.ts +3 -3
  556. package/src/propagator/RungeKutta89Propagator.ts +5 -5
  557. package/src/propagator/RungeKuttaAdaptive.ts +4 -4
  558. package/src/propagator/Sgp4Propagator.ts +14 -14
  559. package/src/sgp4/index.ts +24 -0
  560. package/src/sgp4/sgp4-error.ts +53 -0
  561. package/src/sgp4/sgp4.LICENSE.md +28 -0
  562. package/src/sgp4/sgp4.ts +3983 -0
  563. package/src/smoothing/ExponentialSmoothing.ts +2 -2
  564. package/src/time/Epoch.ts +128 -0
  565. package/src/time/EpochGPS.ts +76 -0
  566. package/src/time/EpochTAI.ts +27 -0
  567. package/src/time/EpochTDB.ts +27 -0
  568. package/src/time/EpochTT.ts +27 -0
  569. package/src/time/EpochUTC.ts +188 -0
  570. package/src/time/EpochWindow.ts +33 -0
  571. package/src/time/TimeStamped.ts +46 -0
  572. package/src/time/index.ts +8 -0
  573. package/src/transforms/TransformCache.ts +46 -0
  574. package/src/transforms/conversions.ts +98 -0
  575. package/src/transforms/index.ts +1 -0
  576. package/src/transforms/transforms.ts +478 -2
  577. package/src/types/types.ts +722 -3
  578. package/src/utils/constants.ts +113 -0
  579. package/src/utils/create-covariance-from-tle.ts +75 -0
  580. package/src/utils/functions.ts +562 -0
  581. package/src/utils/index.ts +4 -1
  582. package/src/utils/jacobian.ts +7 -3
  583. package/src/utils/linearDistance.ts +11 -0
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
7
+ *
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
11
+ *
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
+ */
23
+ import { DEG2RAD, PI, RAD2DEG } from '../main.js';
24
+ /**
25
+ * Converts radians to degrees.
26
+ * @param radians The value in radians to be converted.
27
+ * @returns The value in degrees.
28
+ */
29
+ export function rad2deg(radians) {
30
+ return ((radians * 180) / PI);
31
+ }
32
+ /**
33
+ * Converts degrees to radians.
34
+ * @param degrees The value in degrees to be converted.
35
+ * @returns The value in radians.
36
+ */
37
+ export function deg2rad(degrees) {
38
+ return ((degrees * PI) / 180.0);
39
+ }
40
+ /**
41
+ * Converts radians to degrees latitude.
42
+ * @param radians The radians value to convert.
43
+ * @returns The corresponding degrees latitude.
44
+ * @throws RangeError if the radians value is outside the range [-PI/2; PI/2].
45
+ */
46
+ export function getDegLat(radians) {
47
+ if (radians < -PI / 2 || radians > PI / 2) {
48
+ throw new RangeError('Latitude radians must be in range [-PI/2; PI/2].');
49
+ }
50
+ return (radians * RAD2DEG);
51
+ }
52
+ /**
53
+ * Converts radians to degrees for longitude.
54
+ * @param radians The value in radians to be converted.
55
+ * @returns The converted value in degrees.
56
+ * @throws {RangeError} If the input radians is not within the range [-PI; PI].
57
+ */
58
+ export function getDegLon(radians) {
59
+ if (radians < -PI || radians > PI) {
60
+ throw new RangeError('Longitude radians must be in range [-PI; PI].');
61
+ }
62
+ return (radians * RAD2DEG);
63
+ }
64
+ /**
65
+ * Converts degrees to radians for latitude.
66
+ * @param degrees The degrees value to convert.
67
+ * @returns The equivalent radians value.
68
+ * @throws {RangeError} If the degrees value is not within the range [-90, 90].
69
+ */
70
+ export function getRadLat(degrees) {
71
+ if (degrees < -90 || degrees > 90) {
72
+ throw new RangeError('Latitude degrees must be in range [-90; 90].');
73
+ }
74
+ return (degrees * DEG2RAD);
75
+ }
76
+ /**
77
+ * Converts degrees to radians.
78
+ * @param degrees The value in degrees to be converted.
79
+ * @returns The value in radians.
80
+ * @throws {RangeError} If the input degrees are not within the range [-180; 180].
81
+ */
82
+ export function getRadLon(degrees) {
83
+ if (degrees < -180 || degrees > 180) {
84
+ throw new RangeError('Longitude degrees must be in range [-180; 180].');
85
+ }
86
+ return (degrees * DEG2RAD);
87
+ }
88
+ //# sourceMappingURL=conversions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../src/transforms/conversions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAW,EAAE,EAAE,OAAO,EAAW,MAAM,YAAY,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAgB,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB;IACtC,OAAgB,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAY,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,OAAO,GAAG,CAAC,EAAE,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAY,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,OAAO,GAAG,CAAC,EAAE,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAY,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAY,CAAC;AACxC,CAAC"}
@@ -1 +1,2 @@
1
+ export * from './conversions.js';
1
2
  export * from './transforms.js';
@@ -1,2 +1,3 @@
1
+ export * from './conversions.js';
1
2
  export * from './transforms.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -1,5 +1,169 @@
1
- import { Degrees, EnuVec3, Radians, RaeVec3 } from 'ootk-core';
2
- import { RfVec3, RuvVec3, RfSensor } from '../main.js';
1
+ import { Degrees, EcefVec3, EcfVec3, EciVec3, EnuVec3, GreenwichMeanSiderealTime, Kilometers, LlaVec3, Radians, RaeVec3, Sensor, SezVec3, RfVec3, RuvVec3, RfSensor } from '../main.js';
2
+ /**
3
+ * Converts ECF to ECI coordinates.
4
+ *
5
+ * [X] [C -S 0][X]
6
+ * [Y] = [S C 0][Y]
7
+ * [Z]eci [0 0 1][Z]ecf
8
+ * @param ecf takes xyz coordinates
9
+ * @param gmst takes a number in gmst time
10
+ * @returns array containing eci coordinates
11
+ */
12
+ export declare function ecf2eci<T extends number>(ecf: EcfVec3<T>, gmst: number): EciVec3<T>;
13
+ /**
14
+ * Converts ECEF coordinates to ENU coordinates.
15
+ * @param ecf - The ECEF coordinates.
16
+ * @param lla - The LLA coordinates.
17
+ * @returns The ENU coordinates.
18
+ */
19
+ export declare function ecf2enu<T extends number>(ecf: EcefVec3<T>, lla: LlaVec3): EnuVec3<T>;
20
+ /**
21
+ * Converts ECI to ECF coordinates.
22
+ *
23
+ * [X] [C -S 0][X]
24
+ * [Y] = [S C 0][Y]
25
+ * [Z]eci [0 0 1][Z]ecf
26
+ *
27
+ * Inverse:
28
+ * [X] [C S 0][X]
29
+ * [Y] = [-S C 0][Y]
30
+ * [Z]ecf [0 0 1][Z]eci
31
+ * @param eci takes xyz coordinates
32
+ * @param gmst takes a number in gmst time
33
+ * @returns array containing ecf coordinates
34
+ */
35
+ export declare function eci2ecf<T extends number>(eci: EciVec3<T>, gmst: number): EcfVec3<T>;
36
+ /**
37
+ * EciToGeodetic converts eci coordinates to lla coordinates
38
+ * @variation cached - results are cached
39
+ * @param eci takes xyz coordinates
40
+ * @param gmst takes a number in gmst time
41
+ * @returns array containing lla coordinates
42
+ */
43
+ export declare function eci2lla(eci: EciVec3, gmst: number): LlaVec3<Degrees, Kilometers>;
44
+ /**
45
+ * Converts geodetic coordinates (longitude, latitude, altitude) to Earth-Centered Earth-Fixed (ECF) coordinates.
46
+ * @param lla The geodetic coordinates in radians and meters.
47
+ * @returns The ECF coordinates in meters.
48
+ */
49
+ export declare function llaRad2ecf<AltitudeUnits extends number>(lla: LlaVec3<Radians, AltitudeUnits>): EcfVec3<AltitudeUnits>;
50
+ /**
51
+ * Converts geodetic coordinates (longitude, latitude, altitude) to Earth-Centered Earth-Fixed (ECF) coordinates.
52
+ * @param lla The geodetic coordinates in degrees and meters.
53
+ * @returns The ECF coordinates in meters.
54
+ */
55
+ export declare function lla2ecf<AltitudeUnits extends number>(lla: LlaVec3<Degrees, AltitudeUnits>): EcfVec3<AltitudeUnits>;
56
+ /**
57
+ * Converts geodetic coordinates (latitude, longitude, altitude) to Earth-centered inertial (ECI) coordinates.
58
+ * @variation cached - results are cached
59
+ * @param lla The geodetic coordinates in radians and meters.
60
+ * @param gmst The Greenwich Mean Sidereal Time in seconds.
61
+ * @returns The ECI coordinates in meters.
62
+ */
63
+ export declare function lla2eci(lla: LlaVec3<Radians, Kilometers>, gmst: GreenwichMeanSiderealTime): EciVec3<Kilometers>;
64
+ /**
65
+ * Calculates Geodetic Lat Lon Alt to ECEF coordinates.
66
+ * @deprecated This needs to be validated.
67
+ * @param lla The geodetic coordinates in degrees and meters.
68
+ * @returns The ECEF coordinates in meters.
69
+ */
70
+ export declare function lla2ecef<D extends number>(lla: LlaVec3<Degrees, D>): EcefVec3<D>;
71
+ /**
72
+ * Converts LLA to SEZ coordinates.
73
+ * @see http://www.celestrak.com/columns/v02n02/
74
+ * @param lla The LLA coordinates.
75
+ * @param ecf The ECF coordinates.
76
+ * @returns The SEZ coordinates.
77
+ */
78
+ export declare function lla2sez<D extends number>(lla: LlaVec3<Radians, D>, ecf: EcfVec3<D>): SezVec3<D>;
79
+ /**
80
+ * Converts a vector in Right Ascension, Elevation, and Range (RAE) coordinate system
81
+ * to a vector in South, East, and Zenith (SEZ) coordinate system.
82
+ * @param rae The vector in RAE coordinate system.
83
+ * @returns The vector in SEZ coordinate system.
84
+ */
85
+ export declare function rae2sez<D extends number>(rae: RaeVec3<D, Radians>): SezVec3<D>;
86
+ /**
87
+ * Converts a vector in Right Ascension, Elevation, and Range (RAE) coordinate system
88
+ * to Earth-Centered Fixed (ECF) coordinate system.
89
+ * @template D - The dimension of the RAE vector.
90
+ * @template A - The dimension of the LLA vector.
91
+ * @param rae - The vector in RAE coordinate system.
92
+ * @param lla - The vector in LLA coordinate system.
93
+ * @returns The vector in ECF coordinate system.
94
+ */
95
+ export declare function rae2ecf<D extends number>(rae: RaeVec3<D, Degrees>, lla: LlaVec3<Degrees, D>): EcfVec3<D>;
96
+ /**
97
+ * Converts a vector from RAE (Range, Azimuth, Elevation) coordinates to ECI (Earth-Centered Inertial) coordinates.
98
+ * @variation cached - results are cached
99
+ * @param rae The vector in RAE coordinates.
100
+ * @param lla The vector in LLA (Latitude, Longitude, Altitude) coordinates.
101
+ * @param gmst The Greenwich Mean Sidereal Time.
102
+ * @returns The vector in ECI coordinates.
103
+ */
104
+ export declare function rae2eci<D extends number>(rae: RaeVec3<D, Degrees>, lla: LlaVec3<Degrees, D>, gmst: number): EciVec3<D>;
105
+ /**
106
+ * Converts a vector in RAE (Range, Azimuth, Elevation) coordinates to ENU (East, North, Up) coordinates.
107
+ * @param rae - The vector in RAE coordinates.
108
+ * @returns The vector in ENU coordinates.
109
+ */
110
+ export declare function rae2enu(rae: RaeVec3): EnuVec3<Kilometers>;
111
+ /**
112
+ * Converts South, East, and Zenith (SEZ) coordinates to Right Ascension, Elevation, and Range (RAE) coordinates.
113
+ * @param sez The SEZ coordinates.
114
+ * @returns Rng, Az, El array
115
+ */
116
+ export declare function sez2rae<D extends number>(sez: SezVec3<D>): RaeVec3<D, Radians>;
117
+ /**
118
+ * Converts Earth-Centered Fixed (ECF) coordinates to Right Ascension (RA),
119
+ * Elevation (E), and Azimuth (A) coordinates.
120
+ * @param lla The Latitude, Longitude, and Altitude (LLA) coordinates.
121
+ * @param ecf The Earth-Centered Fixed (ECF) coordinates.
122
+ * @returns The Right Ascension (RA), Elevation (E), and Azimuth (A) coordinates.
123
+ */
124
+ export declare function ecfRad2rae<D extends number>(lla: LlaVec3<Radians, D>, ecf: EcfVec3<D>): RaeVec3<D, Degrees>;
125
+ /**
126
+ * Converts Earth-Centered Fixed (ECF) coordinates to Right Ascension (RA),
127
+ * Elevation (E), and Azimuth (A) coordinates.
128
+ * @variation cached - results are cached
129
+ * @param lla The Latitude, Longitude, and Altitude (LLA) coordinates.
130
+ * @param ecf The Earth-Centered Fixed (ECF) coordinates.
131
+ * @returns The Right Ascension (RA), Elevation (E), and Azimuth (A) coordinates.
132
+ */
133
+ export declare function ecf2rae<D extends number>(lla: LlaVec3<Degrees, D>, ecf: EcfVec3<D>): RaeVec3<D, Degrees>;
134
+ export declare const jday: (year?: number, mon?: number, day?: number, hr?: number, minute?: number, sec?: number) => number;
135
+ /**
136
+ * Calculates the Greenwich Mean Sidereal Time (GMST) for a given date.
137
+ * @param date - The date for which to calculate the GMST.
138
+ * @returns An object containing the GMST value and the Julian date.
139
+ */
140
+ export declare function calcGmst(date: Date): {
141
+ gmst: GreenwichMeanSiderealTime;
142
+ j: number;
143
+ };
144
+ /**
145
+ * Converts ECI coordinates to RAE (Right Ascension, Azimuth, Elevation) coordinates.
146
+ * @variation cached - results are cached
147
+ * @param now - Current date and time.
148
+ * @param eci - ECI coordinates of the satellite.
149
+ * @param sensor - Sensor object containing observer's geodetic coordinates.
150
+ * @returns Object containing azimuth, elevation and range in degrees and kilometers respectively.
151
+ */
152
+ export declare function eci2rae(now: Date, eci: EciVec3<Kilometers>, sensor: Sensor): RaeVec3<Kilometers, Degrees>;
153
+ /**
154
+ * Calculates the inertial azimuth of a satellite given its latitude and inclination.
155
+ * @param lat - The latitude of the satellite in degrees.
156
+ * @param inc - The inclination of the satellite in degrees.
157
+ * @returns The inertial azimuth of the satellite in degrees.
158
+ */
159
+ export declare function calcInertAz(lat: Degrees, inc: Degrees): Degrees;
160
+ /**
161
+ * Calculates the inclination angle of a satellite from its launch azimuth and latitude.
162
+ * @param lat - The latitude of the observer in degrees.
163
+ * @param az - The launch azimuth angle of the satellite in degrees clockwise from north.
164
+ * @returns The inclination angle of the satellite in degrees.
165
+ */
166
+ export declare function calcIncFromAz(lat: number, az: number): number;
3
167
  /**
4
168
  * Converts Azimuth and Elevation to U and V.
5
169
  * Azimuth is the angle off of boresight in the horizontal plane.
@@ -1,4 +1,375 @@
1
- import { DEG2RAD, RAD2DEG, TAU } from 'ootk-core';
1
+ import { DEG2RAD, Earth, MILLISECONDS_TO_DAYS, PI, RAD2DEG, Sgp4, TAU, } from '../main.js';
2
+ /**
3
+ * Converts ECF to ECI coordinates.
4
+ *
5
+ * [X] [C -S 0][X]
6
+ * [Y] = [S C 0][Y]
7
+ * [Z]eci [0 0 1][Z]ecf
8
+ * @param ecf takes xyz coordinates
9
+ * @param gmst takes a number in gmst time
10
+ * @returns array containing eci coordinates
11
+ */
12
+ export function ecf2eci(ecf, gmst) {
13
+ const X = (ecf.x * Math.cos(gmst) - ecf.y * Math.sin(gmst));
14
+ const Y = (ecf.x * Math.sin(gmst) + ecf.y * Math.cos(gmst));
15
+ const Z = ecf.z;
16
+ return { x: X, y: Y, z: Z };
17
+ }
18
+ /**
19
+ * Converts ECEF coordinates to ENU coordinates.
20
+ * @param ecf - The ECEF coordinates.
21
+ * @param lla - The LLA coordinates.
22
+ * @returns The ENU coordinates.
23
+ */
24
+ export function ecf2enu(ecf, lla) {
25
+ const { lat, lon } = lla;
26
+ const { x, y, z } = ecf;
27
+ const e = (-Math.sin(lon) * x + Math.cos(lon) * y);
28
+ const n = (-Math.sin(lat) * Math.cos(lon) * x - Math.sin(lat) * Math.sin(lon) * y + Math.cos(lat) * z);
29
+ const u = (Math.cos(lat) * Math.cos(lon) * x + Math.cos(lat) * Math.sin(lon) * y + Math.sin(lat) * z);
30
+ return { x: e, y: n, z: u };
31
+ }
32
+ /**
33
+ * Converts ECI to ECF coordinates.
34
+ *
35
+ * [X] [C -S 0][X]
36
+ * [Y] = [S C 0][Y]
37
+ * [Z]eci [0 0 1][Z]ecf
38
+ *
39
+ * Inverse:
40
+ * [X] [C S 0][X]
41
+ * [Y] = [-S C 0][Y]
42
+ * [Z]ecf [0 0 1][Z]eci
43
+ * @param eci takes xyz coordinates
44
+ * @param gmst takes a number in gmst time
45
+ * @returns array containing ecf coordinates
46
+ */
47
+ export function eci2ecf(eci, gmst) {
48
+ const x = (eci.x * Math.cos(gmst) + eci.y * Math.sin(gmst));
49
+ const y = (eci.x * -Math.sin(gmst) + eci.y * Math.cos(gmst));
50
+ const z = eci.z;
51
+ return {
52
+ x,
53
+ y,
54
+ z,
55
+ };
56
+ }
57
+ /**
58
+ * EciToGeodetic converts eci coordinates to lla coordinates
59
+ * @variation cached - results are cached
60
+ * @param eci takes xyz coordinates
61
+ * @param gmst takes a number in gmst time
62
+ * @returns array containing lla coordinates
63
+ */
64
+ export function eci2lla(eci, gmst) {
65
+ // http://www.celestrak.com/columns/v02n03/
66
+ const a = 6378.137;
67
+ const b = 6356.7523142;
68
+ const R = Math.sqrt(eci.x * eci.x + eci.y * eci.y);
69
+ const f = (a - b) / a;
70
+ const e2 = 2 * f - f * f;
71
+ let lon = Math.atan2(eci.y, eci.x) - gmst;
72
+ while (lon < -PI) {
73
+ lon += TAU;
74
+ }
75
+ while (lon > PI) {
76
+ lon -= TAU;
77
+ }
78
+ const kmax = 20;
79
+ let k = 0;
80
+ let lat = Math.atan2(eci.z, Math.sqrt(eci.x * eci.x + eci.y * eci.y));
81
+ let C = 0;
82
+ while (k < kmax) {
83
+ C = 1 / Math.sqrt(1 - e2 * (Math.sin(lat) * Math.sin(lat)));
84
+ lat = Math.atan2(eci.z + a * C * e2 * Math.sin(lat), R);
85
+ k += 1;
86
+ }
87
+ const alt = R / Math.cos(lat) - a * C;
88
+ lon = (lon * RAD2DEG);
89
+ lat = (lat * RAD2DEG);
90
+ return { lon: lon, lat: lat, alt: alt };
91
+ }
92
+ /**
93
+ * Converts geodetic coordinates (longitude, latitude, altitude) to Earth-Centered Earth-Fixed (ECF) coordinates.
94
+ * @param lla The geodetic coordinates in radians and meters.
95
+ * @returns The ECF coordinates in meters.
96
+ */
97
+ export function llaRad2ecf(lla) {
98
+ const { lon, lat, alt } = lla;
99
+ const a = 6378.137;
100
+ const b = 6356.7523142;
101
+ const f = (a - b) / a;
102
+ const e2 = 2 * f - f * f;
103
+ const normal = a / Math.sqrt(1 - e2 * Math.sin(lat) ** 2);
104
+ const x = (normal + alt) * Math.cos(lat) * Math.cos(lon);
105
+ const y = (normal + alt) * Math.cos(lat) * Math.sin(lon);
106
+ const z = (normal * (1 - e2) + alt) * Math.sin(lat);
107
+ return {
108
+ x: x,
109
+ y: y,
110
+ z: z,
111
+ };
112
+ }
113
+ /**
114
+ * Converts geodetic coordinates (longitude, latitude, altitude) to Earth-Centered Earth-Fixed (ECF) coordinates.
115
+ * @param lla The geodetic coordinates in degrees and meters.
116
+ * @returns The ECF coordinates in meters.
117
+ */
118
+ export function lla2ecf(lla) {
119
+ const { lon, lat, alt } = lla;
120
+ const lonRad = lon * DEG2RAD;
121
+ const latRad = lat * DEG2RAD;
122
+ return llaRad2ecf({
123
+ lon: lonRad,
124
+ lat: latRad,
125
+ alt,
126
+ });
127
+ }
128
+ /**
129
+ * Converts geodetic coordinates (latitude, longitude, altitude) to Earth-centered inertial (ECI) coordinates.
130
+ * @variation cached - results are cached
131
+ * @param lla The geodetic coordinates in radians and meters.
132
+ * @param gmst The Greenwich Mean Sidereal Time in seconds.
133
+ * @returns The ECI coordinates in meters.
134
+ */
135
+ export function lla2eci(lla, gmst) {
136
+ const { lat, lon, alt } = lla;
137
+ const cosLat = Math.cos(lat);
138
+ const sinLat = Math.sin(lat);
139
+ const cosLon = Math.cos(lon + gmst);
140
+ const sinLon = Math.sin(lon + gmst);
141
+ const x = (Earth.radiusMean + alt) * cosLat * cosLon;
142
+ const y = (Earth.radiusMean + alt) * cosLat * sinLon;
143
+ const z = (Earth.radiusMean + alt) * sinLat;
144
+ return { x, y, z };
145
+ }
146
+ /**
147
+ * Calculates Geodetic Lat Lon Alt to ECEF coordinates.
148
+ * @deprecated This needs to be validated.
149
+ * @param lla The geodetic coordinates in degrees and meters.
150
+ * @returns The ECEF coordinates in meters.
151
+ */
152
+ export function lla2ecef(lla) {
153
+ const { lat, lon, alt } = lla;
154
+ const a = 6378.137; // semi-major axis length in meters according to the WGS84
155
+ const b = 6356.752314245; // semi-minor axis length in meters according to the WGS84
156
+ const e = Math.sqrt(1 - b ** 2 / a ** 2); // eccentricity
157
+ const N = a / Math.sqrt(1 - e ** 2 * Math.sin(lat) ** 2); // radius of curvature in the prime vertical
158
+ const x = ((N + alt) * Math.cos(lat) * Math.cos(lon));
159
+ const y = ((N + alt) * Math.cos(lat) * Math.sin(lon));
160
+ const z = ((N * (1 - e ** 2) + alt) * Math.sin(lat));
161
+ return { x, y, z };
162
+ }
163
+ /**
164
+ * Converts LLA to SEZ coordinates.
165
+ * @see http://www.celestrak.com/columns/v02n02/
166
+ * @param lla The LLA coordinates.
167
+ * @param ecf The ECF coordinates.
168
+ * @returns The SEZ coordinates.
169
+ */
170
+ export function lla2sez(lla, ecf) {
171
+ const lon = lla.lon;
172
+ const lat = lla.lat;
173
+ const observerEcf = llaRad2ecf({
174
+ lat,
175
+ lon,
176
+ alt: 0,
177
+ });
178
+ const rx = ecf.x - observerEcf.x;
179
+ const ry = ecf.y - observerEcf.y;
180
+ const rz = ecf.z - observerEcf.z;
181
+ // Top is short for topocentric
182
+ const south = Math.sin(lat) * Math.cos(lon) * rx + Math.sin(lat) * Math.sin(lon) * ry - Math.cos(lat) * rz;
183
+ const east = -Math.sin(lon) * rx + Math.cos(lon) * ry;
184
+ const zenith = Math.cos(lat) * Math.cos(lon) * rx + Math.cos(lat) * Math.sin(lon) * ry + Math.sin(lat) * rz;
185
+ return { s: south, e: east, z: zenith };
186
+ }
187
+ /**
188
+ * Converts a vector in Right Ascension, Elevation, and Range (RAE) coordinate system
189
+ * to a vector in South, East, and Zenith (SEZ) coordinate system.
190
+ * @param rae The vector in RAE coordinate system.
191
+ * @returns The vector in SEZ coordinate system.
192
+ */
193
+ export function rae2sez(rae) {
194
+ const south = -rae.rng * Math.cos(rae.el) * Math.cos(rae.az);
195
+ const east = rae.rng * Math.cos(rae.el) * Math.sin(rae.az);
196
+ const zenith = rae.rng * Math.sin(rae.el);
197
+ return {
198
+ s: south,
199
+ e: east,
200
+ z: zenith,
201
+ };
202
+ }
203
+ /**
204
+ * Converts a vector in Right Ascension, Elevation, and Range (RAE) coordinate system
205
+ * to Earth-Centered Fixed (ECF) coordinate system.
206
+ * @template D - The dimension of the RAE vector.
207
+ * @template A - The dimension of the LLA vector.
208
+ * @param rae - The vector in RAE coordinate system.
209
+ * @param lla - The vector in LLA coordinate system.
210
+ * @returns The vector in ECF coordinate system.
211
+ */
212
+ export function rae2ecf(rae, lla) {
213
+ const llaRad = {
214
+ lat: (lla.lat * DEG2RAD),
215
+ lon: (lla.lon * DEG2RAD),
216
+ alt: lla.alt,
217
+ };
218
+ const raeRad = {
219
+ az: (rae.az * DEG2RAD),
220
+ el: (rae.el * DEG2RAD),
221
+ rng: rae.rng,
222
+ };
223
+ const obsEcf = llaRad2ecf(llaRad);
224
+ const sez = rae2sez(raeRad);
225
+ // Some needed calculations
226
+ const slat = Math.sin(llaRad.lat);
227
+ const slon = Math.sin(llaRad.lon);
228
+ const clat = Math.cos(llaRad.lat);
229
+ const clon = Math.cos(llaRad.lon);
230
+ const x = slat * clon * sez.s + -slon * sez.e + clat * clon * sez.z + obsEcf.x;
231
+ const y = slat * slon * sez.s + clon * sez.e + clat * slon * sez.z + obsEcf.y;
232
+ const z = -clat * sez.s + slat * sez.z + obsEcf.z;
233
+ return { x, y, z };
234
+ }
235
+ /**
236
+ * Converts a vector from RAE (Range, Azimuth, Elevation) coordinates to ECI (Earth-Centered Inertial) coordinates.
237
+ * @variation cached - results are cached
238
+ * @param rae The vector in RAE coordinates.
239
+ * @param lla The vector in LLA (Latitude, Longitude, Altitude) coordinates.
240
+ * @param gmst The Greenwich Mean Sidereal Time.
241
+ * @returns The vector in ECI coordinates.
242
+ */
243
+ export function rae2eci(rae, lla, gmst) {
244
+ const ecf = rae2ecf(rae, lla);
245
+ const eci = ecf2eci(ecf, gmst);
246
+ return eci;
247
+ }
248
+ /**
249
+ * Converts a vector in RAE (Range, Azimuth, Elevation) coordinates to ENU (East, North, Up) coordinates.
250
+ * @param rae - The vector in RAE coordinates.
251
+ * @returns The vector in ENU coordinates.
252
+ */
253
+ export function rae2enu(rae) {
254
+ const e = (rae.rng * Math.cos(rae.el) * Math.sin(rae.az));
255
+ const n = (rae.rng * Math.cos(rae.el) * Math.cos(rae.az));
256
+ const u = (rae.rng * Math.sin(rae.el));
257
+ return { x: e, y: n, z: u };
258
+ }
259
+ /**
260
+ * Converts South, East, and Zenith (SEZ) coordinates to Right Ascension, Elevation, and Range (RAE) coordinates.
261
+ * @param sez The SEZ coordinates.
262
+ * @returns Rng, Az, El array
263
+ */
264
+ export function sez2rae(sez) {
265
+ const rng = Math.sqrt(sez.s * sez.s + sez.e * sez.e + sez.z * sez.z);
266
+ const el = Math.asin(sez.z / rng);
267
+ const az = (Math.atan2(-sez.e, sez.s) + PI);
268
+ return { rng, az, el };
269
+ }
270
+ /**
271
+ * Converts Earth-Centered Fixed (ECF) coordinates to Right Ascension (RA),
272
+ * Elevation (E), and Azimuth (A) coordinates.
273
+ * @param lla The Latitude, Longitude, and Altitude (LLA) coordinates.
274
+ * @param ecf The Earth-Centered Fixed (ECF) coordinates.
275
+ * @returns The Right Ascension (RA), Elevation (E), and Azimuth (A) coordinates.
276
+ */
277
+ export function ecfRad2rae(lla, ecf) {
278
+ const sezCoords = lla2sez(lla, ecf);
279
+ const rae = sez2rae(sezCoords);
280
+ return { rng: rae.rng, az: (rae.az * RAD2DEG), el: (rae.el * RAD2DEG) };
281
+ }
282
+ /**
283
+ * Converts Earth-Centered Fixed (ECF) coordinates to Right Ascension (RA),
284
+ * Elevation (E), and Azimuth (A) coordinates.
285
+ * @variation cached - results are cached
286
+ * @param lla The Latitude, Longitude, and Altitude (LLA) coordinates.
287
+ * @param ecf The Earth-Centered Fixed (ECF) coordinates.
288
+ * @returns The Right Ascension (RA), Elevation (E), and Azimuth (A) coordinates.
289
+ */
290
+ export function ecf2rae(lla, ecf) {
291
+ const { lat, lon } = lla;
292
+ const latRad = (lat * DEG2RAD);
293
+ const lonRad = (lon * DEG2RAD);
294
+ const rae = ecfRad2rae({ lat: latRad, lon: lonRad, alt: lla.alt }, ecf);
295
+ return rae;
296
+ }
297
+ export const jday = (year, mon, day, hr, minute, sec) => {
298
+ if (typeof year === 'undefined') {
299
+ const now = new Date();
300
+ const jDayStart = new Date(now.getUTCFullYear(), 0, 0);
301
+ const jDayDiff = now.getDate() - jDayStart.getDate();
302
+ return Math.floor(jDayDiff / MILLISECONDS_TO_DAYS);
303
+ }
304
+ if (typeof mon === 'undefined' ||
305
+ typeof day === 'undefined' ||
306
+ typeof hr === 'undefined' ||
307
+ typeof minute === 'undefined' ||
308
+ typeof sec === 'undefined') {
309
+ throw new Error('Invalid date');
310
+ }
311
+ return (367.0 * year -
312
+ Math.floor(7 * (year + Math.floor((mon + 9) / 12.0)) * 0.25) +
313
+ Math.floor((275 * mon) / 9.0) +
314
+ day +
315
+ 1721013.5 +
316
+ ((sec / 60.0 + minute) / 60.0 + hr) / 24.0);
317
+ };
318
+ /**
319
+ * Calculates the Greenwich Mean Sidereal Time (GMST) for a given date.
320
+ * @param date - The date for which to calculate the GMST.
321
+ * @returns An object containing the GMST value and the Julian date.
322
+ */
323
+ export function calcGmst(date) {
324
+ const j = jday(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) +
325
+ date.getUTCMilliseconds() * MILLISECONDS_TO_DAYS;
326
+ const gmst = Sgp4.gstime(j);
327
+ return { gmst, j };
328
+ }
329
+ /**
330
+ * Converts ECI coordinates to RAE (Right Ascension, Azimuth, Elevation) coordinates.
331
+ * @variation cached - results are cached
332
+ * @param now - Current date and time.
333
+ * @param eci - ECI coordinates of the satellite.
334
+ * @param sensor - Sensor object containing observer's geodetic coordinates.
335
+ * @returns Object containing azimuth, elevation and range in degrees and kilometers respectively.
336
+ */
337
+ export function eci2rae(now, eci, sensor) {
338
+ now = new Date(now);
339
+ const { gmst } = calcGmst(now);
340
+ const positionEcf = eci2ecf(eci, gmst);
341
+ const lla = {
342
+ lat: (sensor.lat * DEG2RAD),
343
+ lon: (sensor.lon * DEG2RAD),
344
+ alt: sensor.alt,
345
+ };
346
+ const rae = ecfRad2rae(lla, positionEcf);
347
+ return rae;
348
+ }
349
+ /**
350
+ * Calculates the inertial azimuth of a satellite given its latitude and inclination.
351
+ * @param lat - The latitude of the satellite in degrees.
352
+ * @param inc - The inclination of the satellite in degrees.
353
+ * @returns The inertial azimuth of the satellite in degrees.
354
+ */
355
+ export function calcInertAz(lat, inc) {
356
+ const phi = lat * DEG2RAD;
357
+ const i = inc * DEG2RAD;
358
+ const az = Math.asin(Math.cos(i) / Math.cos(phi));
359
+ return (az * RAD2DEG);
360
+ }
361
+ /**
362
+ * Calculates the inclination angle of a satellite from its launch azimuth and latitude.
363
+ * @param lat - The latitude of the observer in degrees.
364
+ * @param az - The launch azimuth angle of the satellite in degrees clockwise from north.
365
+ * @returns The inclination angle of the satellite in degrees.
366
+ */
367
+ export function calcIncFromAz(lat, az) {
368
+ const phi = lat * DEG2RAD;
369
+ const beta = az * DEG2RAD;
370
+ const inc = Math.acos(Math.sin(beta) * Math.cos(phi));
371
+ return (inc * RAD2DEG);
372
+ }
2
373
  /**
3
374
  * Converts Azimuth and Elevation to U and V.
4
375
  * Azimuth is the angle off of boresight in the horizontal plane.