File tree Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Original file line number Diff line number Diff line change @@ -150,14 +150,16 @@ impl Almanac {
150150 rel_pos_km = tgt_ssb_pos_km - obs_ssb_pos_km;
151151 let r_norm = rel_pos_km. norm ( ) ;
152152 // From spkltc: get light-time corrected relative velocity.
153+ let geometric_rel_vel = tgt_ssb_vel_km_s - obs_ssb_vel_km_s;
153154 if r_norm > 0.0 {
154- let a = 1.0 / ( SPEED_OF_LIGHT_KM_S * r_norm) ;
155- let b = rel_pos_km. dot ( & ( tgt_ssb_vel_km_s - obs_ssb_vel_km_s) ) ;
156- let c = rel_pos_km. dot ( & tgt_ssb_vel_km_s) ;
157- let dlt = ( a * b) / ( 1.0 - lt_sign * c * a) ; // the rate of change of light time.
155+ let inv_c_r = 1.0 / ( SPEED_OF_LIGHT_KM_S * r_norm) ;
156+ let r_dot_v_rel = rel_pos_km. dot ( & ( geometric_rel_vel) ) ;
157+ let r_dot_v_tgt = rel_pos_km. dot ( & tgt_ssb_vel_km_s) ;
158+ // The rate of change of light time.
159+ let dlt = ( inv_c_r * r_dot_v_rel) / ( 1.0 - lt_sign * r_dot_v_tgt * inv_c_r) ; // the rate of change of light time.
158160 rel_vel_km_s = tgt_ssb_vel_km_s * ( 1.0 + lt_sign * dlt) - obs_ssb_vel_km_s;
159161 } else {
160- rel_vel_km_s = tgt_ssb_vel_km_s - obs_ssb_vel_km_s ;
162+ rel_vel_km_s = geometric_rel_vel ;
161163 }
162164 one_way_lt_s = r_norm / SPEED_OF_LIGHT_KM_S ;
163165 }
You can’t perform that action at this time.
0 commit comments