@interstellar-tools/equations 0.17.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 +3 -3
  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,46 @@
1
+ import { Matrix3x3Type } from '@interstellar-tools/types';
2
+ /**
3
+ * Multiply two **3×3 matrices** (row-major).
4
+ *
5
+ * Computes:
6
+ * $$
7
+ * \mathbf{C} = \mathbf{A}\mathbf{B}
8
+ * $$
9
+ *
10
+ * Using standard matrix multiplication:
11
+ * $$
12
+ * C_{r,c} = \sum_{k=0}^{2} A_{r,k}\,B_{k,c}
13
+ * $$
14
+ *
15
+ * Layout:
16
+ * - Matrices are treated as **row-major**: `M[row][col]`.
17
+ *
18
+ * Common usage:
19
+ * - Compose rotations / direction cosine matrices (DCMs), e.g. `R = R3 * R1 * R3`.
20
+ * - Compose linear transforms in 3D geometry and mapping pipelines.
21
+ *
22
+ * @param A - Left matrix (3×3, row-major).
23
+ * @param B - Right matrix (3×3, row-major).
24
+ * @returns The product matrix `A * B` (3×3, row-major).
25
+ * @group Helpers
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const A: Matrix3x3Type = [
30
+ * [1, 2, 3],
31
+ * [0, 1, 4],
32
+ * [5, 6, 0]
33
+ * ];
34
+ *
35
+ * const B: Matrix3x3Type = [
36
+ * [-2, 1, 0],
37
+ * [3, 0, 0],
38
+ * [4, 5, 1]
39
+ * ];
40
+ *
41
+ * const C = matMul3(A, B);
42
+ * // C is A*B
43
+ * ```
44
+ */
45
+ export declare const matMul3: (A: Matrix3x3Type, B: Matrix3x3Type) => Matrix3x3Type;
46
+ //# sourceMappingURL=mat-mul3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat-mul3.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/mat-mul3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,aAAa,EAAE,GAAG,aAAa,KAAG,aAS5D,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Multiply two **3×3 matrices** (row-major).
3
+ *
4
+ * Computes:
5
+ * $$
6
+ * \mathbf{C} = \mathbf{A}\mathbf{B}
7
+ * $$
8
+ *
9
+ * Using standard matrix multiplication:
10
+ * $$
11
+ * C_{r,c} = \sum_{k=0}^{2} A_{r,k}\,B_{k,c}
12
+ * $$
13
+ *
14
+ * Layout:
15
+ * - Matrices are treated as **row-major**: `M[row][col]`.
16
+ *
17
+ * Common usage:
18
+ * - Compose rotations / direction cosine matrices (DCMs), e.g. `R = R3 * R1 * R3`.
19
+ * - Compose linear transforms in 3D geometry and mapping pipelines.
20
+ *
21
+ * @param A - Left matrix (3×3, row-major).
22
+ * @param B - Right matrix (3×3, row-major).
23
+ * @returns The product matrix `A * B` (3×3, row-major).
24
+ * @group Helpers
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const A: Matrix3x3Type = [
29
+ * [1, 2, 3],
30
+ * [0, 1, 4],
31
+ * [5, 6, 0]
32
+ * ];
33
+ *
34
+ * const B: Matrix3x3Type = [
35
+ * [-2, 1, 0],
36
+ * [3, 0, 0],
37
+ * [4, 5, 1]
38
+ * ];
39
+ *
40
+ * const C = matMul3(A, B);
41
+ * // C is A*B
42
+ * ```
43
+ */
44
+ export const matMul3 = (A, B) => {
45
+ const m = (r, c) => A[r][0] * B[0][c] + A[r][1] * B[1][c] + A[r][2] * B[2][c];
46
+ return [
47
+ [m(0, 0), m(0, 1), m(0, 2)],
48
+ [m(1, 0), m(1, 1), m(1, 2)],
49
+ [m(2, 0), m(2, 1), m(2, 2)]
50
+ ];
51
+ };
52
+ //# sourceMappingURL=mat-mul3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat-mul3.js","sourceRoot":"","sources":["../../../src/categories/helpers/mat-mul3.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAgB,EAAE,CAAgB,EAAiB,EAAE;IAC3E,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,OAAO;QACL,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACnB,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,118 @@
1
+ import type { Vector3DTupleType } from '@interstellar-tools/types';
2
+ /**
3
+ * Compute the **Euclidean norm** (length / magnitude) of a 3D vector.
4
+ *
5
+ * $$
6
+ * \lVert \mathbf{v} \rVert = \sqrt{x^2 + y^2 + z^2}
7
+ * $$
8
+ *
9
+ * Uses `Math.hypot` for numerical stability.
10
+ *
11
+ * @param v - 3D vector `[x, y, z]`.
12
+ * @returns Vector magnitude (same units as the components of `v`).
13
+ * @group Helpers
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * norm([3, 4, 12]); // 13
18
+ * ```
19
+ */
20
+ export declare const norm: (v: Vector3DTupleType) => number;
21
+ /**
22
+ * Scale a 3D vector by a scalar.
23
+ *
24
+ * Computes:
25
+ * $$
26
+ * s\mathbf{v} = [sx, sy, sz]
27
+ * $$
28
+ *
29
+ * @param v - 3D vector `[x, y, z]`.
30
+ * @param s - Scalar multiplier.
31
+ * @returns Scaled vector `s * v`.
32
+ * @group Helpers
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * scale([1, -2, 3], 10); // [10, -20, 30]
37
+ * ```
38
+ */
39
+ export declare const scale: (v: Vector3DTupleType, s: number) => Vector3DTupleType;
40
+ /**
41
+ * Subtract two 3D vectors (`a - b`).
42
+ *
43
+ * @param a - Minuend vector.
44
+ * @param b - Subtrahend vector.
45
+ * @returns Difference vector `a - b`.
46
+ * @group Helpers
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * sub([3, 2, 1], [1, 1, 1]); // [2, 1, 0]
51
+ * ```
52
+ */
53
+ export declare const sub: (a: Vector3DTupleType, b: Vector3DTupleType) => Vector3DTupleType;
54
+ /**
55
+ * Compute the **dot product** of two 3D vectors.
56
+ *
57
+ * $$
58
+ * \mathbf{a}\cdot\mathbf{b} = a_x b_x + a_y b_y + a_z b_z
59
+ * $$
60
+ *
61
+ * @param a - First vector.
62
+ * @param b - Second vector.
63
+ * @returns Dot product (units: product of the input component units).
64
+ * @group Helpers
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * dot([1, 2, 3], [4, 5, 6]); // 32
69
+ * ```
70
+ */
71
+ export declare const dot: (a: Vector3DTupleType, b: Vector3DTupleType) => number;
72
+ /**
73
+ * Normalize an angle to the range **[0, 2π)**.
74
+ *
75
+ * This is commonly used to keep anomalies / angles within a canonical interval.
76
+ *
77
+ * @param x - Angle in radians (or any unit, as long as `TWO_PI` matches that unit).
78
+ * @returns Equivalent angle in the range `[0, 2π)`.
79
+ * @group Helpers
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * norm2pi(7); // ~0.7168 (if radians)
84
+ * norm2pi(-Math.PI / 2); // 3π/2
85
+ * ```
86
+ */
87
+ export declare const norm2pi: (x: number) => number;
88
+ /**
89
+ * Compute the **Kepler equation residual** for an elliptical orbit:
90
+ *
91
+ * $$
92
+ * E - e\sin(E) = M
93
+ * $$
94
+ *
95
+ * This function returns:
96
+ * $$
97
+ * r(E) = E - e\sin(E) - \mathrm{wrap}_{2\pi}(M)
98
+ * $$
99
+ *
100
+ * where `wrap_{2π}` normalizes `M` into `[0, 2π)` to keep the residual well-behaved.
101
+ *
102
+ * Common usage: root-finding / iteration (Newton–Raphson, Halley, etc.) to solve for
103
+ * eccentric anomaly `E` given eccentricity `e` and mean anomaly `M`.
104
+ *
105
+ * @param E - Eccentric anomaly `E` (radians).
106
+ * @param e - Eccentricity `e` (dimensionless).
107
+ * @param M - Mean anomaly `M` (radians).
108
+ * @returns Residual value `E - e*sin(E) - M_wrapped`.
109
+ * @group Kepler
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * // If E solves Kepler's equation, residual(E,e,M) ≈ 0
114
+ * const r = residual(1.0, 0.1, 0.9);
115
+ * ```
116
+ */
117
+ export declare const residual: (E: number, e: number, M: number) => number;
118
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/misc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,iBAAiB,WAExC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,iBAAiB,EAAE,GAAG,MAAM,KAAG,iBAEvD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,GAAG,GACd,GAAG,iBAAiB,EACpB,GAAG,iBAAiB,KACnB,iBAEF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,GAAI,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,WAE7D,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,MAEnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,WAIvD,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { TWO_PI } from '@interstellar-tools/constants';
2
+ /**
3
+ * Compute the **Euclidean norm** (length / magnitude) of a 3D vector.
4
+ *
5
+ * $$
6
+ * \lVert \mathbf{v} \rVert = \sqrt{x^2 + y^2 + z^2}
7
+ * $$
8
+ *
9
+ * Uses `Math.hypot` for numerical stability.
10
+ *
11
+ * @param v - 3D vector `[x, y, z]`.
12
+ * @returns Vector magnitude (same units as the components of `v`).
13
+ * @group Helpers
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * norm([3, 4, 12]); // 13
18
+ * ```
19
+ */
20
+ export const norm = (v) => {
21
+ return Math.hypot(v[0], v[1], v[2]);
22
+ };
23
+ /**
24
+ * Scale a 3D vector by a scalar.
25
+ *
26
+ * Computes:
27
+ * $$
28
+ * s\mathbf{v} = [sx, sy, sz]
29
+ * $$
30
+ *
31
+ * @param v - 3D vector `[x, y, z]`.
32
+ * @param s - Scalar multiplier.
33
+ * @returns Scaled vector `s * v`.
34
+ * @group Helpers
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * scale([1, -2, 3], 10); // [10, -20, 30]
39
+ * ```
40
+ */
41
+ export const scale = (v, s) => {
42
+ return [v[0] * s, v[1] * s, v[2] * s];
43
+ };
44
+ /**
45
+ * Subtract two 3D vectors (`a - b`).
46
+ *
47
+ * @param a - Minuend vector.
48
+ * @param b - Subtrahend vector.
49
+ * @returns Difference vector `a - b`.
50
+ * @group Helpers
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * sub([3, 2, 1], [1, 1, 1]); // [2, 1, 0]
55
+ * ```
56
+ */
57
+ export const sub = (a, b) => {
58
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
59
+ };
60
+ /**
61
+ * Compute the **dot product** of two 3D vectors.
62
+ *
63
+ * $$
64
+ * \mathbf{a}\cdot\mathbf{b} = a_x b_x + a_y b_y + a_z b_z
65
+ * $$
66
+ *
67
+ * @param a - First vector.
68
+ * @param b - Second vector.
69
+ * @returns Dot product (units: product of the input component units).
70
+ * @group Helpers
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * dot([1, 2, 3], [4, 5, 6]); // 32
75
+ * ```
76
+ */
77
+ export const dot = (a, b) => {
78
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
79
+ };
80
+ /**
81
+ * Normalize an angle to the range **[0, 2π)**.
82
+ *
83
+ * This is commonly used to keep anomalies / angles within a canonical interval.
84
+ *
85
+ * @param x - Angle in radians (or any unit, as long as `TWO_PI` matches that unit).
86
+ * @returns Equivalent angle in the range `[0, 2π)`.
87
+ * @group Helpers
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * norm2pi(7); // ~0.7168 (if radians)
92
+ * norm2pi(-Math.PI / 2); // 3π/2
93
+ * ```
94
+ */
95
+ export const norm2pi = (x) => {
96
+ return ((x % TWO_PI) + TWO_PI) % TWO_PI;
97
+ };
98
+ /**
99
+ * Compute the **Kepler equation residual** for an elliptical orbit:
100
+ *
101
+ * $$
102
+ * E - e\sin(E) = M
103
+ * $$
104
+ *
105
+ * This function returns:
106
+ * $$
107
+ * r(E) = E - e\sin(E) - \mathrm{wrap}_{2\pi}(M)
108
+ * $$
109
+ *
110
+ * where `wrap_{2π}` normalizes `M` into `[0, 2π)` to keep the residual well-behaved.
111
+ *
112
+ * Common usage: root-finding / iteration (Newton–Raphson, Halley, etc.) to solve for
113
+ * eccentric anomaly `E` given eccentricity `e` and mean anomaly `M`.
114
+ *
115
+ * @param E - Eccentric anomaly `E` (radians).
116
+ * @param e - Eccentricity `e` (dimensionless).
117
+ * @param M - Mean anomaly `M` (radians).
118
+ * @returns Residual value `E - e*sin(E) - M_wrapped`.
119
+ * @group Kepler
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * // If E solves Kepler's equation, residual(E,e,M) ≈ 0
124
+ * const r = residual(1.0, 0.1, 0.9);
125
+ * ```
126
+ */
127
+ export const residual = (E, e, M) => {
128
+ const Mm = norm2pi(M);
129
+ return E - e * Math.sin(E) - Mm;
130
+ };
131
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/categories/helpers/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGvD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAoB,EAAE,EAAE;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAoB,EAAE,CAAS,EAAqB,EAAE;IAC1E,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,CAAoB,EACpB,CAAoB,EACD,EAAE;IACrB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAoB,EAAE,CAAoB,EAAE,EAAE;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE;IAC3C,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC1C,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { Radians } from '@interstellar-tools/types';
2
+ /**
3
+ * Convert **degrees → radians**.
4
+ *
5
+ * Uses the standard relation:
6
+ * $$
7
+ * \pi\ \text{rad} = 180^\circ
8
+ * $$
9
+ *
10
+ * @param deg - Angle in **degrees**.
11
+ * @returns Angle in **radians** (branded as {@link Radians}).
12
+ * @group Helpers
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const halfTurn = toRad(180); // π (Radians)
17
+ * const rightAngle = toRad(90); // π/2 (Radians)
18
+ * ```
19
+ */
20
+ export declare const toRad: (deg: number) => Radians;
21
+ /**
22
+ * Brand a numeric value as {@link Radians}.
23
+ *
24
+ * This is a **type-level** helper only: it does not change the runtime value, but it
25
+ * prevents accidentally mixing degree-values with radian-values at compile time.
26
+ *
27
+ * Use this when you already have a value in radians (e.g., from `Math.atan2`, `Math.PI`,
28
+ * or your own radian-based computations) and want to pass it to APIs that require `Radians`.
29
+ *
30
+ * @param x - Angle value already expressed in **radians**.
31
+ * @returns The same numeric value, branded as {@link Radians}.
32
+ * @group Helpers
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const theta = rad(Math.PI / 3);
37
+ * // theta has type Radians
38
+ * ```
39
+ */
40
+ export declare const rad: (x: number) => Radians;
41
+ //# sourceMappingURL=radians.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radians.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/radians.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAgC,OAAO,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,OAAuB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Convert **degrees → radians**.
3
+ *
4
+ * Uses the standard relation:
5
+ * $$
6
+ * \pi\ \text{rad} = 180^\circ
7
+ * $$
8
+ *
9
+ * @param deg - Angle in **degrees**.
10
+ * @returns Angle in **radians** (branded as {@link Radians}).
11
+ * @group Helpers
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const halfTurn = toRad(180); // π (Radians)
16
+ * const rightAngle = toRad(90); // π/2 (Radians)
17
+ * ```
18
+ */
19
+ export const toRad = (deg) => ((deg * Math.PI) / 180);
20
+ /**
21
+ * Brand a numeric value as {@link Radians}.
22
+ *
23
+ * This is a **type-level** helper only: it does not change the runtime value, but it
24
+ * prevents accidentally mixing degree-values with radian-values at compile time.
25
+ *
26
+ * Use this when you already have a value in radians (e.g., from `Math.atan2`, `Math.PI`,
27
+ * or your own radian-based computations) and want to pass it to APIs that require `Radians`.
28
+ *
29
+ * @param x - Angle value already expressed in **radians**.
30
+ * @returns The same numeric value, branded as {@link Radians}.
31
+ * @group Helpers
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const theta = rad(Math.PI / 3);
36
+ * // theta has type Radians
37
+ * ```
38
+ */
39
+ export const rad = (x) => x;
40
+ //# sourceMappingURL=radians.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radians.js","sourceRoot":"","sources":["../../../src/categories/helpers/radians.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAY,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAY,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Matrix3x3Type, Radians } from '@interstellar-tools/types';
2
+ /**
3
+ * Construct a **right-handed rotation matrix about the x-axis** (often written **R₁**).
4
+ *
5
+ * This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
6
+ * around the **+X** axis, using the common aerospace convention:
7
+ *
8
+ * $$
9
+ * \mathbf{R}_1(\theta)=
10
+ * \begin{bmatrix}
11
+ * 1 & 0 & 0 \\
12
+ * 0 & \cos\theta & -\sin\theta \\
13
+ * 0 & \sin\theta & \cos\theta
14
+ * \end{bmatrix}
15
+ * $$
16
+ *
17
+ * ::: info Notes:
18
+ *
19
+ * - `theta` is in **radians**.
20
+ * - Matrix layout is **row-major**: `M[row][col]`.
21
+ * - Useful for composing 3-1-3 / 3-2-1 sequences (e.g., IAU body orientation) and for
22
+ * general 3D frame transforms in mapping pipelines.
23
+ *
24
+ * :::
25
+ *
26
+ * @param theta - Rotation angle ($ \theta $) in **radians** (finite).
27
+ * @returns 3×3 rotation matrix ($ \mathbf{R}_1(\theta) $) (row-major).
28
+ * @throws {TypeError} If `theta` is not a finite number.
29
+ * @group Helpers
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // Rotate a vector about +X by 90°:
34
+ * const R = rot1(Math.PI / 2);
35
+ * ```
36
+ */
37
+ export declare const rot1: (theta: Radians) => Matrix3x3Type;
38
+ //# sourceMappingURL=rot-1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rot-1.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/rot-1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,aAYrC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Construct a **right-handed rotation matrix about the x-axis** (often written **R₁**).
3
+ *
4
+ * This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
5
+ * around the **+X** axis, using the common aerospace convention:
6
+ *
7
+ * $$
8
+ * \mathbf{R}_1(\theta)=
9
+ * \begin{bmatrix}
10
+ * 1 & 0 & 0 \\
11
+ * 0 & \cos\theta & -\sin\theta \\
12
+ * 0 & \sin\theta & \cos\theta
13
+ * \end{bmatrix}
14
+ * $$
15
+ *
16
+ * ::: info Notes:
17
+ *
18
+ * - `theta` is in **radians**.
19
+ * - Matrix layout is **row-major**: `M[row][col]`.
20
+ * - Useful for composing 3-1-3 / 3-2-1 sequences (e.g., IAU body orientation) and for
21
+ * general 3D frame transforms in mapping pipelines.
22
+ *
23
+ * :::
24
+ *
25
+ * @param theta - Rotation angle ($ \theta $) in **radians** (finite).
26
+ * @returns 3×3 rotation matrix ($ \mathbf{R}_1(\theta) $) (row-major).
27
+ * @throws {TypeError} If `theta` is not a finite number.
28
+ * @group Helpers
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * // Rotate a vector about +X by 90°:
33
+ * const R = rot1(Math.PI / 2);
34
+ * ```
35
+ */
36
+ export const rot1 = (theta) => {
37
+ if (!Number.isFinite(theta))
38
+ throw new TypeError(`theta must be finite. Received: ${theta}`);
39
+ const c = Math.cos(theta);
40
+ const s = Math.sin(theta);
41
+ return [
42
+ [1, 0, 0],
43
+ [0, c, -s],
44
+ [0, s, c]
45
+ ];
46
+ };
47
+ //# sourceMappingURL=rot-1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rot-1.js","sourceRoot":"","sources":["../../../src/categories/helpers/rot-1.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAiB,EAAE;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO;QACL,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACD,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Matrix3x3Type, Radians } from '@interstellar-tools/types';
2
+ /**
3
+ * Construct a **right-handed rotation matrix about the z-axis** (often written **R₃**).
4
+ *
5
+ * This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
6
+ * around the **+Z** axis:
7
+ *
8
+ * $$
9
+ * \mathbf{R}_3(\theta)=
10
+ * \begin{bmatrix}
11
+ * \cos\theta & -\sin\theta & 0 \\
12
+ * \sin\theta & \cos\theta & 0 \\
13
+ * 0 & 0 & 1
14
+ * \end{bmatrix}
15
+ * $$
16
+ *
17
+ * ::: info Notes:
18
+ *
19
+ * - `theta` is in **radians**.
20
+ * - Matrix layout is **row-major**: `M[row][col]`.
21
+ * - Common in 3-1-3 / 3-2-1 rotation sequences (e.g., IAU pole + prime meridian rotations)
22
+ * and general 3D coordinate transforms.
23
+ *
24
+ * :::
25
+ *
26
+ * @param theta - Rotation angle ($ \theta $) in **radians** (finite).
27
+ * @returns 3×3 rotation matrix ($ \mathbf{R}_3(\theta) $) (row-major).
28
+ * @throws {TypeError} If `theta` is not a finite number.
29
+ * @group Helpers
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // Rotate about +Z by 90°:
34
+ * const R = rot3(Math.PI / 2);
35
+ * ```
36
+ */
37
+ export declare const rot3: (theta: Radians) => Matrix3x3Type;
38
+ //# sourceMappingURL=rot-3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rot-3.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/rot-3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,aAYrC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Construct a **right-handed rotation matrix about the z-axis** (often written **R₃**).
3
+ *
4
+ * This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
5
+ * around the **+Z** axis:
6
+ *
7
+ * $$
8
+ * \mathbf{R}_3(\theta)=
9
+ * \begin{bmatrix}
10
+ * \cos\theta & -\sin\theta & 0 \\
11
+ * \sin\theta & \cos\theta & 0 \\
12
+ * 0 & 0 & 1
13
+ * \end{bmatrix}
14
+ * $$
15
+ *
16
+ * ::: info Notes:
17
+ *
18
+ * - `theta` is in **radians**.
19
+ * - Matrix layout is **row-major**: `M[row][col]`.
20
+ * - Common in 3-1-3 / 3-2-1 rotation sequences (e.g., IAU pole + prime meridian rotations)
21
+ * and general 3D coordinate transforms.
22
+ *
23
+ * :::
24
+ *
25
+ * @param theta - Rotation angle ($ \theta $) in **radians** (finite).
26
+ * @returns 3×3 rotation matrix ($ \mathbf{R}_3(\theta) $) (row-major).
27
+ * @throws {TypeError} If `theta` is not a finite number.
28
+ * @group Helpers
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * // Rotate about +Z by 90°:
33
+ * const R = rot3(Math.PI / 2);
34
+ * ```
35
+ */
36
+ export const rot3 = (theta) => {
37
+ if (!Number.isFinite(theta))
38
+ throw new TypeError(`theta must be finite. Received: ${theta}`);
39
+ const c = Math.cos(theta);
40
+ const s = Math.sin(theta);
41
+ return [
42
+ [c, -s, 0],
43
+ [s, c, 0],
44
+ [0, 0, 1]
45
+ ];
46
+ };
47
+ //# sourceMappingURL=rot-3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rot-3.js","sourceRoot":"","sources":["../../../src/categories/helpers/rot-3.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAiB,EAAE;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO;QACL,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACD,CAAC;AACb,CAAC,CAAC"}