vibe coding an orbital mechanics simulation to try out claude code
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

Rename bodies.h/cpp to simulation.h and Refactor Velocities (2026-01-07)

Changes Made

Refactored simulation module and velocity initialization:

  1. 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
  2. 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
  3. 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.

  1. 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

  1. 81e799c Rename bodies.h/cpp to simulation.h/cpp
  2. 9aafbd5 Refactor velocity initialization into smaller functions
  3. aa8a6b9 Merge 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