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.8 KiB
2.8 KiB
Rename bodies.h/cpp to simulation.h and Refactor Velocities (2026-01-07)
Changes Made
Refactored simulation module and velocity initialization:
-
Renamed files
- src/bodies.h → src/simulation.h
- src/bodies.cpp → src/simulation.cpp
- Updated all include references in src/ and tests/
- Updated Makefile to reference simulation.cpp
- Updated documentation references
-
Moved simulation logic from config_loader to simulation
- Moved calculate_initial_velocities() to simulation.cpp
- Moved calculate_soi_radii() to simulation.cpp
- Removed OrbitParams struct - use sim->bodies[i].fields directly
- Config loader now only handles TOML parsing
-
Refactored calculate_initial_velocities()
- Broke up 114-line function into 8 focused functions with descriptive names
- Added vec3_cross() utility to physics.cpp for reusable cross product calculation
- Made helper functions static in simulation.cpp (internal implementation detail)
- Removed unnecessary helper declarations from simulation.h (cleaner public API)
New helper functions:
- compute_perpendicular_orbital_velocity() - root body orbits (26 lines)
- compute_orbital_velocity_from_vis_viva() - child body orbits (37 lines)
- compute_system_barycenter() - barycenter calculation (28 lines)
- compute_total_root_mass() - total mass calculation (8 lines)
- set_root_bodies_velocity() - sets all root velocities (15 lines)
- set_child_bodies_velocity() - sets all child velocities (13 lines)
- print_system_info_if_multiple_roots() - debug output (7 lines)
Main compute_initial_velocities() reduced from 114 to 10 lines.
- Cleaned up public API
- Removed helper function declarations from simulation.h
- Only public API remains: compute_initial_velocities(), calculate_initial_velocities(), calculate_soi_radii()
- Removed deprecated comment
Commits
81e799cRename bodies.h/cpp to simulation.h/cpp9aafbd5Refactor velocity initialization into smaller functionsaa8a6b9Merge branch 'loading-refactor' - refactor velocity initialization
Results
16 files changed, +200/-212 lines (net -12 lines)
Net line changes:
- config_loader.cpp: 330 → 143 lines (-187)
- config_loader.h: 22 → 16 lines (-6)
- physics.cpp: 123 → 131 lines (+8)
- physics.h: 38 → 39 lines (+1)
- simulation.cpp: 187 → 350 lines (+163)
- simulation.h: 56 → 62 lines (+6)
All builds and tests pass (24 assertions, 5 test cases).
Benefits:
- Code reuse: vec3_cross() used 2x (eliminates duplicate perpendicular velocity logic)
- Testability: smaller functions easier to test individually
- Readability: descriptive function names for each body type scenario
- Maintainability: main function reduced from 114 to 10 lines (91% reduction)
- Better separation of concerns: config_loader only parses TOML, simulation handles physics