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.
···1313 | Ok oem -> oem
1414 | Error e -> Alcotest.failf "parse error: %a" Odm.pp_error e
15151616-let to_v (v : Odm.vec3) : Vec3.t = { x = v.x; y = v.y; z = v.z }
1717-1816let v_sub (a : Vec3.t) (b : Vec3.t) : Vec3.t =
1917 { x = a.x -. b.x; y = a.y -. b.y; z = a.z -. b.z }
2018···4240 let min_dist = ref Float.infinity in
4341 let min_epoch = ref "" in
4442 for i = 0 to n - 1 do
4545- let d = v_norm (v_sub (to_v sv1.(i).Odm.pos) (to_v sv2.(i).Odm.pos)) in
4343+ let d = v_norm (v_sub (sv1.(i).Odm.pos) (sv2.(i).Odm.pos)) in
4644 if d < !min_dist then (
4745 min_dist := d;
4846 min_epoch := sv1.(i).epoch)
···6260 let min_i = ref 0 in
6361 let min_dist = ref Float.infinity in
6462 for i = 0 to n - 1 do
6565- let d = v_norm (v_sub (to_v sv1.(i).Odm.pos) (to_v sv2.(i).Odm.pos)) in
6363+ let d = v_norm (v_sub (sv1.(i).Odm.pos) (sv2.(i).Odm.pos)) in
6664 if d < !min_dist then (
6765 min_dist := d;
6866 min_i := i)
6967 done;
7068 let dv =
7171- v_norm (v_sub (to_v sv1.(!min_i).Odm.vel) (to_v sv2.(!min_i).Odm.vel))
6969+ v_norm (v_sub (sv1.(!min_i).Odm.vel) (sv2.(!min_i).Odm.vel))
7270 in
7371 (* Crossing orbits at ~90 deg: relative velocity ~sqrt(2) * 7.5 ~= 10.6 km/s *)
7472 Alcotest.(check bool) "high relative velocity" true (dv > 5.0);
···9088 | Error _ -> Alcotest.failf "bad epoch: %s" e
9189 in
9290 let times = Array.init n (fun i -> epoch_to_unix sv1.(i).Odm.epoch) in
9393- let pos1 = Array.map (fun sv -> to_v sv.Odm.pos) sv1 in
9494- let pos2 = Array.init n (fun i -> to_v sv2.(i).Odm.pos) in
9595- let vel1 = Array.map (fun sv -> to_v sv.Odm.vel) sv1 in
9696- let vel2 = Array.init n (fun i -> to_v sv2.(i).Odm.vel) in
9191+ let pos1 = Array.map (fun sv -> sv.Odm.pos) sv1 in
9292+ let pos2 = Array.init n (fun i -> sv2.(i).Odm.pos) in
9393+ let vel1 = Array.map (fun sv -> sv.Odm.vel) sv1 in
9494+ let vel2 = Array.init n (fun i -> sv2.(i).Odm.vel) in
9795 (* Step-based minimum for comparison *)
9896 let step_min_d = ref Float.infinity in
9997 let step_min_t = ref 0.0 in
···140138 let n = min (Array.length sv1) (Array.length sv2) in
141139 let min_dist = ref Float.infinity in
142140 for i = 0 to n - 1 do
143143- let d = v_norm (v_sub (to_v sv1.(i).Odm.pos) (to_v sv2.(i).Odm.pos)) in
141141+ let d = v_norm (v_sub (sv1.(i).Odm.pos) (sv2.(i).Odm.pos)) in
144142 if d < !min_dist then min_dist := d
145143 done;
146144 Printf.printf " Miss distance: %.3f km\n" !min_dist;