@interstellar-tools/equations 0.18.0 → 0.19.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 (364) hide show
  1. package/dist/__tests__/helpers/index.d.ts +3 -9
  2. package/dist/__tests__/helpers/index.d.ts.map +1 -1
  3. package/dist/__tests__/helpers/index.js +15 -21
  4. package/dist/__tests__/helpers/index.js.map +1 -1
  5. package/dist/categories/angle/__tests__/compute-angle.int.spec.d.ts.map +1 -0
  6. package/dist/{__tests__ → categories/angle/__tests__}/compute-angle.int.spec.js +2 -2
  7. package/dist/categories/angle/__tests__/compute-angle.int.spec.js.map +1 -0
  8. package/dist/categories/angle/__tests__/wrap-angle.spec.d.ts.map +1 -0
  9. package/dist/{__tests__ → categories/angle/__tests__}/wrap-angle.spec.js +1 -1
  10. package/dist/categories/angle/__tests__/wrap-angle.spec.js.map +1 -0
  11. package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.d.ts.map +1 -0
  12. package/dist/{__tests__ → categories/anomalies/__tests__}/eccentric-to-true-anomaly.spec.js +1 -1
  13. package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.js.map +1 -0
  14. package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.d.ts.map +1 -0
  15. package/dist/{__tests__ → categories/anomalies/__tests__}/mean-to-eccentric-anomaly.spec.js +3 -3
  16. package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.js.map +1 -0
  17. package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.d.ts.map +1 -0
  18. package/dist/{__tests__ → categories/anomalies/__tests__}/true-to-mean-anomaly.spec.js +2 -2
  19. package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.js.map +1 -0
  20. package/dist/categories/anomalies/eccentric-to-true-anomaly.d.ts +1 -1
  21. package/dist/categories/anomalies/eccentric-to-true-anomaly.d.ts.map +1 -1
  22. package/dist/categories/anomalies/true-to-mean-anomaly.d.ts +1 -1
  23. package/dist/categories/anomalies/true-to-mean-anomaly.d.ts.map +1 -1
  24. package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.d.ts +2 -0
  25. package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.d.ts.map +1 -0
  26. package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.js +56 -0
  27. package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.js.map +1 -0
  28. package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.d.ts +2 -0
  29. package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.d.ts.map +1 -0
  30. package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js +60 -0
  31. package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js.map +1 -0
  32. package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.d.ts +2 -0
  33. package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.d.ts.map +1 -0
  34. package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.js +60 -0
  35. package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.js.map +1 -0
  36. package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts +2 -0
  37. package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts.map +1 -0
  38. package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.js +73 -0
  39. package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.js.map +1 -0
  40. package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.d.ts +2 -0
  41. package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.d.ts.map +1 -0
  42. package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.js +69 -0
  43. package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.js.map +1 -0
  44. package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.d.ts +2 -0
  45. package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.d.ts.map +1 -0
  46. package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.js +103 -0
  47. package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.js.map +1 -0
  48. package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.d.ts +50 -0
  49. package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.d.ts.map +1 -0
  50. package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.js +64 -0
  51. package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.js.map +1 -0
  52. package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.d.ts +40 -0
  53. package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.d.ts.map +1 -0
  54. package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.js +50 -0
  55. package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.js.map +1 -0
  56. package/dist/categories/cartography/flattening-oblate-spheroid.d.ts +40 -0
  57. package/dist/categories/cartography/flattening-oblate-spheroid.d.ts.map +1 -0
  58. package/dist/categories/cartography/flattening-oblate-spheroid.js +50 -0
  59. package/dist/categories/cartography/flattening-oblate-spheroid.js.map +1 -0
  60. package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.d.ts +54 -0
  61. package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.d.ts.map +1 -0
  62. package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.js +77 -0
  63. package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.js.map +1 -0
  64. package/dist/categories/cartography/planetocentric-latitude.d.ts +38 -0
  65. package/dist/categories/cartography/planetocentric-latitude.d.ts.map +1 -0
  66. package/dist/categories/cartography/planetocentric-latitude.js +47 -0
  67. package/dist/categories/cartography/planetocentric-latitude.js.map +1 -0
  68. package/dist/categories/cartography/planetographic-latitude-oblate.d.ts +19 -0
  69. package/dist/categories/cartography/planetographic-latitude-oblate.d.ts.map +1 -0
  70. package/dist/categories/cartography/planetographic-latitude-oblate.js +44 -0
  71. package/dist/categories/cartography/planetographic-latitude-oblate.js.map +1 -0
  72. package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +1 -0
  73. package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-acceleration-on1-by2.int.spec.js +3 -2
  74. package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +1 -0
  75. package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +1 -0
  76. package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force-on1-by2.int.spec.js +3 -2
  77. package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.js.map +1 -0
  78. package/dist/categories/gravity/__tests__/gravitational-force.spec.d.ts.map +1 -0
  79. package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force.spec.js +3 -2
  80. package/dist/categories/gravity/__tests__/gravitational-force.spec.js.map +1 -0
  81. package/dist/categories/gravity/__tests__/gravitational-parameters.spec.d.ts.map +1 -0
  82. package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-parameters.spec.js +2 -2
  83. package/dist/categories/gravity/__tests__/gravitational-parameters.spec.js.map +1 -0
  84. package/dist/categories/helpers/__tests__/apply-matrix-3.spec.d.ts +2 -0
  85. package/dist/categories/helpers/__tests__/apply-matrix-3.spec.d.ts.map +1 -0
  86. package/dist/categories/helpers/__tests__/apply-matrix-3.spec.js +79 -0
  87. package/dist/categories/helpers/__tests__/apply-matrix-3.spec.js.map +1 -0
  88. package/dist/categories/helpers/__tests__/det-3.spec.d.ts +2 -0
  89. package/dist/categories/helpers/__tests__/det-3.spec.d.ts.map +1 -0
  90. package/dist/categories/helpers/__tests__/det-3.spec.js +73 -0
  91. package/dist/categories/helpers/__tests__/det-3.spec.js.map +1 -0
  92. package/dist/categories/helpers/__tests__/mat-mul3.spec.d.ts +2 -0
  93. package/dist/categories/helpers/__tests__/mat-mul3.spec.d.ts.map +1 -0
  94. package/dist/categories/helpers/__tests__/mat-mul3.spec.js +86 -0
  95. package/dist/categories/helpers/__tests__/mat-mul3.spec.js.map +1 -0
  96. package/dist/categories/helpers/__tests__/misc.spec.d.ts +2 -0
  97. package/dist/categories/helpers/__tests__/misc.spec.d.ts.map +1 -0
  98. package/dist/categories/helpers/__tests__/misc.spec.js +101 -0
  99. package/dist/categories/helpers/__tests__/misc.spec.js.map +1 -0
  100. package/dist/categories/helpers/__tests__/radians.spec.d.ts +2 -0
  101. package/dist/categories/helpers/__tests__/radians.spec.d.ts.map +1 -0
  102. package/dist/categories/helpers/__tests__/radians.spec.js +37 -0
  103. package/dist/categories/helpers/__tests__/radians.spec.js.map +1 -0
  104. package/dist/categories/helpers/__tests__/rot-1.spec.d.ts +2 -0
  105. package/dist/categories/helpers/__tests__/rot-1.spec.d.ts.map +1 -0
  106. package/dist/categories/helpers/__tests__/rot-1.spec.js +59 -0
  107. package/dist/categories/helpers/__tests__/rot-1.spec.js.map +1 -0
  108. package/dist/categories/helpers/__tests__/rot-3.spec.d.ts +2 -0
  109. package/dist/categories/helpers/__tests__/rot-3.spec.d.ts.map +1 -0
  110. package/dist/categories/helpers/__tests__/rot-3.spec.js +65 -0
  111. package/dist/categories/helpers/__tests__/rot-3.spec.js.map +1 -0
  112. package/dist/categories/helpers/apply-matrix-3.d.ts +38 -0
  113. package/dist/categories/helpers/apply-matrix-3.d.ts.map +1 -0
  114. package/dist/categories/helpers/apply-matrix-3.js +44 -0
  115. package/dist/categories/helpers/apply-matrix-3.js.map +1 -0
  116. package/dist/categories/helpers/det-3.d.ts +52 -0
  117. package/dist/categories/helpers/det-3.d.ts.map +1 -0
  118. package/dist/categories/helpers/det-3.js +62 -0
  119. package/dist/categories/helpers/det-3.js.map +1 -0
  120. package/dist/categories/helpers/mat-mul3.d.ts +46 -0
  121. package/dist/categories/helpers/mat-mul3.d.ts.map +1 -0
  122. package/dist/categories/helpers/mat-mul3.js +52 -0
  123. package/dist/categories/helpers/mat-mul3.js.map +1 -0
  124. package/dist/categories/helpers/misc.d.ts +118 -0
  125. package/dist/categories/helpers/misc.d.ts.map +1 -0
  126. package/dist/categories/helpers/misc.js +131 -0
  127. package/dist/categories/helpers/misc.js.map +1 -0
  128. package/dist/categories/helpers/radians.d.ts +41 -0
  129. package/dist/categories/helpers/radians.d.ts.map +1 -0
  130. package/dist/categories/helpers/radians.js +40 -0
  131. package/dist/categories/helpers/radians.js.map +1 -0
  132. package/dist/categories/helpers/rot-1.d.ts +38 -0
  133. package/dist/categories/helpers/rot-1.d.ts.map +1 -0
  134. package/dist/categories/helpers/rot-1.js +47 -0
  135. package/dist/categories/helpers/rot-1.js.map +1 -0
  136. package/dist/categories/helpers/rot-3.d.ts +38 -0
  137. package/dist/categories/helpers/rot-3.d.ts.map +1 -0
  138. package/dist/categories/helpers/rot-3.js +47 -0
  139. package/dist/categories/helpers/rot-3.js.map +1 -0
  140. package/dist/categories/helpers/transpose-3.d.ts +51 -0
  141. package/dist/categories/helpers/transpose-3.d.ts.map +1 -0
  142. package/dist/categories/helpers/transpose-3.js +54 -0
  143. package/dist/categories/helpers/transpose-3.js.map +1 -0
  144. package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.d.ts.map +1 -0
  145. package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-bisection.spec.js +3 -2
  146. package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.js.map +1 -0
  147. package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.d.ts.map +1 -0
  148. package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-high-eccentricity.spec.js +1 -1
  149. package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.js.map +1 -0
  150. package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.d.ts.map +1 -0
  151. package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-newton-raphson.spec.js +1 -1
  152. package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.js.map +1 -0
  153. package/dist/categories/kepler/__tests__/solve-kepler.int.spec.d.ts.map +1 -0
  154. package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler.int.spec.js +1 -1
  155. package/dist/categories/kepler/__tests__/solve-kepler.int.spec.js.map +1 -0
  156. package/dist/categories/kepler/solve-kepler-bisection.d.ts +1 -1
  157. package/dist/categories/kepler/solve-kepler-bisection.d.ts.map +1 -1
  158. package/dist/categories/kepler/solve-kepler-high-eccentricity.d.ts +1 -1
  159. package/dist/categories/kepler/solve-kepler-high-eccentricity.d.ts.map +1 -1
  160. package/dist/categories/kepler/solve-kepler-newton-raphson.d.ts +1 -1
  161. package/dist/categories/kepler/solve-kepler-newton-raphson.d.ts.map +1 -1
  162. package/dist/categories/kepler/solve-kepler-newton-raphson.js +1 -1
  163. package/dist/categories/kepler/solve-kepler.d.ts +1 -1
  164. package/dist/categories/kepler/solve-kepler.d.ts.map +1 -1
  165. package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.d.ts.map +1 -0
  166. package/dist/{__tests__ → categories/manoeuvres/__tests__}/combine-burns-delta-v.spec.js +3 -2
  167. package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.js.map +1 -0
  168. package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.d.ts.map +1 -0
  169. package/dist/{__tests__ → categories/manoeuvres/__tests__}/gravity-assist-turning-angle.spec.js +2 -2
  170. package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.js.map +1 -0
  171. package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.d.ts.map +1 -0
  172. package/dist/{__tests__ → categories/manoeuvres/__tests__}/hohmann-transfer.spec.js +2 -2
  173. package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.js.map +1 -0
  174. package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.d.ts.map +1 -0
  175. package/dist/{__tests__ → categories/manoeuvres/__tests__}/oberth-energy-gain.spec.js +2 -2
  176. package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.js.map +1 -0
  177. package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.d.ts.map +1 -0
  178. package/dist/{__tests__ → categories/manoeuvres/__tests__}/plane-change-delta-v.spec.js +3 -2
  179. package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.js.map +1 -0
  180. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.d.ts +2 -0
  181. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.d.ts.map +1 -0
  182. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.js +84 -0
  183. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.js.map +1 -0
  184. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.d.ts +2 -0
  185. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.d.ts.map +1 -0
  186. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.js +65 -0
  187. package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.js.map +1 -0
  188. package/dist/categories/manoeuvres/rocket-delta-v-from-isp.d.ts +46 -0
  189. package/dist/categories/manoeuvres/rocket-delta-v-from-isp.d.ts.map +1 -0
  190. package/dist/categories/manoeuvres/rocket-delta-v-from-isp.js +67 -0
  191. package/dist/categories/manoeuvres/rocket-delta-v-from-isp.js.map +1 -0
  192. package/dist/categories/manoeuvres/rocket-delta-v-from-ve.d.ts +44 -0
  193. package/dist/categories/manoeuvres/rocket-delta-v-from-ve.d.ts.map +1 -0
  194. package/dist/categories/manoeuvres/rocket-delta-v-from-ve.js +62 -0
  195. package/dist/categories/manoeuvres/rocket-delta-v-from-ve.js.map +1 -0
  196. package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.d.ts +2 -0
  197. package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.d.ts.map +1 -0
  198. package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.js +71 -0
  199. package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.js.map +1 -0
  200. package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.d.ts.map +1 -0
  201. package/dist/{__tests__ → categories/orbits/__tests__}/characteristic-energy-c3.spec.js +2 -2
  202. package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.js.map +1 -0
  203. package/dist/categories/orbits/__tests__/circular-speed.spec.d.ts.map +1 -0
  204. package/dist/{__tests__ → categories/orbits/__tests__}/circular-speed.spec.js +2 -2
  205. package/dist/categories/orbits/__tests__/circular-speed.spec.js.map +1 -0
  206. package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.d.ts.map +1 -0
  207. package/dist/{__tests__ → categories/orbits/__tests__}/cw-hill-derivatives.spec.js +2 -2
  208. package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.js.map +1 -0
  209. package/dist/categories/orbits/__tests__/escape-speed.spec.d.ts.map +1 -0
  210. package/dist/{__tests__ → categories/orbits/__tests__}/escape-speed.spec.js +2 -2
  211. package/dist/categories/orbits/__tests__/escape-speed.spec.js.map +1 -0
  212. package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts.map +1 -0
  213. package/dist/{__tests__ → categories/orbits/__tests__}/flight-path-angle-from-true-anomaly.spec.js +2 -2
  214. package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.js.map +1 -0
  215. package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.d.ts.map +1 -0
  216. package/dist/{__tests__ → categories/orbits/__tests__}/hyperbolic-periapsis-speed.spec.js +2 -2
  217. package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.js.map +1 -0
  218. package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.d.ts +2 -0
  219. package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.d.ts.map +1 -0
  220. package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.js +104 -0
  221. package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.js.map +1 -0
  222. package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.d.ts +2 -0
  223. package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.d.ts.map +1 -0
  224. package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.js +99 -0
  225. package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.js.map +1 -0
  226. package/dist/categories/orbits/__tests__/kepler-period.spec.d.ts.map +1 -0
  227. package/dist/{__tests__ → categories/orbits/__tests__}/kepler-period.spec.js +2 -2
  228. package/dist/categories/orbits/__tests__/kepler-period.spec.js.map +1 -0
  229. package/dist/categories/orbits/__tests__/mean-motion.spec.d.ts.map +1 -0
  230. package/dist/{__tests__ → categories/orbits/__tests__}/mean-motion.spec.js +2 -2
  231. package/dist/categories/orbits/__tests__/mean-motion.spec.js.map +1 -0
  232. package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.d.ts.map +1 -0
  233. package/dist/{__tests__ → categories/orbits/__tests__}/peri-apoapsis-radii.spec.js +2 -2
  234. package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.js.map +1 -0
  235. package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.d.ts.map +1 -0
  236. package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum-from-elements.spec.js +2 -2
  237. package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.js.map +1 -0
  238. package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.d.ts.map +1 -0
  239. package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum.spec.js +3 -2
  240. package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.js.map +1 -0
  241. package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.d.ts.map +1 -0
  242. package/dist/{__tests__ → categories/orbits/__tests__}/specific-mechanical-energy.spec.js +2 -2
  243. package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.js.map +1 -0
  244. package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.d.ts.map +1 -0
  245. package/dist/{__tests__ → categories/orbits/__tests__}/sphere-of-influence-radius.spec.js +2 -2
  246. package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.js.map +1 -0
  247. package/dist/categories/orbits/__tests__/vis-viva-speed.spec.d.ts.map +1 -0
  248. package/dist/{__tests__ → categories/orbits/__tests__}/vis-viva-speed.spec.js +2 -2
  249. package/dist/categories/orbits/__tests__/vis-viva-speed.spec.js.map +1 -0
  250. package/dist/categories/orbits/atmospheric-drag-acceleration.d.ts +40 -0
  251. package/dist/categories/orbits/atmospheric-drag-acceleration.d.ts.map +1 -0
  252. package/dist/categories/orbits/atmospheric-drag-acceleration.js +63 -0
  253. package/dist/categories/orbits/atmospheric-drag-acceleration.js.map +1 -0
  254. package/dist/categories/orbits/flight-path-angle-from-true-anomaly.d.ts +1 -1
  255. package/dist/categories/orbits/flight-path-angle-from-true-anomaly.d.ts.map +1 -1
  256. package/dist/categories/orbits/j2-argument-of-perigee-rate.d.ts +53 -0
  257. package/dist/categories/orbits/j2-argument-of-perigee-rate.d.ts.map +1 -0
  258. package/dist/categories/orbits/j2-argument-of-perigee-rate.js +84 -0
  259. package/dist/categories/orbits/j2-argument-of-perigee-rate.js.map +1 -0
  260. package/dist/categories/orbits/j2-nodal-precession-rate.d.ts +52 -0
  261. package/dist/categories/orbits/j2-nodal-precession-rate.d.ts.map +1 -0
  262. package/dist/categories/orbits/j2-nodal-precession-rate.js +82 -0
  263. package/dist/categories/orbits/j2-nodal-precession-rate.js.map +1 -0
  264. package/dist/index.d.ts +18 -0
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +20 -0
  267. package/dist/index.js.map +1 -1
  268. package/package.json +1 -1
  269. package/dist/__tests__/characteristic-energy-c3.spec.d.ts.map +0 -1
  270. package/dist/__tests__/characteristic-energy-c3.spec.js.map +0 -1
  271. package/dist/__tests__/circular-speed.spec.d.ts.map +0 -1
  272. package/dist/__tests__/circular-speed.spec.js.map +0 -1
  273. package/dist/__tests__/combine-burns-delta-v.spec.d.ts.map +0 -1
  274. package/dist/__tests__/combine-burns-delta-v.spec.js.map +0 -1
  275. package/dist/__tests__/compute-angle.int.spec.d.ts.map +0 -1
  276. package/dist/__tests__/compute-angle.int.spec.js.map +0 -1
  277. package/dist/__tests__/cw-hill-derivatives.spec.d.ts.map +0 -1
  278. package/dist/__tests__/cw-hill-derivatives.spec.js.map +0 -1
  279. package/dist/__tests__/eccentric-to-true-anomaly.spec.d.ts.map +0 -1
  280. package/dist/__tests__/eccentric-to-true-anomaly.spec.js.map +0 -1
  281. package/dist/__tests__/escape-speed.spec.d.ts.map +0 -1
  282. package/dist/__tests__/escape-speed.spec.js.map +0 -1
  283. package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts.map +0 -1
  284. package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.js.map +0 -1
  285. package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +0 -1
  286. package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +0 -1
  287. package/dist/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +0 -1
  288. package/dist/__tests__/gravitational-force-on1-by2.int.spec.js.map +0 -1
  289. package/dist/__tests__/gravitational-force.spec.d.ts.map +0 -1
  290. package/dist/__tests__/gravitational-force.spec.js.map +0 -1
  291. package/dist/__tests__/gravitational-parameters.spec.d.ts.map +0 -1
  292. package/dist/__tests__/gravitational-parameters.spec.js.map +0 -1
  293. package/dist/__tests__/gravity-assist-turning-angle.spec.d.ts.map +0 -1
  294. package/dist/__tests__/gravity-assist-turning-angle.spec.js.map +0 -1
  295. package/dist/__tests__/hohmann-transfer.spec.d.ts.map +0 -1
  296. package/dist/__tests__/hohmann-transfer.spec.js.map +0 -1
  297. package/dist/__tests__/hyperbolic-periapsis-speed.spec.d.ts.map +0 -1
  298. package/dist/__tests__/hyperbolic-periapsis-speed.spec.js.map +0 -1
  299. package/dist/__tests__/kepler-period.spec.d.ts.map +0 -1
  300. package/dist/__tests__/kepler-period.spec.js.map +0 -1
  301. package/dist/__tests__/mean-motion.spec.d.ts.map +0 -1
  302. package/dist/__tests__/mean-motion.spec.js.map +0 -1
  303. package/dist/__tests__/mean-to-eccentric-anomaly.spec.d.ts.map +0 -1
  304. package/dist/__tests__/mean-to-eccentric-anomaly.spec.js.map +0 -1
  305. package/dist/__tests__/oberth-energy-gain.spec.d.ts.map +0 -1
  306. package/dist/__tests__/oberth-energy-gain.spec.js.map +0 -1
  307. package/dist/__tests__/peri-apoapsis-radii.spec.d.ts.map +0 -1
  308. package/dist/__tests__/peri-apoapsis-radii.spec.js.map +0 -1
  309. package/dist/__tests__/plane-change-delta-v.spec.d.ts.map +0 -1
  310. package/dist/__tests__/plane-change-delta-v.spec.js.map +0 -1
  311. package/dist/__tests__/solve-kepler-bisection.spec.d.ts.map +0 -1
  312. package/dist/__tests__/solve-kepler-bisection.spec.js.map +0 -1
  313. package/dist/__tests__/solve-kepler-high-eccentricity.spec.d.ts.map +0 -1
  314. package/dist/__tests__/solve-kepler-high-eccentricity.spec.js.map +0 -1
  315. package/dist/__tests__/solve-kepler-newton-raphson.spec.d.ts.map +0 -1
  316. package/dist/__tests__/solve-kepler-newton-raphson.spec.js.map +0 -1
  317. package/dist/__tests__/solve-kepler.int.spec.d.ts.map +0 -1
  318. package/dist/__tests__/solve-kepler.int.spec.js.map +0 -1
  319. package/dist/__tests__/specific-angular-momentum-from-elements.spec.d.ts.map +0 -1
  320. package/dist/__tests__/specific-angular-momentum-from-elements.spec.js.map +0 -1
  321. package/dist/__tests__/specific-angular-momentum.spec.d.ts.map +0 -1
  322. package/dist/__tests__/specific-angular-momentum.spec.js.map +0 -1
  323. package/dist/__tests__/specific-mechanical-energy.spec.d.ts.map +0 -1
  324. package/dist/__tests__/specific-mechanical-energy.spec.js.map +0 -1
  325. package/dist/__tests__/sphere-of-influence-radius.spec.d.ts.map +0 -1
  326. package/dist/__tests__/sphere-of-influence-radius.spec.js.map +0 -1
  327. package/dist/__tests__/true-to-mean-anomaly.spec.d.ts.map +0 -1
  328. package/dist/__tests__/true-to-mean-anomaly.spec.js.map +0 -1
  329. package/dist/__tests__/vis-viva-speed.spec.d.ts.map +0 -1
  330. package/dist/__tests__/vis-viva-speed.spec.js.map +0 -1
  331. package/dist/__tests__/wrap-angle.spec.d.ts.map +0 -1
  332. package/dist/__tests__/wrap-angle.spec.js.map +0 -1
  333. /package/dist/{__tests__ → categories/angle/__tests__}/compute-angle.int.spec.d.ts +0 -0
  334. /package/dist/{__tests__ → categories/angle/__tests__}/wrap-angle.spec.d.ts +0 -0
  335. /package/dist/{__tests__ → categories/anomalies/__tests__}/eccentric-to-true-anomaly.spec.d.ts +0 -0
  336. /package/dist/{__tests__ → categories/anomalies/__tests__}/mean-to-eccentric-anomaly.spec.d.ts +0 -0
  337. /package/dist/{__tests__ → categories/anomalies/__tests__}/true-to-mean-anomaly.spec.d.ts +0 -0
  338. /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-acceleration-on1-by2.int.spec.d.ts +0 -0
  339. /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force-on1-by2.int.spec.d.ts +0 -0
  340. /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force.spec.d.ts +0 -0
  341. /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-parameters.spec.d.ts +0 -0
  342. /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-bisection.spec.d.ts +0 -0
  343. /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-high-eccentricity.spec.d.ts +0 -0
  344. /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-newton-raphson.spec.d.ts +0 -0
  345. /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler.int.spec.d.ts +0 -0
  346. /package/dist/{__tests__ → categories/manoeuvres/__tests__}/combine-burns-delta-v.spec.d.ts +0 -0
  347. /package/dist/{__tests__ → categories/manoeuvres/__tests__}/gravity-assist-turning-angle.spec.d.ts +0 -0
  348. /package/dist/{__tests__ → categories/manoeuvres/__tests__}/hohmann-transfer.spec.d.ts +0 -0
  349. /package/dist/{__tests__ → categories/manoeuvres/__tests__}/oberth-energy-gain.spec.d.ts +0 -0
  350. /package/dist/{__tests__ → categories/manoeuvres/__tests__}/plane-change-delta-v.spec.d.ts +0 -0
  351. /package/dist/{__tests__ → categories/orbits/__tests__}/characteristic-energy-c3.spec.d.ts +0 -0
  352. /package/dist/{__tests__ → categories/orbits/__tests__}/circular-speed.spec.d.ts +0 -0
  353. /package/dist/{__tests__ → categories/orbits/__tests__}/cw-hill-derivatives.spec.d.ts +0 -0
  354. /package/dist/{__tests__ → categories/orbits/__tests__}/escape-speed.spec.d.ts +0 -0
  355. /package/dist/{__tests__ → categories/orbits/__tests__}/flight-path-angle-from-true-anomaly.spec.d.ts +0 -0
  356. /package/dist/{__tests__ → categories/orbits/__tests__}/hyperbolic-periapsis-speed.spec.d.ts +0 -0
  357. /package/dist/{__tests__ → categories/orbits/__tests__}/kepler-period.spec.d.ts +0 -0
  358. /package/dist/{__tests__ → categories/orbits/__tests__}/mean-motion.spec.d.ts +0 -0
  359. /package/dist/{__tests__ → categories/orbits/__tests__}/peri-apoapsis-radii.spec.d.ts +0 -0
  360. /package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum-from-elements.spec.d.ts +0 -0
  361. /package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum.spec.d.ts +0 -0
  362. /package/dist/{__tests__ → categories/orbits/__tests__}/specific-mechanical-energy.spec.d.ts +0 -0
  363. /package/dist/{__tests__ → categories/orbits/__tests__}/sphere-of-influence-radius.spec.d.ts +0 -0
  364. /package/dist/{__tests__ → categories/orbits/__tests__}/vis-viva-speed.spec.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=j2-nodal-precession-rate.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"j2-nodal-precession-rate.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/j2-nodal-precession-rate.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import assert from 'node:assert/strict';
2
+ import test, { describe } from 'node:test';
3
+ import { relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { j2NodalPrecessionRate } from '../j2-nodal-precession-rate';
5
+ import { rad } from '../../helpers/radians';
6
+ describe('j2NodalPrecessionRate', () => {
7
+ test('computes Ωdot from the reference formula (typical Earth-ish LEO inputs)', () => {
8
+ const J2 = 1.08262668e-3;
9
+ const n = 0.001078; // rad/s
10
+ const Re = 6378.137; // km
11
+ const a = 7000; // km
12
+ const i = rad((98 * Math.PI) / 180);
13
+ const e = 0.001;
14
+ const omegaDot = j2NodalPrecessionRate(J2, n, Re, a, i, e);
15
+ const expected = (-1.5 * J2 * n * Math.pow(Re / a, 2) * Math.cos(i)) /
16
+ Math.pow(1 - e * e, 2);
17
+ relClose(omegaDot, expected);
18
+ });
19
+ test('sign check: prograde (i < 90°) gives negative Ωdot; retrograde (i > 90°) gives positive Ωdot', () => {
20
+ const J2 = 1e-3;
21
+ const n = 0.001;
22
+ const Re = 6000;
23
+ const a = 7000;
24
+ const e = 0;
25
+ const prograde = j2NodalPrecessionRate(J2, n, Re, a, rad((30 * Math.PI) / 180), e);
26
+ const retrograde = j2NodalPrecessionRate(J2, n, Re, a, rad((120 * Math.PI) / 180), e);
27
+ assert.ok(prograde < 0, `expected prograde Ωdot < 0, got ${prograde}`);
28
+ assert.ok(retrograde > 0, `expected retrograde Ωdot > 0, got ${retrograde}`);
29
+ });
30
+ test('polar orbit (i = 90°) gives ~0 Ωdot', () => {
31
+ const J2 = 1e-3;
32
+ const n = 0.001;
33
+ const Re = 6000;
34
+ const a = 7000;
35
+ const e = 0;
36
+ const omegaDot = j2NodalPrecessionRate(J2, n, Re, a, rad(Math.PI / 2), e);
37
+ relClose(omegaDot, 0, 1e-12);
38
+ });
39
+ test('with e = 0, denominator is 1 (matches simplified circular-orbit form)', () => {
40
+ const J2 = 1.08262668e-3;
41
+ const n = 0.001;
42
+ const Re = 6378.137;
43
+ const a = 7000;
44
+ const i = rad((45 * Math.PI) / 180);
45
+ const e = 0;
46
+ const omegaDot = j2NodalPrecessionRate(J2, n, Re, a, i, e);
47
+ const expected = -1.5 * J2 * n * Math.pow(Re / a, 2) * Math.cos(i);
48
+ relClose(omegaDot, expected);
49
+ });
50
+ test('throws TypeError when any input is not finite', () => {
51
+ const J2 = 1e-3;
52
+ const n = 0.001;
53
+ const Re = 6000;
54
+ const a = 7000;
55
+ const i = rad(0);
56
+ const e = 0;
57
+ assert.throws(() => j2NodalPrecessionRate(Number.NaN, n, Re, a, i, e), (err) => err instanceof TypeError &&
58
+ err.message === 'J2 must be a finite number. Received: NaN');
59
+ assert.throws(() => j2NodalPrecessionRate(J2, Number.POSITIVE_INFINITY, Re, a, i, e), (err) => err instanceof TypeError &&
60
+ err.message === 'n must be a finite number. Received: Infinity');
61
+ assert.throws(() => j2NodalPrecessionRate(J2, n, Number.NEGATIVE_INFINITY, a, i, e), (err) => err instanceof TypeError &&
62
+ err.message === 'Re must be a finite number. Received: -Infinity');
63
+ assert.throws(() => j2NodalPrecessionRate(J2, n, Re, Number.NaN, i, e), (err) => err instanceof TypeError &&
64
+ err.message === 'a must be a finite number. Received: NaN');
65
+ assert.throws(() => j2NodalPrecessionRate(J2, n, Re, a, rad(Number.NaN), e), (err) => err instanceof TypeError &&
66
+ err.message === 'i must be a finite number. Received: NaN');
67
+ assert.throws(() => j2NodalPrecessionRate(J2, n, Re, a, i, Number.NaN), (err) => err instanceof TypeError &&
68
+ err.message === 'e must be a finite number. Received: NaN');
69
+ });
70
+ test('throws RangeError when n < 0', () => {
71
+ assert.throws(() => j2NodalPrecessionRate(1e-3, -1e-9, 6000, 7000, rad(0), 0), (err) => err instanceof RangeError &&
72
+ err.message === 'n must be >= 0. Received: -1e-9');
73
+ });
74
+ test('throws RangeError when Re <= 0', () => {
75
+ assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 0, 7000, rad(0), 0), (err) => err instanceof RangeError &&
76
+ err.message === 'Re must be > 0. Received: 0');
77
+ });
78
+ test('throws RangeError when a <= 0', () => {
79
+ assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 6000, 0, rad(0), 0), (err) => err instanceof RangeError &&
80
+ err.message === 'a must be > 0. Received: 0');
81
+ });
82
+ test('throws RangeError when e is outside [0, 1]', () => {
83
+ assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 6000, 7000, rad(0), -1e-9), (err) => err instanceof RangeError &&
84
+ err.message === 'e must be in [0, 1]. Received: -1e-9');
85
+ assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 6000, 7000, rad(0), 1), (err) => err instanceof RangeError &&
86
+ err.message === 'e must be in [0, 1]. Received: 1');
87
+ });
88
+ test('as e increases, |Ωdot| increases due to (1 - e²)⁻²', () => {
89
+ const J2 = 1e-3;
90
+ const n = 0.001;
91
+ const Re = 6000;
92
+ const a = 7000;
93
+ const i = rad((60 * Math.PI) / 180);
94
+ const omegaDot0 = j2NodalPrecessionRate(J2, n, Re, a, i, 0);
95
+ const omegaDot5 = j2NodalPrecessionRate(J2, n, Re, a, i, 0.5);
96
+ assert.ok(Math.abs(omegaDot5) > Math.abs(omegaDot0), `expected |Ωdot| to increase with e: ${omegaDot0} -> ${omegaDot5}`);
97
+ });
98
+ });
99
+ //# sourceMappingURL=j2-nodal-precession-rate.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"j2-nodal-precession-rate.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/j2-nodal-precession-rate.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kepler-period.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/kepler-period.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { relClose } from './helpers';
4
- import { keplerPeriod } from '../categories/orbits/kepler-period';
3
+ import { relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { keplerPeriod } from '../kepler-period';
5
5
  describe('keplerPeriod', () => {
6
6
  test('GEO sanity: a ≈ 42,164 km around Earth → T ≈ 86,164 s', () => {
7
7
  const a = 42164e3; // m
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kepler-period.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/kepler-period.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mean-motion.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/mean-motion.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { meanMotion } from '../categories/orbits/mean-motion';
4
- import { relClose } from './helpers';
3
+ import { meanMotion } from '../mean-motion';
4
+ import { relClose } from 'packages/equations/src/__tests__/helpers';
5
5
  describe('meanMotion', () => {
6
6
  test('computes n = sqrt(mu / a^3) for a typical Earth orbit (km-based)', () => {
7
7
  const mu = 398600.4418; // km³/s²
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mean-motion.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/mean-motion.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peri-apoapsis-radii.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/peri-apoapsis-radii.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { periApoapsisRadii } from '../categories/orbits/peri-apoapsis-radii';
4
- import { relClose } from './helpers';
3
+ import { periApoapsisRadii } from '../peri-apoapsis-radii';
4
+ import { relClose } from 'packages/equations/src/__tests__/helpers';
5
5
  describe('periApoapsisRadii', () => {
6
6
  test('ellipse: matches rp = a(1-e), ra = a(1+e)', () => {
7
7
  const a = 7000e3; // m
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peri-apoapsis-radii.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/peri-apoapsis-radii.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specific-angular-momentum-from-elements.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { absClose, relClose } from './helpers';
4
- import { specificAngularMomentumFromElements } from '../categories/orbits/specific-angular-momentum-from-elements';
3
+ import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { specificAngularMomentumFromElements } from '../specific-angular-momentum-from-elements';
5
5
  describe('specificAngularMomentumFromElements', () => {
6
6
  test('definition (elliptic): h = sqrt(μ a (1-e²))', () => {
7
7
  const mu = 3.986004418e14; // m³/s² (Earth GM)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specific-angular-momentum-from-elements.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specific-angular-momentum.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { absClose, dot, norm, relClose } from './helpers';
4
- import { specificAngularMomentum } from '../categories/orbits/specific-angular-momentum';
3
+ import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { specificAngularMomentum } from '../specific-angular-momentum';
5
+ import { dot, norm } from '../../helpers/misc';
5
6
  describe('specificAngularMomentum', () => {
6
7
  test('orthogonal state: r ⟂ v → h = r * v', () => {
7
8
  const r = [6778e3, 0, 0]; // m
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specific-angular-momentum.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specific-mechanical-energy.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-mechanical-energy.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { specificMechanicalEnergy } from '../categories/orbits/specific-mechanical-energy';
4
- import { absClose, relClose } from './helpers';
3
+ import { specificMechanicalEnergy } from '../specific-mechanical-energy';
4
+ import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
5
5
  describe('specificMechanicalEnergy', () => {
6
6
  test('circular orbit: ε = -μ/(2r) when v = sqrt(μ/r)', () => {
7
7
  const mu = 3.986004418e14; // m³/s² (Earth GM)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specific-mechanical-energy.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-mechanical-energy.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sphere-of-influence-radius.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/sphere-of-influence-radius.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { sphereOfInfluenceRadius } from '../categories/orbits/sphere-of-influence-radius';
4
- import { relClose } from './helpers';
3
+ import { sphereOfInfluenceRadius } from '../sphere-of-influence-radius';
4
+ import { relClose } from 'packages/equations/src/__tests__/helpers';
5
5
  describe('sphereOfInfluenceRadius', () => {
6
6
  test('computes rSOI = a * (m/M)^(2/5) for typical inputs (Earth around Sun, km-based)', () => {
7
7
  const aKm = 149597870.7; // km
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sphere-of-influence-radius.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/sphere-of-influence-radius.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vis-viva-speed.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/vis-viva-speed.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { absClose, relClose } from './helpers';
4
- import { visVivaSpeed } from '../categories/orbits/vis-viva-speed';
3
+ import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { visVivaSpeed } from '../vis-viva-speed';
5
5
  describe('visVivaSpeed', () => {
6
6
  test('circular orbit: a = r → v = sqrt(μ/r)', () => {
7
7
  const mu = 3.986004418e14; // m³/s² (Earth GM)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vis-viva-speed.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/vis-viva-speed.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Compute **atmospheric drag acceleration magnitude**.
3
+ *
4
+ * Equation:
5
+ * $$
6
+ * a_D=\frac{1}{2}\,\frac{C_D A}{m}\,\rho\,v^2
7
+ * $$
8
+ *
9
+ * Where:
10
+ * - $C_D$ is the drag coefficient (dimensionless)
11
+ * - $A$ is reference area normal to the flow (m²)
12
+ * - $m$ is spacecraft mass (kg)
13
+ * - $\rho$ is atmospheric density (kg/m³)
14
+ * - $v$ is speed relative to the atmosphere (m/s)
15
+ *
16
+ * Units:
17
+ * - Returns acceleration magnitude in **m/s²**.
18
+ *
19
+ * Note:
20
+ * - This returns the **magnitude** of drag acceleration. The drag acceleration vector points
21
+ * opposite the velocity direction (i.e., along $-\hat{v}$).
22
+ *
23
+ * @param Cd Drag coefficient $C_D$ (finite, >= 0).
24
+ * @param A Reference area $A$ (finite, >= 0), in m².
25
+ * @param m Mass $m$ (finite, > 0), in kg.
26
+ * @param rho Atmospheric density $\rho$ (finite, >= 0), in kg/m³.
27
+ * @param v Speed relative to the atmosphere $v$ (finite, >= 0), in m/s.
28
+ * @returns Drag acceleration magnitude $a_D$ in m/s².
29
+ * @throws {TypeError} If any input is not finite.
30
+ * @throws {RangeError} If `m <= 0` or any of `Cd, A, rho, v` is negative.
31
+ * @group Orbits
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * // Example (rough LEO order-of-magnitude):
36
+ * const aD = atmosphericDragAcceleration(2.2, 2.0, 500, 1e-12, 7700);
37
+ * ```
38
+ */
39
+ export declare const atmosphericDragAcceleration: (Cd: number, A: number, m: number, rho: number, v: number) => number;
40
+ //# sourceMappingURL=atmospheric-drag-acceleration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atmospheric-drag-acceleration.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/atmospheric-drag-acceleration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,2BAA2B,GACtC,IAAI,MAAM,EACV,GAAG,MAAM,EACT,GAAG,MAAM,EACT,KAAK,MAAM,EACX,GAAG,MAAM,KACR,MA0BF,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Compute **atmospheric drag acceleration magnitude**.
3
+ *
4
+ * Equation:
5
+ * $$
6
+ * a_D=\frac{1}{2}\,\frac{C_D A}{m}\,\rho\,v^2
7
+ * $$
8
+ *
9
+ * Where:
10
+ * - $C_D$ is the drag coefficient (dimensionless)
11
+ * - $A$ is reference area normal to the flow (m²)
12
+ * - $m$ is spacecraft mass (kg)
13
+ * - $\rho$ is atmospheric density (kg/m³)
14
+ * - $v$ is speed relative to the atmosphere (m/s)
15
+ *
16
+ * Units:
17
+ * - Returns acceleration magnitude in **m/s²**.
18
+ *
19
+ * Note:
20
+ * - This returns the **magnitude** of drag acceleration. The drag acceleration vector points
21
+ * opposite the velocity direction (i.e., along $-\hat{v}$).
22
+ *
23
+ * @param Cd Drag coefficient $C_D$ (finite, >= 0).
24
+ * @param A Reference area $A$ (finite, >= 0), in m².
25
+ * @param m Mass $m$ (finite, > 0), in kg.
26
+ * @param rho Atmospheric density $\rho$ (finite, >= 0), in kg/m³.
27
+ * @param v Speed relative to the atmosphere $v$ (finite, >= 0), in m/s.
28
+ * @returns Drag acceleration magnitude $a_D$ in m/s².
29
+ * @throws {TypeError} If any input is not finite.
30
+ * @throws {RangeError} If `m <= 0` or any of `Cd, A, rho, v` is negative.
31
+ * @group Orbits
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * // Example (rough LEO order-of-magnitude):
36
+ * const aD = atmosphericDragAcceleration(2.2, 2.0, 500, 1e-12, 7700);
37
+ * ```
38
+ */
39
+ export const atmosphericDragAcceleration = (Cd, A, m, rho, v) => {
40
+ for (const [name, value] of [
41
+ ['Cd', Cd],
42
+ ['A', A],
43
+ ['m', m],
44
+ ['rho', rho],
45
+ ['v', v]
46
+ ]) {
47
+ if (!Number.isFinite(value)) {
48
+ throw new TypeError(`${name} must be a finite number. Received: ${value}`);
49
+ }
50
+ }
51
+ if (Cd < 0)
52
+ throw new RangeError(`Cd must be >= 0. Received: ${Cd}`);
53
+ if (A < 0)
54
+ throw new RangeError(`A must be >= 0. Received: ${A}`);
55
+ if (m <= 0)
56
+ throw new RangeError(`m must be > 0. Received: ${m}`);
57
+ if (rho < 0)
58
+ throw new RangeError(`rho must be >= 0. Received: ${rho}`);
59
+ if (v < 0)
60
+ throw new RangeError(`v must be >= 0. Received: ${v}`);
61
+ return 0.5 * ((Cd * A) / m) * rho * v * v;
62
+ };
63
+ //# sourceMappingURL=atmospheric-drag-acceleration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atmospheric-drag-acceleration.js","sourceRoot":"","sources":["../../../src/categories/orbits/atmospheric-drag-acceleration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,EAAU,EACV,CAAS,EACT,CAAS,EACT,GAAW,EACX,CAAS,EACD,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;QAC1B,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,CAAC;KACA,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CACjB,GAAG,IAAI,uCAAuC,KAAK,EAAE,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,EAAE,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,GAAG,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IAExE,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Radians } from '@interstellar-tools/types';
1
+ import type { Radians } from '@interstellar-tools/types';
2
2
  /**
3
3
  * **Flight-path angle** ($ \gamma $) from **true anomaly** ($ \nu $) and eccentricity ($ e $).
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"flight-path-angle-from-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/flight-path-angle-from-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,8BAA8B,GACzC,IAAI,OAAO,EACX,GAAG,MAAM,KACR,OAaF,CAAC"}
1
+ {"version":3,"file":"flight-path-angle-from-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/flight-path-angle-from-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,8BAA8B,GACzC,IAAI,OAAO,EACX,GAAG,MAAM,KACR,OAaF,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { Radians } from '@interstellar-tools/types';
2
+ /**
3
+ * Compute **argument of perigee rotation** (J2 secular drift of ω) for an orbit about an oblate body.
4
+ *
5
+ * Equation (common approximation):
6
+ * $$
7
+ * \dot{\omega}\approx\frac{3}{4}J_2\,n\left(\frac{R_e}{a}\right)^2\frac{(5\cos^2 i-1)}{(1-e^2)^2}
8
+ * $$
9
+ *
10
+ * Where:
11
+ * - $ J_2 $ is the second zonal harmonic (dimensionless)
12
+ * - $ n $ is mean motion (rad/s)
13
+ * - $ R_e $ is the body's equatorial radius (m or km)
14
+ * - $ a $ is semi-major axis (m or km)
15
+ * - $ i $ is inclination (radians)
16
+ * - $ e $ is eccentricity (dimensionless)
17
+ *
18
+ * Units:
19
+ * - If `n` is in rad/s and `i` is in radians, the result is in **rad/s**.
20
+ * - `Re` and `a` must use the same distance unit.
21
+ *
22
+ * @param {number} J2 Second zonal harmonic (finite).
23
+ * @param {number} n Mean motion (finite, >= 0), in rad/s.
24
+ * @param {number} Re Equatorial radius (finite, > 0).
25
+ * @param {number} a Semi-major axis (finite, > 0).
26
+ * @param {Radians} i Inclination (finite), in radians.
27
+ * @param {number} e Eccentricity (finite, 0 <= e < 1).
28
+ * @returns {number} Argument of perigee drift rate $ \dot{\omega} $ in rad/s.
29
+ * @throws {TypeError} If any input is not finite.
30
+ * @throws {RangeError} If `n < 0`, `Re <= 0`, `a <= 0`, or `e` is outside [0, 1].
31
+ * @group Orbits
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * // Earth-ish example (units must be consistent):
36
+ * const J2 = 1.08262668e-3;
37
+ * const n = 0.001078; // rad/s (roughly LEO)
38
+ * const Re = 6378.137; // km
39
+ * const a = 7000; // km
40
+ * const i = (63.4 * Math.PI) / 180 as Radians; // "critical inclination" region
41
+ * const e = 0.001;
42
+ *
43
+ * const omegaDot = j2ArgumentOfPerigeeRate(J2, n, Re, a, i, e);
44
+ * ```
45
+ * @see https://science.nasa.gov/wp-content/uploads/2023/05/GDC_OrbitPrimer.pdf NASA GSFC - GDC Orbit Primer (shows apsidal precession dω/dt from J2; equivalent to the (5cos²i−1) form)
46
+ * @see https://en.wikipedia.org/wiki/Apsidal_precession Wikipedia - Apsidal precession (background + links on causes incl. quadrupole/oblateness)
47
+ * @see https://freeflyer.com/_freeflyeruniversityguide/j2_perturbation.htm FreeFlyer University Guide - J2 perturbation (mission-design oriented discussion of RAAN & argument of perigee drift)
48
+ * @see https://juliaspace.github.io/SatelliteToolboxPropagators.jl/stable/man/propagators/j2/ SatelliteToolboxPropagators.jl - J2 analytical propagator (lists secular ω(t) rate with the (4−5sin²i) term)
49
+ * @see https://articles.adsabs.harvard.edu/pdf/1959AJ.....64..367K Kozai (1959) - The Motion of a Close Earth Satellite (classic primary source on secular J2 effects)
50
+ * @see https://help.agi.com/stk/Content/stk/vehSat_orbitProp_2bodyJ2J4.htm AGI/STK Help - Two-Body + J2/J4 perturbations (notes secular drift in argument of perigee)
51
+ */
52
+ export declare const j2ArgumentOfPerigeeRate: (J2: number, n: number, Re: number, a: number, i: Radians, e: number) => number;
53
+ //# sourceMappingURL=j2-argument-of-perigee-rate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"j2-argument-of-perigee-rate.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/j2-argument-of-perigee-rate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,eAAO,MAAM,uBAAuB,GAClC,IAAI,MAAM,EACV,GAAG,MAAM,EACT,IAAI,MAAM,EACV,GAAG,MAAM,EACT,GAAG,OAAO,EACV,GAAG,MAAM,KACR,MAmCF,CAAC"}
@@ -0,0 +1,84 @@
1
+ /* node:coverage disable */
2
+ /**
3
+ * Compute **argument of perigee rotation** (J2 secular drift of ω) for an orbit about an oblate body.
4
+ *
5
+ * Equation (common approximation):
6
+ * $$
7
+ * \dot{\omega}\approx\frac{3}{4}J_2\,n\left(\frac{R_e}{a}\right)^2\frac{(5\cos^2 i-1)}{(1-e^2)^2}
8
+ * $$
9
+ *
10
+ * Where:
11
+ * - $ J_2 $ is the second zonal harmonic (dimensionless)
12
+ * - $ n $ is mean motion (rad/s)
13
+ * - $ R_e $ is the body's equatorial radius (m or km)
14
+ * - $ a $ is semi-major axis (m or km)
15
+ * - $ i $ is inclination (radians)
16
+ * - $ e $ is eccentricity (dimensionless)
17
+ *
18
+ * Units:
19
+ * - If `n` is in rad/s and `i` is in radians, the result is in **rad/s**.
20
+ * - `Re` and `a` must use the same distance unit.
21
+ *
22
+ * @param {number} J2 Second zonal harmonic (finite).
23
+ * @param {number} n Mean motion (finite, >= 0), in rad/s.
24
+ * @param {number} Re Equatorial radius (finite, > 0).
25
+ * @param {number} a Semi-major axis (finite, > 0).
26
+ * @param {Radians} i Inclination (finite), in radians.
27
+ * @param {number} e Eccentricity (finite, 0 <= e < 1).
28
+ * @returns {number} Argument of perigee drift rate $ \dot{\omega} $ in rad/s.
29
+ * @throws {TypeError} If any input is not finite.
30
+ * @throws {RangeError} If `n < 0`, `Re <= 0`, `a <= 0`, or `e` is outside [0, 1].
31
+ * @group Orbits
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * // Earth-ish example (units must be consistent):
36
+ * const J2 = 1.08262668e-3;
37
+ * const n = 0.001078; // rad/s (roughly LEO)
38
+ * const Re = 6378.137; // km
39
+ * const a = 7000; // km
40
+ * const i = (63.4 * Math.PI) / 180 as Radians; // "critical inclination" region
41
+ * const e = 0.001;
42
+ *
43
+ * const omegaDot = j2ArgumentOfPerigeeRate(J2, n, Re, a, i, e);
44
+ * ```
45
+ * @see https://science.nasa.gov/wp-content/uploads/2023/05/GDC_OrbitPrimer.pdf NASA GSFC - GDC Orbit Primer (shows apsidal precession dω/dt from J2; equivalent to the (5cos²i−1) form)
46
+ * @see https://en.wikipedia.org/wiki/Apsidal_precession Wikipedia - Apsidal precession (background + links on causes incl. quadrupole/oblateness)
47
+ * @see https://freeflyer.com/_freeflyeruniversityguide/j2_perturbation.htm FreeFlyer University Guide - J2 perturbation (mission-design oriented discussion of RAAN & argument of perigee drift)
48
+ * @see https://juliaspace.github.io/SatelliteToolboxPropagators.jl/stable/man/propagators/j2/ SatelliteToolboxPropagators.jl - J2 analytical propagator (lists secular ω(t) rate with the (4−5sin²i) term)
49
+ * @see https://articles.adsabs.harvard.edu/pdf/1959AJ.....64..367K Kozai (1959) - The Motion of a Close Earth Satellite (classic primary source on secular J2 effects)
50
+ * @see https://help.agi.com/stk/Content/stk/vehSat_orbitProp_2bodyJ2J4.htm AGI/STK Help - Two-Body + J2/J4 perturbations (notes secular drift in argument of perigee)
51
+ */
52
+ /* node:coverage enable */
53
+ export const j2ArgumentOfPerigeeRate = (J2, n, Re, a, i, e) => {
54
+ for (const [name, v] of [
55
+ ['J2', J2],
56
+ ['n', n],
57
+ ['Re', Re],
58
+ ['a', a],
59
+ ['i', i],
60
+ ['e', e]
61
+ ]) {
62
+ if (!Number.isFinite(v)) {
63
+ throw new TypeError(`${name} must be a finite number. Received: ${v}`);
64
+ }
65
+ }
66
+ if (n < 0)
67
+ throw new RangeError(`n must be >= 0. Received: ${n}`);
68
+ if (Re <= 0)
69
+ throw new RangeError(`Re must be > 0. Received: ${Re}`);
70
+ if (a <= 0)
71
+ throw new RangeError(`a must be > 0. Received: ${a}`);
72
+ if (e < 0 || e >= 1)
73
+ throw new RangeError(`e must be in [0, 1]. Received: ${e}`);
74
+ const oneMinusESq = 1 - e * e;
75
+ if (oneMinusESq === 0) {
76
+ throw new RangeError(`(1 - e²) must be non-zero. Received e: ${e}`);
77
+ }
78
+ const cosI = Math.cos(i);
79
+ const cosISq = cosI * cosI;
80
+ const factor = 0.75 * J2 * n * Math.pow(Re / a, 2);
81
+ const denom = Math.pow(oneMinusESq, 2);
82
+ return (factor * (5 * cosISq - 1)) / denom;
83
+ };
84
+ //# sourceMappingURL=j2-argument-of-perigee-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"j2-argument-of-perigee-rate.js","sourceRoot":"","sources":["../../../src/categories/orbits/j2-argument-of-perigee-rate.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,EAAU,EACV,CAAS,EACT,EAAU,EACV,CAAS,EACT,CAAU,EACV,CAAS,EACD,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;KACA,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,uCAAuC,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAEvC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7C,CAAC,CAAC"}