Select the types of activity you want to include in your feed.
Unify Odm.vec3 with Vec3.t
Odm.vec3 is now Vec3.t (type alias via = Vec3.t = {x; y; z}). Removes to_v conversion helpers from collision and cam interop tests. odm now depends on vec3.
···1515 | Error e -> Alcotest.failf "parse error: %a" Odm.pp_error e
16161717let vec3_norm v = Float.sqrt ((v.Odm.x *. v.x) +. (v.y *. v.y) +. (v.z *. v.z))
1818-let to_v (v : Odm.vec3) : Vec3.t = { x = v.x; y = v.y; z = v.z }
1919-2018let test_two_segments () =
2119 let oem = parse_oem "tangential_burn.oem" in
2220 let segs = Odm.segments oem in
···3533 let first_post = post.(0) in
3634 Alcotest.(check string)
3735 "same epoch at burn boundary" last_pre.epoch first_post.epoch;
3838- let dp = Vec3.distance (to_v first_post.pos) (to_v last_pre.pos) in
3636+ let dp = Vec3.distance (first_post.pos) (last_pre.pos) in
3937 Alcotest.(check bool) "position unchanged at burn" true (dp < 0.001);
4040- let dv = Vec3.distance (to_v first_post.vel) (to_v last_pre.vel) in
3838+ let dv = Vec3.distance (first_post.vel) (last_pre.vel) in
4139 Alcotest.(check bool) "delta-v ~0.1 km/s" true (dv > 0.09 && dv < 0.11)
42404341let test_orbit_raised () =
···6866 let post = Odm.state_vectors (List.nth segs 1) in
6967 (* Burn-point state from GMAT (last pre-burn vector = first post-burn vector) *)
7068 let burn_sv = pre.(Array.length pre - 1) in
7171- let burn_pos = to_v burn_sv.Odm.pos in
7272- let burn_vel = to_v burn_sv.vel in
6969+ let burn_pos = burn_sv.Odm.pos in
7070+ let burn_vel = burn_sv.vel in
7371 (* Use Kepler to propagate the burned state forward by 1 orbit (~5554s)
7472 and compare against GMAT's actual post-burn position at that time. *)
7573 let dt = 5554.0 in
7674 let n_post = Array.length post in
7775 let i_target = min (dt /. 60.0 |> int_of_float) (n_post - 1) in
7878- let gmat_pos = to_v post.(i_target).Odm.pos in
7676+ let gmat_pos = post.(i_target).Odm.pos in
7977 (* Kepler propagation: apply burn, propagate *)
8078 let vel_burned =
8179 let dv_km = 0.1 in
···116114 let pre = Odm.state_vectors (List.nth segs 0) in
117115 let post = Odm.state_vectors (List.nth segs 1) in
118116 let burn_sv = pre.(Array.length pre - 1) in
119119- let burn_pos = to_v burn_sv.Odm.pos in
120120- let burn_vel = to_v burn_sv.vel in
117117+ let burn_pos = burn_sv.Odm.pos in
118118+ let burn_vel = burn_sv.vel in
121119 let n_post = Array.length post in
122122- let secondary_pos_tca = to_v post.(min 92 (n_post - 1)).Odm.pos in
120120+ let secondary_pos_tca = post.(min 92 (n_post - 1)).Odm.pos in
123121 let miss_r = 50.0 in
124122 let miss_t = 200.0 in
125123 let miss_n = 0.0 in