@interstellar-tools/equations 0.18.0 → 0.20.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,77 @@
1
+ /**
2
+ * Test whether a 3D point lies on the surface of a **triaxial ellipsoid** (within a tolerance).
3
+ *
4
+ * A triaxial ellipsoid centered at the origin with semi-axes ($ a $), ($ b $), ($ c $) aligned to
5
+ * the ($ x $), ($ y $), ($ z $) axes is defined by the implicit surface:
6
+ *
7
+ * $$
8
+ * \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1
9
+ * $$
10
+ *
11
+ * This function evaluates the left-hand side and checks whether it is within `eps` of 1.
12
+ *
13
+ * ::: info Notes:
14
+ *
15
+ * - This is a **pure geometric** surface membership test; it does not compute the closest
16
+ * point on the ellipsoid or any geodetic latitude/longitude.
17
+ * - For ellipsoids of revolution (oblate/prolate), you typically have ($ a=b $), but this
18
+ * supports the general triaxial case.
19
+ *
20
+ * :::
21
+ *
22
+ * @param x - X coordinate (finite).
23
+ * @param y - Y coordinate (finite).
24
+ * @param z - Z coordinate (finite).
25
+ * @param a - Semi-axis length along x (finite, > 0).
26
+ * @param b - Semi-axis length along y (finite, > 0).
27
+ * @param c - Semi-axis length along z (finite, > 0).
28
+ * @param eps - Allowed absolute tolerance on the implicit value (finite, >= 0). Defaults to `1e-12`.
29
+ * @returns `true` if the point satisfies the ellipsoid equation within `eps`, otherwise `false`.
30
+ * @throws {TypeError} If any input is not a finite number.
31
+ * @throws {RangeError} If `a <= 0`, `b <= 0`, `c <= 0`, or `eps < 0`.
32
+ * @group Cartography
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * // Ellipsoid with semi-axes a=3, b=2, c=1
37
+ * // Point on +X axis should be on the surface: (x,y,z) = (a,0,0)
38
+ * const onSurface = isOnTriaxialEllipsoidSurface(3, 0, 0, 3, 2, 1);
39
+ * // onSurface === true
40
+ * ```
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * // Slightly off the surface (use a looser eps if needed)
45
+ * const onSurface = isOnTriaxialEllipsoidSurface(3.0000001, 0, 0, 3, 2, 1, 1e-6);
46
+ * // onSurface === true
47
+ * ```
48
+ *
49
+ * @see https://en.wikipedia.org/wiki/Ellipsoid Ellipsoid (general definition and implicit equation)
50
+ * @see https://mathworld.wolfram.com/Ellipsoid.html Wolfram MathWorld — Ellipsoid (properties and equations)
51
+ * @see https://en.wikipedia.org/wiki/Triaxial_ellipsoid Triaxial ellipsoid (special case discussion)
52
+ */
53
+ export const isOnTriaxialEllipsoidSurface = (x, y, z, a, b, c, eps = 1e-12) => {
54
+ for (const [name, v] of [
55
+ ['x', x],
56
+ ['y', y],
57
+ ['z', z],
58
+ ['a', a],
59
+ ['b', b],
60
+ ['c', c],
61
+ ['eps', eps]
62
+ ]) {
63
+ if (!Number.isFinite(v))
64
+ throw new TypeError(`${name} must be finite. Received: ${v}`);
65
+ }
66
+ if (a <= 0)
67
+ throw new RangeError(`a must be > 0. Received: ${a}`);
68
+ if (b <= 0)
69
+ throw new RangeError(`b must be > 0. Received: ${b}`);
70
+ if (c <= 0)
71
+ throw new RangeError(`c must be > 0. Received: ${c}`);
72
+ if (eps < 0)
73
+ throw new RangeError(`eps must be >= 0. Received: ${eps}`);
74
+ const value = (x * x) / (a * a) + (y * y) / (b * b) + (z * z) / (c * c);
75
+ return Math.abs(value - 1) <= eps;
76
+ };
77
+ //# sourceMappingURL=is-on-triaxial-ellipsoid-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-on-triaxial-ellipsoid-surface.js","sourceRoot":"","sources":["../../../src/categories/cartography/is-on-triaxial-ellipsoid-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,GAAG,GAAG,KAAK,EACF,EAAE;IACX,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,KAAK,EAAE,GAAG,CAAC;KACJ,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,8BAA8B,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,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,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AACpC,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Compute **planetocentric latitude** ($ \varphi_c $) from body-fixed Cartesian coordinates.
3
+ *
4
+ * Planetocentric latitude is defined as the angle between the body's equatorial plane and
5
+ * the radius vector from the body's center of mass to the point:
6
+ *
7
+ * $$
8
+ * \varphi_c = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\right)
9
+ * $$
10
+ *
11
+ * Implementation note:
12
+ * - This uses `atan2(z, hypot(x,y))` for numerical stability and correct quadrant handling.
13
+ *
14
+ * @param x - X coordinate in a body-fixed frame (finite).
15
+ * @param y - Y coordinate in a body-fixed frame (finite).
16
+ * @param z - Z coordinate in a body-fixed frame (finite).
17
+ * @returns Planetocentric latitude ($ \varphi_c $) in **radians** (range: ($[- \pi/2, \pi/2] $)).
18
+ * @throws {TypeError} If any input is not a finite number.
19
+ * @group Cartography
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * // Point directly above the equator on +X axis:
24
+ * const phi = planetocentricLatitude(1, 0, 0);
25
+ * // phi === 0
26
+ *
27
+ * // Point on +Z axis:
28
+ * const northPole = planetocentricLatitude(0, 0, 1);
29
+ * // northPole === Math.PI / 2
30
+ * ```
31
+ *
32
+ * @see https://en.wikipedia.org/wiki/Planetary_coordinate_system Planetary coordinate system (definitions of planetocentric vs. planetographic latitude)
33
+ * @see https://planetarynames.wr.usgs.gov/Page/Website USGS Planetary Names (planetocentric latitude definition)
34
+ * @see https://pds.nasa.gov/datastandards/pds3/standards/sr/Chapter02.pdf NASA PDS Standards Reference (planetocentric latitude defined as angle to the center-of-mass vector)
35
+ * @see https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/Tutorials/pdf/individual_docs/17_frames_and_coordinate_systems.pdf NAIF SPICE tutorial: Frames and Coordinate Systems (planetocentric/body-fixed frame conventions)
36
+ */
37
+ export declare const planetocentricLatitude: (x: number, y: number, z: number) => number;
38
+ //# sourceMappingURL=planetocentric-latitude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planetocentric-latitude.d.ts","sourceRoot":"","sources":["../../../src/categories/cartography/planetocentric-latitude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,sBAAsB,GACjC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,MAaF,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Compute **planetocentric latitude** ($ \varphi_c $) from body-fixed Cartesian coordinates.
3
+ *
4
+ * Planetocentric latitude is defined as the angle between the body's equatorial plane and
5
+ * the radius vector from the body's center of mass to the point:
6
+ *
7
+ * $$
8
+ * \varphi_c = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\right)
9
+ * $$
10
+ *
11
+ * Implementation note:
12
+ * - This uses `atan2(z, hypot(x,y))` for numerical stability and correct quadrant handling.
13
+ *
14
+ * @param x - X coordinate in a body-fixed frame (finite).
15
+ * @param y - Y coordinate in a body-fixed frame (finite).
16
+ * @param z - Z coordinate in a body-fixed frame (finite).
17
+ * @returns Planetocentric latitude ($ \varphi_c $) in **radians** (range: ($[- \pi/2, \pi/2] $)).
18
+ * @throws {TypeError} If any input is not a finite number.
19
+ * @group Cartography
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * // Point directly above the equator on +X axis:
24
+ * const phi = planetocentricLatitude(1, 0, 0);
25
+ * // phi === 0
26
+ *
27
+ * // Point on +Z axis:
28
+ * const northPole = planetocentricLatitude(0, 0, 1);
29
+ * // northPole === Math.PI / 2
30
+ * ```
31
+ *
32
+ * @see https://en.wikipedia.org/wiki/Planetary_coordinate_system Planetary coordinate system (definitions of planetocentric vs. planetographic latitude)
33
+ * @see https://planetarynames.wr.usgs.gov/Page/Website USGS Planetary Names (planetocentric latitude definition)
34
+ * @see https://pds.nasa.gov/datastandards/pds3/standards/sr/Chapter02.pdf NASA PDS Standards Reference (planetocentric latitude defined as angle to the center-of-mass vector)
35
+ * @see https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/Tutorials/pdf/individual_docs/17_frames_and_coordinate_systems.pdf NAIF SPICE tutorial: Frames and Coordinate Systems (planetocentric/body-fixed frame conventions)
36
+ */
37
+ export const planetocentricLatitude = (x, y, z) => {
38
+ if (!Number.isFinite(x))
39
+ throw new TypeError(`x must be finite. Received: ${x}`);
40
+ if (!Number.isFinite(y))
41
+ throw new TypeError(`y must be finite. Received: ${y}`);
42
+ if (!Number.isFinite(z))
43
+ throw new TypeError(`z must be finite. Received: ${z}`);
44
+ const rxy = Math.hypot(x, y);
45
+ return Math.atan2(z, rxy);
46
+ };
47
+ //# sourceMappingURL=planetocentric-latitude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planetocentric-latitude.js","sourceRoot":"","sources":["../../../src/categories/cartography/planetocentric-latitude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,CAAS,EACT,CAAS,EACT,CAAS,EACD,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Radians } from '@interstellar-tools/types';
2
+ /**
3
+ * Compute planetographic latitude (oblate spheroid) from body-fixed Cartesian coordinates.
4
+ *
5
+ * Given:
6
+ * $$ \tan\varphi_g = \frac{z}{\sqrt{x^2+y^2}}(1-e^2)^{-1}, \qquad e^2=1-\frac{c^2}{a^2} $$
7
+ *
8
+ * This returns:
9
+ * $$ \varphi_g = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\frac{1}{1-e^2}\right) $$
10
+ *
11
+ * @param x X coordinate (finite)
12
+ * @param y Y coordinate (finite)
13
+ * @param z Z coordinate (finite)
14
+ * @param a Equatorial radius (finite, > 0)
15
+ * @param c Polar radius (finite, > 0)
16
+ * @returns Planetographic latitude φg in radians (range: [-π/2, π/2])
17
+ */
18
+ export declare const planetographicLatitudeOblate: (x: number, y: number, z: number, a: number, c: number) => Radians;
19
+ //# sourceMappingURL=planetographic-latitude-oblate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planetographic-latitude-oblate.d.ts","sourceRoot":"","sources":["../../../src/categories/cartography/planetographic-latitude-oblate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,4BAA4B,GACvC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,OA+BF,CAAC"}
@@ -0,0 +1,44 @@
1
+ /* node:coverage disable */
2
+ /**
3
+ * Compute planetographic latitude (oblate spheroid) from body-fixed Cartesian coordinates.
4
+ *
5
+ * Given:
6
+ * $$ \tan\varphi_g = \frac{z}{\sqrt{x^2+y^2}}(1-e^2)^{-1}, \qquad e^2=1-\frac{c^2}{a^2} $$
7
+ *
8
+ * This returns:
9
+ * $$ \varphi_g = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\frac{1}{1-e^2}\right) $$
10
+ *
11
+ * @param x X coordinate (finite)
12
+ * @param y Y coordinate (finite)
13
+ * @param z Z coordinate (finite)
14
+ * @param a Equatorial radius (finite, > 0)
15
+ * @param c Polar radius (finite, > 0)
16
+ * @returns Planetographic latitude φg in radians (range: [-π/2, π/2])
17
+ */
18
+ /* node:coverage enable */
19
+ export const planetographicLatitudeOblate = (x, y, z, a, c) => {
20
+ if (!Number.isFinite(x))
21
+ throw new TypeError(`x must be finite. Received: ${x}`);
22
+ if (!Number.isFinite(y))
23
+ throw new TypeError(`y must be finite. Received: ${y}`);
24
+ if (!Number.isFinite(z))
25
+ throw new TypeError(`z must be finite. Received: ${z}`);
26
+ if (!Number.isFinite(a))
27
+ throw new TypeError(`a must be finite. Received: ${a}`);
28
+ if (!Number.isFinite(c))
29
+ throw new TypeError(`c must be finite. Received: ${c}`);
30
+ if (a <= 0)
31
+ throw new RangeError(`a must be > 0. Received: ${a}`);
32
+ if (c <= 0)
33
+ throw new RangeError(`c must be > 0. Received: ${c}`);
34
+ const rxy = Math.hypot(x, y);
35
+ const e2 = 1 - (c * c) / (a * a);
36
+ const oneMinusE2 = 1 - e2; // = c²/a²
37
+ // Guard against degenerate shapes
38
+ if (oneMinusE2 <= 0) {
39
+ throw new RangeError(`(1 - e²) must be > 0. Computed: ${oneMinusE2}`);
40
+ }
41
+ // φg = atan2(z / (1 - e²), sqrt(x²+y²))
42
+ return Math.atan2(z / oneMinusE2, rxy);
43
+ };
44
+ //# sourceMappingURL=planetographic-latitude-oblate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planetographic-latitude-oblate.js","sourceRoot":"","sources":["../../../src/categories/cartography/planetographic-latitude-oblate.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B;;;;;;;;;;;;;;;GAeG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACA,EAAE;IACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;IAErC,kCAAkC;IAClC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,wCAAwC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,CAAY,CAAC;AACpD,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-acceleration-on1-by2.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.ts"],"names":[],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { accelerationOn1By2 } from '../categories/gravity/acceleration-on1-by2';
4
- import { norm, relClose, scale, sub, vecRelClose } from './helpers';
3
+ import { accelerationOn1By2 } from '../acceleration-on1-by2';
4
+ import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
5
5
  import { G_SI } from '@interstellar-tools/constants';
6
+ import { norm, scale, sub } from '../../helpers/misc';
6
7
  describe('accelerationOn1By2', () => {
7
8
  test('1D sanity (+x): ||a|| = G*m2/r² and points +x', () => {
8
9
  const G = 1;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-acceleration-on1-by2.int.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-force-on1-by2.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.ts"],"names":[],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
- import { norm, relClose, scale, sub, vecRelClose } from './helpers';
3
+ import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
4
4
  import { G_SI } from '@interstellar-tools/constants';
5
- import { forceOn1By2 } from '../categories/gravity/force-on1-by2';
5
+ import { forceOn1By2 } from '../force-on1-by2';
6
+ import { norm, scale, sub } from '../../helpers/misc';
6
7
  describe('forceOn1By2', () => {
7
8
  test('1D sanity (+x): |F| = G*m1*m2/r² and points +x', () => {
8
9
  const G = 1;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-force-on1-by2.int.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,WAAW,EACZ,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEtD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAsB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEzC,mCAAmC;QACnC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO;QACpD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,MAAM,EAAE,GAAsB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAElE,kCAAkC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAsB,CAAC;QACxD,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE3C,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,GAAG,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;QAClD,MAAM,GAAG,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iCAAiC;QAE3E,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE3C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjD,wDAAwD;QACxD,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,KAAK;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,KAAK;QAC7B,MAAM,MAAM,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAsB,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;QAE5D,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAClB,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CACpB,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAErD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAEtC,qDAAqD;QACrD,MAAM,GAAG,GAAG,QAAQ,CAAC;QACrB,MAAM,CAAC,EAAE,CACP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EACpC,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,EAAE,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,+BAA+B;QAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAErE,uBAAuB;QACvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAExE,YAAY;QACZ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-force.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force.spec.ts"],"names":[],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
3
  import { G_SI } from '@interstellar-tools/constants';
4
- import { norm, relClose, vecRelClose } from './helpers';
5
- import { gravitationalForce } from '../categories/gravity/gravitational-force';
4
+ import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
5
+ import { gravitationalForce } from '../gravitational-force';
6
+ import { norm } from '../../helpers/misc';
6
7
  describe('gravitationalForce', () => {
7
8
  test('computes simple 1D case (+x) with custom G', () => {
8
9
  const G = 1; // simple numbers to check algebra
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-force.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-parameters.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-parameters.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 { gravitationalParameter } from '../categories/gravity/gravitational-parameter';
3
+ import { relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { gravitationalParameter } from '../gravitational-parameter';
5
5
  describe('gravitationalParameter', () => {
6
6
  test('computes μ = G(M + m) for simple numbers', () => {
7
7
  const G = 10;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gravitational-parameters.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-parameters.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apply-matrix-3.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-matrix-3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/apply-matrix-3.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ import assert from 'node:assert/strict';
2
+ import test, { describe } from 'node:test';
3
+ import { applyMatrix3 } from '../apply-matrix-3';
4
+ import { vecRelClose } from 'packages/equations/src/__tests__/helpers';
5
+ describe('applyMatrix3', () => {
6
+ test('applies identity matrix (returns same vector)', () => {
7
+ const I = [
8
+ [1, 0, 0],
9
+ [0, 1, 0],
10
+ [0, 0, 1]
11
+ ];
12
+ const v = [1, 2, 3];
13
+ const out = applyMatrix3(I, v);
14
+ assert.deepEqual(out, v);
15
+ });
16
+ test('matches the documented example', () => {
17
+ const M = [
18
+ [1, 0, 0],
19
+ [0, 0, -1],
20
+ [0, 1, 0]
21
+ ];
22
+ const v = [1, 2, 3];
23
+ const out = applyMatrix3(M, v);
24
+ assert.deepEqual(out, [1, -3, 2]);
25
+ });
26
+ test('handles a general matrix-vector multiplication', () => {
27
+ const M = [
28
+ [2, 3, 5],
29
+ [7, 11, 13],
30
+ [17, 19, 23]
31
+ ];
32
+ const v = [29, 31, 37];
33
+ const out = applyMatrix3(M, v);
34
+ const expected = [
35
+ 2 * 29 + 3 * 31 + 5 * 37,
36
+ 7 * 29 + 11 * 31 + 13 * 37,
37
+ 17 * 29 + 19 * 31 + 23 * 37
38
+ ];
39
+ assert.deepEqual(out, expected);
40
+ });
41
+ test('is linear: M*(u+v) = M*u + M*v', () => {
42
+ const M = [
43
+ [1.5, -2, 0.25],
44
+ [0, 3, 4],
45
+ [-1, 0.5, 2]
46
+ ];
47
+ const u = [1, 2, 3];
48
+ const v = [-4, 5, -6];
49
+ const uPlusV = [u[0] + v[0], u[1] + v[1], u[2] + v[2]];
50
+ const left = applyMatrix3(M, uPlusV);
51
+ const rightU = applyMatrix3(M, u);
52
+ const rightV = applyMatrix3(M, v);
53
+ const right = [
54
+ rightU[0] + rightV[0],
55
+ rightU[1] + rightV[1],
56
+ rightU[2] + rightV[2]
57
+ ];
58
+ vecRelClose(left, right);
59
+ });
60
+ test('is homogeneous: M*(k*v) = k*(M*v)', () => {
61
+ const M = [
62
+ [0.1, 0.2, 0.3],
63
+ [0.4, 0.5, 0.6],
64
+ [0.7, 0.8, 0.9]
65
+ ];
66
+ const v = [1.1, -2.2, 3.3];
67
+ const k = -7.5;
68
+ const kv = [k * v[0], k * v[1], k * v[2]];
69
+ const left = applyMatrix3(M, kv);
70
+ const right0 = applyMatrix3(M, v);
71
+ const right = [
72
+ k * right0[0],
73
+ k * right0[1],
74
+ k * right0[2]
75
+ ];
76
+ vecRelClose(left, right);
77
+ });
78
+ });
79
+ //# sourceMappingURL=apply-matrix-3.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-matrix-3.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/apply-matrix-3.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=det-3.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"det-3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/det-3.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ import assert from 'node:assert/strict';
2
+ import test, { describe } from 'node:test';
3
+ import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
4
+ import { det3 } from '../det-3';
5
+ describe('det3', () => {
6
+ test('returns 1 for the identity matrix', () => {
7
+ const I = [
8
+ [1, 0, 0],
9
+ [0, 1, 0],
10
+ [0, 0, 1]
11
+ ];
12
+ assert.equal(det3(I), 1);
13
+ });
14
+ test('matches the documented example (det = 1)', () => {
15
+ const A = [
16
+ [1, 2, 3],
17
+ [0, 1, 4],
18
+ [5, 6, 0]
19
+ ];
20
+ assert.equal(det3(A), 1);
21
+ });
22
+ test('returns 0 for a singular matrix (dependent rows)', () => {
23
+ const A = [
24
+ [1, 2, 3],
25
+ [2, 4, 6], // 2x row0
26
+ [7, 8, 9]
27
+ ];
28
+ assert.equal(det3(A), 0);
29
+ });
30
+ test('changes sign when two rows are swapped', () => {
31
+ const A = [
32
+ [2, 3, 5],
33
+ [7, 11, 13],
34
+ [17, 19, 23]
35
+ ];
36
+ const B = [
37
+ [7, 11, 13], // swap row0 and row1
38
+ [2, 3, 5],
39
+ [17, 19, 23]
40
+ ];
41
+ const detA = det3(A);
42
+ const detB = det3(B);
43
+ relClose(detB, -detA);
44
+ });
45
+ test('scales by k^3 when the entire matrix is scaled by k', () => {
46
+ const A = [
47
+ [1.5, -2, 0.25],
48
+ [0, 3, 4],
49
+ [-1, 0.5, 2]
50
+ ];
51
+ const k = -3.5;
52
+ const kA = [
53
+ [k * A[0][0], k * A[0][1], k * A[0][2]],
54
+ [k * A[1][0], k * A[1][1], k * A[1][2]],
55
+ [k * A[2][0], k * A[2][1], k * A[2][2]]
56
+ ];
57
+ const detA = det3(A);
58
+ const detKA = det3(kA);
59
+ relClose(detKA, detA * k * k * k);
60
+ });
61
+ test('returns +1 for a simple rotation matrix about X by 90°', () => {
62
+ // R1(π/2)
63
+ const c = Math.cos(Math.PI / 2);
64
+ const s = Math.sin(Math.PI / 2);
65
+ const R = [
66
+ [1, 0, 0],
67
+ [0, c, -s],
68
+ [0, s, c]
69
+ ];
70
+ absClose(det3(R), 1, 1e-12);
71
+ });
72
+ });
73
+ //# sourceMappingURL=det-3.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"det-3.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/det-3.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mat-mul3.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat-mul3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/mat-mul3.spec.ts"],"names":[],"mappings":""}