You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
Refactoring Plan: Break Up update_simulation
Current State
update_simulation() function is long with multiple responsibilities:
- Body RK4 updates and SOI transitions (~60 lines)
- Body global coordinate computation (~5 lines)
- Spacecraft RK4 updates (~15 lines)
- Maneuver execution checking (~20 lines)
- Spacecraft global coordinate computation (~15 lines)
Proposed Helper Functions
1. update_bodies_physics(SimulationState* sim)
- Handle body RK4 integration
- Handle SOI transitions
- ~60 lines of current body update logic
2. compute_body_globals(SimulationState* sim)
- Compute global coordinates for all bodies
- Reuse existing function or inline it
- ~5 lines
3. update_spacecraft_physics(SimulationState* sim)
- RK4 integration for spacecraft
- ~15 lines
4. execute_pending_maneuvers(SimulationState* sim)
- Check maneuver triggers
- Execute triggered maneuvers
- ~20 lines
5. compute_spacecraft_globals(SimulationState* sim)
- Compute global coordinates for spacecraft
- ~15 lines
6. Simplified update_simulation(SimulationState* sim)
void update_simulation(SimulationState* sim) {
update_bodies_physics(sim);
compute_body_globals(sim);
update_spacecraft_physics(sim);
execute_pending_maneuvers(sim);
compute_spacecraft_globals(sim);
sim->time += sim->dt;
}
Implementation Order
- Move body update logic to
update_bodies_physics() - Move spacecraft physics logic to
update_spacecraft_physics() - Create
execute_pending_maneuvers()from existing maneuver loop - Move spacecraft globals logic to
compute_spacecraft_globals() - Simplify
update_simulation()to call helpers - Update
simulation.hwith helper declarations - Test to ensure behavior is identical
Benefits
- Single responsibility for each function
- Easier to test individual components
- Cleaner
update_simulation()that reads like a sequence - Easier to debug issues in specific areas
- Functions can be reused or tested independently