planetsfactory 0.0.1

Planet factory — classify, build and catalogue planets for any star system: Solar System, TRAPPIST-1, Kepler-90, Proxima Centauri, or fully custom worlds.
Documentation
use crate::config::parameters::*;
use crate::engine::generator::GeneratedPlanet;
use crate::engine::orbits::OrbitalElements;
use crate::types::gas_giant::GasGiant;
use crate::types::terrestrial::TerrestrialPlanet;

pub fn kepler90_b() -> TerrestrialPlanet {
    TerrestrialPlanet::new(
        "Kepler-90 b",
        "Kepler-90",
        1.0 * EARTH_MASS,
        1.3 * EARTH_RADIUS,
        1e-3,
        0.0,
        OrbitalElements::from_au_deg(0.074, 0.01, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_c() -> TerrestrialPlanet {
    TerrestrialPlanet::new(
        "Kepler-90 c",
        "Kepler-90",
        2.0 * EARTH_MASS,
        1.2 * EARTH_RADIUS,
        1e-3,
        0.0,
        OrbitalElements::from_au_deg(0.089, 0.01, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_i() -> TerrestrialPlanet {
    TerrestrialPlanet::new(
        "Kepler-90 i",
        "Kepler-90",
        1.3 * EARTH_MASS,
        1.32 * EARTH_RADIUS,
        1e-3,
        0.0,
        OrbitalElements::from_au_deg(0.1234, 0.01, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_d() -> TerrestrialPlanet {
    TerrestrialPlanet::new(
        "Kepler-90 d",
        "Kepler-90",
        8.0 * EARTH_MASS,
        2.88 * EARTH_RADIUS,
        2e-3,
        0.0,
        OrbitalElements::from_au_deg(0.320, 0.02, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_e() -> GasGiant {
    GasGiant::new(
        "Kepler-90 e",
        "Kepler-90",
        0.04 * JUPITER_MASS,
        2.67 * EARTH_RADIUS,
        5e-3,
        0.0,
        OrbitalElements::from_au_deg(0.42, 0.02, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_f() -> GasGiant {
    GasGiant::new(
        "Kepler-90 f",
        "Kepler-90",
        0.04 * JUPITER_MASS,
        2.89 * EARTH_RADIUS,
        5e-3,
        0.0,
        OrbitalElements::from_au_deg(0.48, 0.02, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_g() -> GasGiant {
    GasGiant::new(
        "Kepler-90 g",
        "Kepler-90",
        0.8 * JUPITER_MASS,
        8.13 * EARTH_RADIUS,
        1e-2,
        0.0,
        OrbitalElements::from_au_deg(0.71, 0.02, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn kepler90_h() -> GasGiant {
    GasGiant::new(
        "Kepler-90 h",
        "Kepler-90",
        1.2 * JUPITER_MASS,
        11.32 * EARTH_RADIUS,
        1.5e-2,
        0.0,
        OrbitalElements::from_au_deg(1.01, 0.04, 0.5, 0.0, 0.0, 0.0),
    )
}

pub fn all() -> Vec<GeneratedPlanet> {
    vec![
        GeneratedPlanet::Terrestrial(kepler90_b()),
        GeneratedPlanet::Terrestrial(kepler90_c()),
        GeneratedPlanet::Terrestrial(kepler90_i()),
        GeneratedPlanet::Terrestrial(kepler90_d()),
        GeneratedPlanet::GasGiant(kepler90_e()),
        GeneratedPlanet::GasGiant(kepler90_f()),
        GeneratedPlanet::GasGiant(kepler90_g()),
        GeneratedPlanet::GasGiant(kepler90_h()),
    ]
}