These are the books and resources I found most useful while building
orbitr. If you want to go deeper on the physics, the
numerics, or the engineering behind the package, these are where I’d
start.
This was my primary reference for the gravitational physics at the heart of the simulation engine. Thornton and Marion’s treatment of central-force problems and two-body/multi-body gravitational interactions gave me the framework for implementing the N-body force law and understanding how acceleration vectors compose when multiple bodies are pulling on each other simultaneously.
Newman’s coverage of numerical integration is where I learned to
think carefully about the tradeoffs between integration methods. His
discussion of energy conservation in numerical schemes directly shaped
the three options in simulate() — basic Euler, symplectic
Euler-Cromer, and the Velocity Verlet algorithm that orbitr
defaults to for stable long-duration orbits.
Even though orbitr is an R package, the algorithmic
thinking in this book influenced how I structured the simulation loop
and the vectorized acceleration calculations. The emphasis on
pre-allocation, efficient iteration patterns, and choosing the right
data layout for the problem carried over directly into the design of the
simulation engine.
The official Rcpp package documentation on CRAN, including the
vignettes and the API reference, was what I kept open while writing the
C++ acceleration kernel (calc_acceleration_cpp). The
vignettes walk through how to pass R vectors into C++, return structured
results via Rcpp::List, and register compiled functions —
all of which orbitr relies on for its performance on larger
N-body systems.
Shoutout to The College of New Jersey, where I first got hooked on this stuff. Go Lions.
This package was built with the help of Claude Code, which handled a lot of the boilerplate, scaffolding, and iteration that would have otherwise slowed things down. The physics, the design decisions, and the mistakes are all mine — but Claude made it possible to move from idea to working package much faster than I could have on my own.