rebound-rs 4.6.0-alpha.1

Rust wrapper for the REBOUND N-body simulation library.
Documentation
use std::f64::consts::PI;

use rebound_rs::{Result, create_particle, particles::Orbit, utils};

fn main() -> Result<()> {
    let mut p = create_particle! {
        x: 1.,
        vy: 1.
    };

    println!(
        "Initial position: {:.6} {:.6} {:.6}\n",
        p.position.0, p.position.1, p.position.2
    );

    const G: f64 = 1.;
    const GM: f64 = G * 1.;
    let dt = PI;
    p.whfast_kepler_solver(GM, dt);

    println!(
        "Final position: {:.6} {:.6} {:.6}\n",
        p.position.0, p.position.1, p.position.2
    );

    let primary = create_particle! {
        mass: 1.,
    };
    let o = Orbit::try_from_particles(G, &p, &primary)?;

    println!("Semi-major axis: {:.6}", o.semi_major_axis);
    println!("Eccentricity: {:.6}", o.eccentricity);
    println!("Inclination: {:.6}", o.inclination);

    println!(
        "Eccentric anomaly: {:.6}",
        utils::orbit::mean_to_eccentric_anomaly(o.eccentricity, o.mean_anomaly)
    );

    Ok(())
}