- FGReplayData result = f1;
-
- FGNetFDM fdm1 = f1.fdm;
- FGNetFDM fdm2 = f2.fdm;
-
- FGNetCtrls ctrls1 = f1.ctrls;
- FGNetCtrls ctrls2 = f2.ctrls;
-
- double ratio = (time - f1.sim_time) / (f2.sim_time - f1.sim_time);
-
- // Interpolate FDM data
-
- // Positions
- result.fdm.longitude = weight( fdm1.longitude, fdm2.longitude, ratio );
- result.fdm.latitude = weight( fdm1.latitude, fdm2.latitude, ratio );
- result.fdm.altitude = weight( fdm1.altitude, fdm2.altitude, ratio );
- result.fdm.agl = weight( fdm1.agl, fdm2.agl, ratio );
- result.fdm.phi = weight( fdm1.phi, fdm2.phi, ratio, true );
- result.fdm.theta = weight( fdm1.theta, fdm2.theta, ratio, true );
- result.fdm.psi = weight( fdm1.psi, fdm2.psi, ratio, true );
-
- // Velocities
- result.fdm.phidot = weight( fdm1.phidot, fdm2.phidot, ratio, true );
- result.fdm.thetadot = weight( fdm1.thetadot, fdm2.thetadot, ratio, true );
- result.fdm.psidot = weight( fdm1.psidot, fdm2.psidot, ratio, true );
- result.fdm.vcas = weight( fdm1.vcas, fdm2.vcas, ratio );
- result.fdm.climb_rate = weight( fdm1.climb_rate, fdm2.climb_rate, ratio );
- result.fdm.v_north = weight( fdm1.v_north, fdm2.v_north, ratio );
- result.fdm.v_east = weight( fdm1.v_east, fdm2.v_east, ratio );
- result.fdm.v_down = weight( fdm1.v_down, fdm2.v_down, ratio );
-
- result.fdm.v_wind_body_north
- = weight( fdm1.v_wind_body_north, fdm2.v_wind_body_north, ratio );
- result.fdm.v_wind_body_east
- = weight( fdm1.v_wind_body_east, fdm2.v_wind_body_east, ratio );
- result.fdm.v_wind_body_down
- = weight( fdm1.v_wind_body_down, fdm2.v_wind_body_down, ratio );
-
- // Stall
- result.fdm.stall_warning
- = weight( fdm1.stall_warning, fdm2.stall_warning, ratio );
-
- // Accelerations
- result.fdm.A_X_pilot = weight( fdm1.A_X_pilot, fdm2.A_X_pilot, ratio );
- result.fdm.A_Y_pilot = weight( fdm1.A_Y_pilot, fdm2.A_Y_pilot, ratio );
- result.fdm.A_Z_pilot = weight( fdm1.A_Z_pilot, fdm2.A_Z_pilot, ratio );
-
- unsigned int i;
-
- // Engine status
- for ( i = 0; i < fdm1.num_engines; ++i ) {
- result.fdm.eng_state[i] = fdm1.eng_state[i];
- result.fdm.rpm[i] = weight( fdm1.rpm[i], fdm2.rpm[i], ratio );
- result.fdm.fuel_flow[i]
- = weight( fdm1.fuel_flow[i], fdm2.fuel_flow[i], ratio );
- result.fdm.egt[i] = weight( fdm1.egt[i], fdm2.egt[i], ratio );
- result.fdm.cht[i] = weight( fdm1.cht[i], fdm2.cht[i], ratio );
- result.fdm.mp_osi[i] = weight( fdm1.mp_osi[i], fdm2.mp_osi[i], ratio );
- result.fdm.tit[i] = weight( fdm1.tit[i], fdm2.tit[i], ratio );
- result.fdm.oil_temp[i]
- = weight( fdm1.oil_temp[i], fdm2.oil_temp[i], ratio );
- result.fdm.oil_px[i] = weight( fdm1.oil_px[i], fdm2.oil_px[i], ratio );
- }