···5656 if rdotv < 0. then (2. *. Float.pi) -. nu else nu
57575858let degenerate_elements (pos : Vec3.t) (vel : Vec3.t) r_mag =
5959- { a = r_mag; e = 2.; i = 0.; raan = 0.; argp = 0.; nu = 0.; n = 0.;
6060- pos; vel }
5959+ { a = r_mag; e = 2.; i = 0.; raan = 0.; argp = 0.; nu = 0.; n = 0.; pos; vel }
61606261(** Convert state vector to classical orbital elements. Vallado Algorithm 9. *)
6362let elements_of_state (pos : Vec3.t) (vel : Vec3.t) =
6463 let open Vec3 in
6564 let r_mag = length pos in
6665 let v_mag = length vel in
6767- if r_mag < 1e-10 || v_mag < 1e-10 then
6868- degenerate_elements pos vel r_mag
6666+ if r_mag < 1e-10 || v_mag < 1e-10 then degenerate_elements pos vel r_mag
6967 else
7068 (* Angular momentum vector h = r × v *)
7169 let h = cross pos vel in