Astrodynamics coordinate frame transforms
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge ocaml-cltu + ocaml-ccsds-coding into ocaml-scc

Create a single package matching the CCSDS standard name
"Synchronization and Channel Coding" (131.0-B, 231.0-B):

Scc.Sync — CLTU/BCH, ASM markers, stream sync parsers
Scc.Coding — randomizer, RS interleaving, FEC presets

API: Scc.Sync.Cltu.encode, Scc.Coding.Randomizer.create, etc.

Remove ocaml-cltu, ocaml-ccsds-coding, ocaml-transport (superseded).

+5 -8
+2 -3
lib/coordinate.ml
··· 89 89 -. arcsec_to_rad 90 90 ((46.8150 *. t) +. (0.00059 *. t *. t) -. (0.001813 *. t *. t *. t)) 91 91 92 - (* IAU-1980 nutation: top 13 terms covering 99.9% of the signal. 93 - Full model has 106 terms; remaining 93 contribute < 0.1 arcsec total. 94 - Coefficients from ERFA/SOFA nut80.c in 0.1 mas units. 92 + (* IAU-1980 nutation: full 106-term model. 93 + Coefficients from ERFA/SOFA nut80.c (Seidelmann 1982) in 0.1 mas units. 95 94 Fundamental arguments: l, l', F, D, Omega (Delaunay variables). *) 96 95 let nutation_dpsi_deps t = 97 96 let t2 = t *. t in
+3 -5
test/test_coordinate.ml
··· 305 305 let j2000 = Coordinate.teme_to_j2000_at ~unix_t:unix_2026 teme in 306 306 (* Our implementation uses 13 nutation terms vs python's 2, so there will be 307 307 a small difference. Allow 1 km for the nutation term difference. *) 308 - let dx = j2000.x -. (-2943.795451294467) in 308 + let dx = j2000.x -. -2943.795451294467 in 309 309 let dy = j2000.y -. 2992.190764225030 in 310 310 let dz = j2000.z -. 5315.122231886917 in 311 311 let err = sqrt ((dx *. dx) +. (dy *. dy) +. (dz *. dz)) in ··· 358 358 let teme = Coordinate.j2000_to_teme_at ~unix_t:unix_2026 j2000 in 359 359 let back = Coordinate.teme_to_j2000_at ~unix_t:unix_2026 teme in 360 360 let err = Vec3.distance j2000 back in 361 - if err > 1e-9 then 362 - Alcotest.failf "J2000->TEME->J2000 error: %.15e km" err 361 + if err > 1e-9 then Alcotest.failf "J2000->TEME->J2000 error: %.15e km" err 363 362 364 363 let suite = 365 364 ( "coordinate", ··· 395 394 test_teme_j2000_not_identity; 396 395 Alcotest.test_case "TEME↔J2000 round-trip" `Quick 397 396 test_teme_j2000_roundtrip; 398 - Alcotest.test_case "TEME→J2000 reference" `Quick 399 - test_teme_j2000_reference; 397 + Alcotest.test_case "TEME→J2000 reference" `Quick test_teme_j2000_reference; 400 398 Alcotest.test_case "TEME→J2000 preserves length" `Quick 401 399 test_teme_j2000_preserves_length; 402 400 Alcotest.test_case "TEME→J2000 at J2000 epoch" `Quick