The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
First stable release. The function names, arguments, and defaults in this version are the ones the package will keep; future changes to them will be deprecated first, not made silently.
get_energy(), get_momentum(),
get_angular_momentum(): Total kinetic and potential energy,
total linear momentum, and total angular momentum of the system at every
time step of a simulation. get_energy() reads
G and softening from the simulation output so
the potential is computed with the same force law that produced the
run.
conserved_quantities(): The three quantities above
joined into one tibble with their relative errors against the initial
values. Verlet and Euler-Cromer keep momentum and angular momentum to
rounding error; the energy error is the integrator’s report
card.
get_orbital_elements(): The inverse of
add_body_keplerian(). Recovers the osculating Keplerian
elements (a, e, i, lan, arg_pe, nu) and period of a body relative to a
parent at every time step, from the simulated position and
velocity.
continue_simulation(): Pick up a run from its last
state with a new (or the same) time step and append the result, with
time continuing from where the previous run ended. Makes
segmented runs possible: large steps far from periapsis, small steps
through it.
system_from_simulation(): Rebuild an
orbit_system from any snapshot of a simulation, so a run
can be modified and continued.
shift_reference_frame() accepts
center_id = "barycenter" to re-center on the system’s
center of mass at every time step.
add_body_keplerian() accepts hyperbolic orbits
(e > 1 with a negative semi-major axis), so interstellar
visitors and flybys can be set up from elements. Exactly parabolic
orbits (e = 1) remain unsupported.
simulate_system() records G,
softening, method, and time_step
as attributes of its output; the new analysis functions use them as
defaults.
remove_body(): Remove one or more bodies from a
system by name. Accepts a single name or a character vector for removing
multiple bodies at once.
get_bodies(): Extract the bodies tibble from an
orbit_system. Useful for inspecting, filtering, or saving
body states without reaching into the object’s internals.
save_system() / load_system(): Save a
full orbit_system to an .rds file and restore
it later. Preserves everything — bodies, gravitational constant, and
class.
export_bodies(): Write the body table (id, mass,
position, velocity) to a CSV file for sharing with collaborators or
loading into other tools like Python or Excel.
print.orbit_system(): Custom print method that
displays a clean summary with a header line and the bodies as a tibble,
instead of dumping the raw list structure.
add_body_keplerian(): Add a body to the system using
classical Keplerian orbital elements (semi-major axis, eccentricity,
inclination, longitude of ascending node, argument of periapsis, true
anomaly) instead of raw Cartesian state vectors. The elements are
converted to position and velocity relative to a specified parent
body.
add_planet(): Add a known solar system body by name
with real orbital data looked up automatically. Just specify the name
and parent — mass, semi-major axis, eccentricity, inclination, and
orientation are filled in from JPL DE440 values. Any element can be
overridden for “what if” scenarios (e.g.,
add_planet("Mars", parent = "Sun", e = 0) for a circular
Mars).
load_solar_system(): One-liner that builds a
complete solar system — the Sun, all eight planets, the Moon, and
optionally Pluto — using real orbital data from the JPL DE440 ephemeris.
Returns a ready-to-simulate orbit_system. Use
moon = FALSE or pluto = FALSE to exclude those
bodies.
three_d parameter on plot_orbits(),
plot_system(), and animate_system() now
supports FALSE to force 2D output even when the data has
Z-axis motion. Previously, three_d = FALSE was the default
but could not override the auto-detection.
Fixed frozen 3D animations in animate_system_3d()
caused by redraw = FALSE in plotly animation
options.
Initial release.
create_system() / add_body() /
simulate_system() pipe-friendly API.shift_reference_frame() to re-center simulations on any
body.plot_orbits() / plot_orbits_3d() for quick
trajectory plots (ggplot2 2D, plotly 3D).plot_system() / plot_system_3d() for
single-time-step snapshots.animate_system() / animate_system_3d() for
animated orbits via gganimate or plotly.gravitational_constant for scaling gravity in
create_system().seconds_per_hour, seconds_per_day,
seconds_per_year time helpers.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.