--- title: "Further Reading" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Further Reading} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- 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. ## Books ### Classical Dynamics of Particles and Systems — Stephen T. Thornton & Jerry B. Marion (5th ed., 2004, Brooks/Cole) 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. ### Computational Physics — Mark Newman (2012, CreateSpace) 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. ### Data Structures & Algorithms in Python — John Canning, Alan Broder & Robert Lafore (2022, Addison-Wesley) 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. ## Online Documentation ### Rcpp Documentation — [CRAN](https://cran.r-project.org/package=Rcpp) 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. ## Acknowledgments 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](https://claude.ai/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.