diff --git a/crates/lox_core/src/bodies.rs b/crates/lox_core/src/bodies.rs index c13dfc5b..d8420438 100644 --- a/crates/lox_core/src/bodies.rs +++ b/crates/lox_core/src/bodies.rs @@ -9,10 +9,11 @@ use std::f64::consts::PI; use std::fmt::{Display, Formatter}; +pub use generated::*; + use crate::time::constants::f64::{SECONDS_PER_DAY, SECONDS_PER_JULIAN_CENTURY}; mod generated; -pub use generated::*; pub mod fundamental; @@ -54,6 +55,28 @@ macro_rules! body { } } }; + ($i:ident, $t:ident, $naif_id:literal) => { + #[derive(Clone, Copy, Debug, Eq, PartialEq)] + pub struct $i; + + impl $t for $i {} + + impl Body for $i { + fn id(&self) -> NaifId { + NaifId($naif_id) + } + + fn name(&self) -> &'static str { + stringify!($i) + } + } + + impl Display for $i { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.name()) + } + } + }; ($i:ident, $name:literal, $naif_id:literal) => { #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct $i; @@ -80,15 +103,17 @@ macro_rules! body { body! { Sun, 10 } // Planets. -body! { Mercury, 199 } -body! { Venus, 299 } -body! { Earth, 399 } -body! { Mars, 499 } -body! { Jupiter, 599 } -body! { Saturn, 699 } -body! { Uranus, 799 } -body! { Neptune, 899 } -body! { Pluto, 999 } +pub trait Planet: PointMass + Spheroid {} + +body! { Mercury, Planet, 199 } +body! { Venus, Planet, 299 } +body! { Earth, Planet, 399 } +body! { Mars, Planet, 499 } +body! { Jupiter, Planet, 599 } +body! { Saturn, Planet, 699 } +body! { Uranus, Planet, 799 } +body! { Neptune, Planet, 899 } +body! { Pluto, Planet, 999 } // Barycenters. body! { SolarSystemBarycenter, "Solar System Barycenter", 0 } @@ -102,172 +127,182 @@ body! { UranusBarycenter, "Uranus Barycenter", 7 } body! { NeptuneBarycenter, "Neptune Barycenter", 8 } body! { PlutoBarycenter, "Pluto Barycenter", 9 } +impl PointMass for SolarSystemBarycenter { + fn gravitational_parameter(&self) -> f64 { + Sun.gravitational_parameter() + } +} + // Satellites. -body! { Moon, 301 } -body! { Phobos, 401 } -body! { Deimos, 402 } -body! { Io, 501 } -body! { Europa, 502 } -body! { Ganymede, 503 } -body! { Callisto, 504 } -body! { Amalthea, 505 } -body! { Himalia, 506 } -body! { Elara, 507 } -body! { Pasiphae, 508 } -body! { Sinope, 509 } -body! { Lysithea, 510 } -body! { Carme, 511 } -body! { Ananke, 512 } -body! { Leda, 513 } -body! { Thebe, 514 } -body! { Adrastea, 515 } -body! { Metis, 516 } -body! { Callirrhoe, 517 } -body! { Themisto, 518 } -body! { Magaclite, 519 } -body! { Taygete, 520 } -body! { Chaldene, 521 } -body! { Harpalyke, 522 } -body! { Kalyke, 523 } -body! { Iocaste, 524 } -body! { Erinome, 525 } -body! { Isonoe, 526 } -body! { Praxidike, 527 } -body! { Autonoe, 528 } -body! { Thyone, 529 } -body! { Hermippe, 530 } -body! { Aitne, 531 } -body! { Eurydome, 532 } -body! { Euanthe, 533 } -body! { Euporie, 534 } -body! { Orthosie, 535 } -body! { Sponde, 536 } -body! { Kale, 537 } -body! { Pasithee, 538 } -body! { Hegemone, 539 } -body! { Mneme, 540 } -body! { Aoede, 541 } -body! { Thelxinoe, 542 } -body! { Arche, 543 } -body! { Kallichore, 544 } -body! { Helike, 545 } -body! { Carpo, 546 } -body! { Eukelade, 547 } -body! { Cyllene, 548 } -body! { Kore, 549 } -body! { Herse, 550 } -body! { Dia, 553 } -body! { Mimas, 601 } -body! { Enceladus, 602 } -body! { Tethys, 603 } -body! { Dione, 604 } -body! { Rhea, 605 } -body! { Titan, 606 } -body! { Hyperion, 607 } -body! { Iapetus, 608 } -body! { Phoebe, 609 } -body! { Janus, 610 } -body! { Epimetheus, 611 } -body! { Helene, 612 } -body! { Telesto, 613 } -body! { Calypso, 614 } -body! { Atlas, 615 } -body! { Prometheus, 616 } -body! { Pandora, 617 } -body! { Pan, 618 } -body! { Ymir, 619 } -body! { Paaliaq, 620 } -body! { Tarvos, 621 } -body! { Ijiraq, 622 } -body! { Suttungr, 623 } -body! { Kiviuq, 624 } -body! { Mundilfari, 625 } -body! { Albiorix, 626 } -body! { Skathi, 627 } -body! { Erriapus, 628 } -body! { Siarnaq, 629 } -body! { Thrymr, 630 } -body! { Narvi, 631 } -body! { Methone, 632 } -body! { Pallene, 633 } -body! { Polydeuces, 634 } -body! { Daphnis, 635 } -body! { Aegir, 636 } -body! { Bebhionn, 637 } -body! { Bergelmir, 638 } -body! { Bestla, 639 } -body! { Farbauti, 640 } -body! { Fenrir, 641 } -body! { Fornjot, 642 } -body! { Hati, 643 } -body! { Hyrrokkin, 644 } -body! { Kari, 645 } -body! { Loge, 646 } -body! { Skoll, 647 } -body! { Surtur, 648 } -body! { Anthe, 649 } -body! { Jarnsaxa, 650 } -body! { Greip, 651 } -body! { Tarqeq, 652 } -body! { Aegaeon, 653 } -body! { Ariel, 701 } -body! { Umbriel, 702 } -body! { Titania, 703 } -body! { Oberon, 704 } -body! { Miranda, 705 } -body! { Cordelia, 706 } -body! { Ophelia, 707 } -body! { Bianca, 708 } -body! { Cressida, 709 } -body! { Desdemona, 710 } -body! { Juliet, 711 } -body! { Portia, 712 } -body! { Rosalind, 713 } -body! { Belinda, 714 } -body! { Puck, 715 } -body! { Caliban, 716 } -body! { Sycorax, 717 } -body! { Prospero, 718 } -body! { Setebos, 719 } -body! { Stephano, 720 } -body! { Trinculo, 721 } -body! { Francisco, 722 } -body! { Margaret, 723 } -body! { Ferdinand, 724 } -body! { Perdita, 725 } -body! { Mab, 726 } -body! { Cupid, 727 } -body! { Triton, 801 } -body! { Nereid, 802 } -body! { Naiad, 803 } -body! { Thalassa, 804 } -body! { Despina, 805 } -body! { Galatea, 806 } -body! { Larissa, 807 } -body! { Proteus, 808 } -body! { Halimede, 809 } -body! { Psamathe, 810 } -body! { Sao, 811 } -body! { Laomedeia, 812 } -body! { Neso, 813 } -body! { Charon, 901 } -body! { Nix, 902 } -body! { Hydra, 903 } -body! { Kerberos, 904 } -body! { Styx, 905 } +pub trait Satellite: PointMass + TriAxial {} + +body! { Moon, Satellite, 301 } +body! { Phobos, Satellite, 401 } +body! { Deimos, Satellite, 402 } +body! { Io, Satellite, 501 } +body! { Europa, Satellite, 502 } +body! { Ganymede, Satellite, 503 } +body! { Callisto, Satellite, 504 } +body! { Amalthea, Satellite, 505 } +body! { Himalia, Satellite, 506 } +body! { Elara, 507 } +body! { Pasiphae, 508 } +body! { Sinope, 509 } +body! { Lysithea, 510 } +body! { Carme, 511 } +body! { Ananke, 512 } +body! { Leda, 513 } +body! { Thebe, Satellite, 514 } +body! { Adrastea, Satellite, 515 } +body! { Metis, Satellite, 516 } +body! { Callirrhoe, 517 } +body! { Themisto, 518 } +body! { Magaclite, 519 } +body! { Taygete, 520 } +body! { Chaldene, 521 } +body! { Harpalyke, 522 } +body! { Kalyke, 523 } +body! { Iocaste, 524 } +body! { Erinome, 525 } +body! { Isonoe, 526 } +body! { Praxidike, 527 } +body! { Autonoe, 528 } +body! { Thyone, 529 } +body! { Hermippe, 530 } +body! { Aitne, 531 } +body! { Eurydome, 532 } +body! { Euanthe, 533 } +body! { Euporie, 534 } +body! { Orthosie, 535 } +body! { Sponde, 536 } +body! { Kale, 537 } +body! { Pasithee, 538 } +body! { Hegemone, 539 } +body! { Mneme, 540 } +body! { Aoede, 541 } +body! { Thelxinoe, 542 } +body! { Arche, 543 } +body! { Kallichore, 544 } +body! { Helike, 545 } +body! { Carpo, 546 } +body! { Eukelade, 547 } +body! { Cyllene, 548 } +body! { Kore, 549 } +body! { Herse, 550 } +body! { Dia, 553 } +body! { Mimas, Satellite, 601 } +body! { Enceladus, Satellite, 602 } +body! { Tethys, Satellite, 603 } +body! { Dione, Satellite, 604 } +body! { Rhea, Satellite, 605 } +body! { Titan, Satellite, 606 } +body! { Hyperion, Satellite, 607 } +body! { Iapetus, Satellite, 608 } +body! { Phoebe, Satellite, 609 } +body! { Janus, Satellite, 610 } +body! { Epimetheus, Satellite, 611 } +body! { Helene, Satellite, 612 } +body! { Telesto, 613 } +body! { Calypso, 614 } +body! { Atlas, Satellite, 615 } +body! { Prometheus, Satellite, 616 } +body! { Pandora, Satellite, 617 } +body! { Pan, 618 } +body! { Ymir, 619 } +body! { Paaliaq, 620 } +body! { Tarvos, 621 } +body! { Ijiraq, 622 } +body! { Suttungr, 623 } +body! { Kiviuq, 624 } +body! { Mundilfari, 625 } +body! { Albiorix, 626 } +body! { Skathi, 627 } +body! { Erriapus, 628 } +body! { Siarnaq, 629 } +body! { Thrymr, 630 } +body! { Narvi, 631 } +body! { Methone, 632 } +body! { Pallene, 633 } +body! { Polydeuces, 634 } +body! { Daphnis, 635 } +body! { Aegir, 636 } +body! { Bebhionn, 637 } +body! { Bergelmir, 638 } +body! { Bestla, 639 } +body! { Farbauti, 640 } +body! { Fenrir, 641 } +body! { Fornjot, 642 } +body! { Hati, 643 } +body! { Hyrrokkin, 644 } +body! { Kari, 645 } +body! { Loge, 646 } +body! { Skoll, 647 } +body! { Surtur, 648 } +body! { Anthe, 649 } +body! { Jarnsaxa, 650 } +body! { Greip, 651 } +body! { Tarqeq, 652 } +body! { Aegaeon, 653 } +body! { Ariel, Satellite, 701 } +body! { Umbriel, Satellite, 702 } +body! { Titania, Satellite, 703 } +body! { Oberon, Satellite, 704 } +body! { Miranda, Satellite, 705 } +body! { Cordelia, 706 } +body! { Ophelia, 707 } +body! { Bianca, 708 } +body! { Cressida, 709 } +body! { Desdemona, 710 } +body! { Juliet, 711 } +body! { Portia, 712 } +body! { Rosalind, 713 } +body! { Belinda, 714 } +body! { Puck, 715 } +body! { Caliban, 716 } +body! { Sycorax, 717 } +body! { Prospero, 718 } +body! { Setebos, 719 } +body! { Stephano, 720 } +body! { Trinculo, 721 } +body! { Francisco, 722 } +body! { Margaret, 723 } +body! { Ferdinand, 724 } +body! { Perdita, 725 } +body! { Mab, 726 } +body! { Cupid, 727 } +body! { Triton, Satellite, 801 } +body! { Nereid, 802 } +body! { Naiad, Satellite, 803 } +body! { Thalassa, Satellite, 804 } +body! { Despina, Satellite, 805 } +body! { Galatea, Satellite, 806 } +body! { Larissa, Satellite, 807 } +body! { Proteus, Satellite, 808 } +body! { Halimede, 809 } +body! { Psamathe, 810 } +body! { Sao, 811 } +body! { Laomedeia, 812 } +body! { Neso, 813 } +body! { Charon, Satellite, 901 } +body! { Nix, 902 } +body! { Hydra, 903 } +body! { Kerberos, 904 } +body! { Styx, 905 } // Minor bodies. +pub trait MinorBody: PointMass + TriAxial {} + body! {Gaspra, 9511010 } body! {Ida, 2431010 } body! {Dactyl, 2431011 } -body! {Ceres, 2000001 } +body! {Ceres, MinorBody, 2000001 } body! {Pallas, 2000002 } -body! {Vesta, 2000004 } -body! {Psyche, 2000016 } +body! {Vesta, MinorBody, 2000004 } +body! {Psyche, MinorBody, 2000016 } body! {Lutetia, 2000021 } body! {Kleopatra, 2000216 } -body! {Eros, 2000433 } -body! {Davida, 2000511 } +body! {Eros, MinorBody, 2000433 } +body! {Davida, MinorBody, 2000511 } body! {Mathilde, 2000253 } body! {Steins, 2002867 } body! {Braille, 2009969 } @@ -491,47 +526,23 @@ impl NaifId { } pub trait Ellipsoid: Body { - fn polar_radius() -> f64; - - fn mean_radius() -> f64; -} - -pub fn polar_radius(_: T) -> f64 { - ::polar_radius() -} + fn polar_radius(&self) -> f64; -pub fn mean_radius(_: T) -> f64 { - ::mean_radius() + fn mean_radius(&self) -> f64; } pub trait Spheroid: Ellipsoid { - fn equatorial_radius() -> f64; -} - -pub fn equatorial_radius(_: T) -> f64 { - ::equatorial_radius() + fn equatorial_radius(&self) -> f64; } pub trait TriAxial: Ellipsoid { - fn subplanetary_radius() -> f64; - - fn along_orbit_radius() -> f64; -} - -pub fn subplanetary_radius(_: T) -> f64 { - ::subplanetary_radius() -} + fn subplanetary_radius(&self) -> f64; -pub fn along_orbit_radius(_: T) -> f64 { - ::along_orbit_radius() + fn along_orbit_radius(&self) -> f64; } pub trait PointMass: Body { - fn gravitational_parameter() -> f64; -} - -pub fn gravitational_parameter(_: T) -> f64 { - ::gravitational_parameter() + fn gravitational_parameter(&self) -> f64; } pub type PolynomialCoefficients = (f64, f64, f64, &'static [f64]); @@ -675,27 +686,6 @@ mod tests { // when generated files are malformed or deleted in preparation for regeneration. body! { Jupiter, 599 } - impl PointMass for Jupiter { - fn gravitational_parameter() -> f64 { - 126686531.9003704f64 - } - } - - impl Ellipsoid for Jupiter { - fn polar_radius() -> f64 { - 66854f64 - } - fn mean_radius() -> f64 { - 69946f64 - } - } - - impl Spheroid for Jupiter { - fn equatorial_radius() -> f64 { - 71492f64 - } - } - impl RotationalElements for Jupiter { const NUTATION_PRECESSION_COEFFICIENTS: NutationPrecessionCoefficients = ( &[ @@ -819,39 +809,6 @@ mod tests { assert_eq!(name, "Body -42"); } - #[test] - fn test_grav_param() { - assert_eq!( - gravitational_parameter(Jupiter), - Jupiter::gravitational_parameter() - ); - } - - #[test] - fn test_mean_radius() { - assert_eq!(mean_radius(Jupiter), Jupiter::mean_radius()); - } - - #[test] - fn test_polar_radius() { - assert_eq!(polar_radius(Jupiter), Jupiter::polar_radius()); - } - - #[test] - fn test_equatorial_radius() { - assert_eq!(equatorial_radius(Jupiter), Jupiter::equatorial_radius()); - } - - #[test] - fn test_subplanetary_radius() { - assert_eq!(subplanetary_radius(Moon), Moon::subplanetary_radius()); - } - - #[test] - fn test_along_orbit_radius() { - assert_eq!(along_orbit_radius(Moon), Moon::along_orbit_radius()); - } - #[test] fn test_rotational_elements_right_ascension() { assert_float_eq!( diff --git a/crates/lox_core/src/bodies/generated/barycenters.rs b/crates/lox_core/src/bodies/generated/barycenters.rs index c5cb6aef..150a3199 100644 --- a/crates/lox_core/src/bodies/generated/barycenters.rs +++ b/crates/lox_core/src/bodies/generated/barycenters.rs @@ -13,47 +13,47 @@ use crate::bodies::{ PlutoBarycenter, PointMass, SaturnBarycenter, UranusBarycenter, VenusBarycenter, }; impl PointMass for MercuryBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 22031.868551400003f64 } } impl PointMass for VenusBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 324858.592f64 } } impl PointMass for EarthBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 403503.2356254802f64 } } impl PointMass for MarsBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 42828.3758157561f64 } } impl PointMass for JupiterBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 126712764.09999998f64 } } impl PointMass for SaturnBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 37940584.8418f64 } } impl PointMass for UranusBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 5794556.3999999985f64 } } impl PointMass for NeptuneBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 6836527.100580399f64 } } impl PointMass for PlutoBarycenter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 975.5f64 } } @@ -64,58 +64,55 @@ mod tests { #[test] fn test_point_mass_1() { assert_eq!( - MercuryBarycenter::gravitational_parameter(), + MercuryBarycenter.gravitational_parameter(), 22031.868551400003f64 ); } #[test] fn test_point_mass_2() { - assert_eq!(VenusBarycenter::gravitational_parameter(), 324858.592f64); + assert_eq!(VenusBarycenter.gravitational_parameter(), 324858.592f64); } #[test] fn test_point_mass_3() { assert_eq!( - EarthBarycenter::gravitational_parameter(), + EarthBarycenter.gravitational_parameter(), 403503.2356254802f64 ); } #[test] fn test_point_mass_4() { assert_eq!( - MarsBarycenter::gravitational_parameter(), + MarsBarycenter.gravitational_parameter(), 42828.3758157561f64 ); } #[test] fn test_point_mass_5() { assert_eq!( - JupiterBarycenter::gravitational_parameter(), + JupiterBarycenter.gravitational_parameter(), 126712764.09999998f64 ); } #[test] fn test_point_mass_6() { - assert_eq!( - SaturnBarycenter::gravitational_parameter(), - 37940584.8418f64 - ); + assert_eq!(SaturnBarycenter.gravitational_parameter(), 37940584.8418f64); } #[test] fn test_point_mass_7() { assert_eq!( - UranusBarycenter::gravitational_parameter(), + UranusBarycenter.gravitational_parameter(), 5794556.3999999985f64 ); } #[test] fn test_point_mass_8() { assert_eq!( - NeptuneBarycenter::gravitational_parameter(), + NeptuneBarycenter.gravitational_parameter(), 6836527.100580399f64 ); } #[test] fn test_point_mass_9() { - assert_eq!(PlutoBarycenter::gravitational_parameter(), 975.5f64); + assert_eq!(PlutoBarycenter.gravitational_parameter(), 975.5f64); } } diff --git a/crates/lox_core/src/bodies/generated/minor.rs b/crates/lox_core/src/bodies/generated/minor.rs index 73a4fab4..ca46d02b 100644 --- a/crates/lox_core/src/bodies/generated/minor.rs +++ b/crates/lox_core/src/bodies/generated/minor.rs @@ -14,18 +14,18 @@ use crate::bodies::{ Psyche, RotationalElements, Steins, Toutatis, TriAxial, Vesta, WilsonHarrington, }; impl Ellipsoid for Gaspra { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 4.4f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 6.233333333333334f64 } } impl TriAxial for Gaspra { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 9.1f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 5.2f64 } } @@ -45,18 +45,18 @@ impl RotationalElements for Gaspra { ); } impl Ellipsoid for Ida { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 7.6f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 15.466666666666667f64 } } impl TriAxial for Ida { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 26.8f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 12f64 } } @@ -84,23 +84,23 @@ impl RotationalElements for Dactyl { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Ceres { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 62.62888864440993f64 } } impl Ellipsoid for Ceres { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 446f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 473.5333333333333f64 } } impl TriAxial for Ceres { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 487.3f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 487.3f64 } } @@ -120,7 +120,7 @@ impl RotationalElements for Ceres { ); } impl PointMass for Pallas { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 13.665878145967422f64 } } @@ -140,23 +140,23 @@ impl RotationalElements for Pallas { ); } impl PointMass for Vesta { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 17.288232879171513f64 } } impl Ellipsoid for Vesta { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 229f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 266f64 } } impl TriAxial for Vesta { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 289f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 280f64 } } @@ -176,23 +176,23 @@ impl RotationalElements for Vesta { ); } impl PointMass for Psyche { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 1.5896582441709424f64 } } impl Ellipsoid for Psyche { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 94.5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 116.66666666666667f64 } } impl TriAxial for Psyche { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 139.5f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 116f64 } } @@ -205,18 +205,18 @@ impl RotationalElements for Psyche { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Lutetia { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 46.5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 53f64 } } impl TriAxial for Lutetia { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 62f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 50.5f64 } } @@ -244,23 +244,23 @@ impl RotationalElements for Kleopatra { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Eros { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.0004463f64 } } impl Ellipsoid for Eros { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 5.5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 9.333333333333334f64 } } impl TriAxial for Eros { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 17f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 5.5f64 } } @@ -280,23 +280,23 @@ impl RotationalElements for Eros { ); } impl PointMass for Davida { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 3.8944831481705644f64 } } impl Ellipsoid for Davida { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 127f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 151.33333333333334f64 } } impl TriAxial for Davida { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 180f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 147f64 } } @@ -316,18 +316,18 @@ impl RotationalElements for Davida { ); } impl Ellipsoid for Mathilde { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 23f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 26.666666666666668f64 } } impl TriAxial for Mathilde { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 33f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 24f64 } } @@ -340,18 +340,18 @@ impl RotationalElements for Mathilde { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Steins { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 2.04f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 2.6700000000000004f64 } } impl TriAxial for Steins { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 3.24f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 2.73f64 } } @@ -387,18 +387,18 @@ impl RotationalElements for WilsonHarrington { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Toutatis { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 0.85f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1.3316666666666666f64 } } impl TriAxial for Toutatis { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 2.13f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1.015f64 } } @@ -411,18 +411,18 @@ impl RotationalElements for Toutatis { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Itokawa { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 0.104f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 0.17300000000000001f64 } } impl TriAxial for Itokawa { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 0.268f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 0.147f64 } } @@ -451,10 +451,10 @@ mod tests { use crate::bodies::*; #[test] fn test_tri_axial_9511010() { - assert_eq!(Gaspra::polar_radius(), 4.4f64); - assert_eq!(Gaspra::mean_radius(), 6.233333333333334f64); - assert_eq!(Gaspra::subplanetary_radius(), 9.1f64); - assert_eq!(Gaspra::along_orbit_radius(), 5.2f64); + assert_eq!(Gaspra.polar_radius(), 4.4f64); + assert_eq!(Gaspra.mean_radius(), 6.233333333333334f64); + assert_eq!(Gaspra.subplanetary_radius(), 9.1f64); + assert_eq!(Gaspra.along_orbit_radius(), 5.2f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_9511010() { @@ -491,10 +491,10 @@ mod tests { } #[test] fn test_tri_axial_2431010() { - assert_eq!(Ida::polar_radius(), 7.6f64); - assert_eq!(Ida::mean_radius(), 15.466666666666667f64); - assert_eq!(Ida::subplanetary_radius(), 26.8f64); - assert_eq!(Ida::along_orbit_radius(), 12f64); + assert_eq!(Ida.polar_radius(), 7.6f64); + assert_eq!(Ida.mean_radius(), 15.466666666666667f64); + assert_eq!(Ida.subplanetary_radius(), 26.8f64); + assert_eq!(Ida.along_orbit_radius(), 12f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2431010() { @@ -559,14 +559,14 @@ mod tests { } #[test] fn test_point_mass_2000001() { - assert_eq!(Ceres::gravitational_parameter(), 62.62888864440993f64); + assert_eq!(Ceres.gravitational_parameter(), 62.62888864440993f64); } #[test] fn test_tri_axial_2000001() { - assert_eq!(Ceres::polar_radius(), 446f64); - assert_eq!(Ceres::mean_radius(), 473.5333333333333f64); - assert_eq!(Ceres::subplanetary_radius(), 487.3f64); - assert_eq!(Ceres::along_orbit_radius(), 487.3f64); + assert_eq!(Ceres.polar_radius(), 446f64); + assert_eq!(Ceres.mean_radius(), 473.5333333333333f64); + assert_eq!(Ceres.subplanetary_radius(), 487.3f64); + assert_eq!(Ceres.along_orbit_radius(), 487.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000001() { @@ -603,7 +603,7 @@ mod tests { } #[test] fn test_point_mass_2000002() { - assert_eq!(Pallas::gravitational_parameter(), 13.665878145967422f64); + assert_eq!(Pallas.gravitational_parameter(), 13.665878145967422f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000002() { @@ -640,14 +640,14 @@ mod tests { } #[test] fn test_point_mass_2000004() { - assert_eq!(Vesta::gravitational_parameter(), 17.288232879171513f64); + assert_eq!(Vesta.gravitational_parameter(), 17.288232879171513f64); } #[test] fn test_tri_axial_2000004() { - assert_eq!(Vesta::polar_radius(), 229f64); - assert_eq!(Vesta::mean_radius(), 266f64); - assert_eq!(Vesta::subplanetary_radius(), 289f64); - assert_eq!(Vesta::along_orbit_radius(), 280f64); + assert_eq!(Vesta.polar_radius(), 229f64); + assert_eq!(Vesta.mean_radius(), 266f64); + assert_eq!(Vesta.subplanetary_radius(), 289f64); + assert_eq!(Vesta.along_orbit_radius(), 280f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000004() { @@ -684,14 +684,14 @@ mod tests { } #[test] fn test_point_mass_2000016() { - assert_eq!(Psyche::gravitational_parameter(), 1.5896582441709424f64); + assert_eq!(Psyche.gravitational_parameter(), 1.5896582441709424f64); } #[test] fn test_tri_axial_2000016() { - assert_eq!(Psyche::polar_radius(), 94.5f64); - assert_eq!(Psyche::mean_radius(), 116.66666666666667f64); - assert_eq!(Psyche::subplanetary_radius(), 139.5f64); - assert_eq!(Psyche::along_orbit_radius(), 116f64); + assert_eq!(Psyche.polar_radius(), 94.5f64); + assert_eq!(Psyche.mean_radius(), 116.66666666666667f64); + assert_eq!(Psyche.subplanetary_radius(), 139.5f64); + assert_eq!(Psyche.along_orbit_radius(), 116f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000016() { @@ -723,10 +723,10 @@ mod tests { } #[test] fn test_tri_axial_2000021() { - assert_eq!(Lutetia::polar_radius(), 46.5f64); - assert_eq!(Lutetia::mean_radius(), 53f64); - assert_eq!(Lutetia::subplanetary_radius(), 62f64); - assert_eq!(Lutetia::along_orbit_radius(), 50.5f64); + assert_eq!(Lutetia.polar_radius(), 46.5f64); + assert_eq!(Lutetia.mean_radius(), 53f64); + assert_eq!(Lutetia.subplanetary_radius(), 62f64); + assert_eq!(Lutetia.along_orbit_radius(), 50.5f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000021() { @@ -791,14 +791,14 @@ mod tests { } #[test] fn test_point_mass_2000433() { - assert_eq!(Eros::gravitational_parameter(), 0.0004463f64); + assert_eq!(Eros.gravitational_parameter(), 0.0004463f64); } #[test] fn test_tri_axial_2000433() { - assert_eq!(Eros::polar_radius(), 5.5f64); - assert_eq!(Eros::mean_radius(), 9.333333333333334f64); - assert_eq!(Eros::subplanetary_radius(), 17f64); - assert_eq!(Eros::along_orbit_radius(), 5.5f64); + assert_eq!(Eros.polar_radius(), 5.5f64); + assert_eq!(Eros.mean_radius(), 9.333333333333334f64); + assert_eq!(Eros.subplanetary_radius(), 17f64); + assert_eq!(Eros.along_orbit_radius(), 5.5f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000433() { @@ -835,14 +835,14 @@ mod tests { } #[test] fn test_point_mass_2000511() { - assert_eq!(Davida::gravitational_parameter(), 3.8944831481705644f64); + assert_eq!(Davida.gravitational_parameter(), 3.8944831481705644f64); } #[test] fn test_tri_axial_2000511() { - assert_eq!(Davida::polar_radius(), 127f64); - assert_eq!(Davida::mean_radius(), 151.33333333333334f64); - assert_eq!(Davida::subplanetary_radius(), 180f64); - assert_eq!(Davida::along_orbit_radius(), 147f64); + assert_eq!(Davida.polar_radius(), 127f64); + assert_eq!(Davida.mean_radius(), 151.33333333333334f64); + assert_eq!(Davida.subplanetary_radius(), 180f64); + assert_eq!(Davida.along_orbit_radius(), 147f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000511() { @@ -879,10 +879,10 @@ mod tests { } #[test] fn test_tri_axial_2000253() { - assert_eq!(Mathilde::polar_radius(), 23f64); - assert_eq!(Mathilde::mean_radius(), 26.666666666666668f64); - assert_eq!(Mathilde::subplanetary_radius(), 33f64); - assert_eq!(Mathilde::along_orbit_radius(), 24f64); + assert_eq!(Mathilde.polar_radius(), 23f64); + assert_eq!(Mathilde.mean_radius(), 26.666666666666668f64); + assert_eq!(Mathilde.subplanetary_radius(), 33f64); + assert_eq!(Mathilde.along_orbit_radius(), 24f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2000253() { @@ -914,10 +914,10 @@ mod tests { } #[test] fn test_tri_axial_2002867() { - assert_eq!(Steins::polar_radius(), 2.04f64); - assert_eq!(Steins::mean_radius(), 2.6700000000000004f64); - assert_eq!(Steins::subplanetary_radius(), 3.24f64); - assert_eq!(Steins::along_orbit_radius(), 2.73f64); + assert_eq!(Steins.polar_radius(), 2.04f64); + assert_eq!(Steins.mean_radius(), 2.6700000000000004f64); + assert_eq!(Steins.subplanetary_radius(), 3.24f64); + assert_eq!(Steins.along_orbit_radius(), 2.73f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2002867() { @@ -1010,10 +1010,10 @@ mod tests { } #[test] fn test_tri_axial_2004179() { - assert_eq!(Toutatis::polar_radius(), 0.85f64); - assert_eq!(Toutatis::mean_radius(), 1.3316666666666666f64); - assert_eq!(Toutatis::subplanetary_radius(), 2.13f64); - assert_eq!(Toutatis::along_orbit_radius(), 1.015f64); + assert_eq!(Toutatis.polar_radius(), 0.85f64); + assert_eq!(Toutatis.mean_radius(), 1.3316666666666666f64); + assert_eq!(Toutatis.subplanetary_radius(), 2.13f64); + assert_eq!(Toutatis.along_orbit_radius(), 1.015f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2004179() { @@ -1045,10 +1045,10 @@ mod tests { } #[test] fn test_tri_axial_2025143() { - assert_eq!(Itokawa::polar_radius(), 0.104f64); - assert_eq!(Itokawa::mean_radius(), 0.17300000000000001f64); - assert_eq!(Itokawa::subplanetary_radius(), 0.268f64); - assert_eq!(Itokawa::along_orbit_radius(), 0.147f64); + assert_eq!(Itokawa.polar_radius(), 0.104f64); + assert_eq!(Itokawa.mean_radius(), 0.17300000000000001f64); + assert_eq!(Itokawa.subplanetary_radius(), 0.268f64); + assert_eq!(Itokawa.along_orbit_radius(), 0.147f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_2025143() { diff --git a/crates/lox_core/src/bodies/generated/planets.rs b/crates/lox_core/src/bodies/generated/planets.rs index ee4cb1f7..5342a65c 100644 --- a/crates/lox_core/src/bodies/generated/planets.rs +++ b/crates/lox_core/src/bodies/generated/planets.rs @@ -13,20 +13,20 @@ use crate::bodies::{ PointMass, PolynomialCoefficients, RotationalElements, Saturn, Spheroid, Uranus, Venus, }; impl PointMass for Mercury { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 22031.868551400003f64 } } impl Ellipsoid for Mercury { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 2438.26f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 2439.7733333333335f64 } } impl Spheroid for Mercury { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 2440.53f64 } } @@ -74,20 +74,20 @@ impl RotationalElements for Mercury { ); } impl PointMass for Venus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 324858.592f64 } } impl Ellipsoid for Venus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 6051.8f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 6051.8f64 } } impl Spheroid for Venus { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 6051.8f64 } } @@ -107,20 +107,20 @@ impl RotationalElements for Venus { ); } impl PointMass for Earth { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 398600.43550702266f64 } } impl Ellipsoid for Earth { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 6356.7519f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 6371.008366666666f64 } } impl Spheroid for Earth { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 6378.1366f64 } } @@ -174,20 +174,20 @@ impl RotationalElements for Earth { ); } impl PointMass for Mars { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 42828.37362069909f64 } } impl Ellipsoid for Mars { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 3376.2f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 3389.5266666666666f64 } } impl Spheroid for Mars { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 3396.19f64 } } @@ -361,20 +361,20 @@ impl RotationalElements for Mars { ); } impl PointMass for Jupiter { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 126686531.9003704f64 } } impl Ellipsoid for Jupiter { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 66854f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 69946f64 } } impl Spheroid for Jupiter { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 71492f64 } } @@ -471,20 +471,20 @@ impl RotationalElements for Jupiter { ); } impl PointMass for Saturn { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 37931206.23436167f64 } } impl Ellipsoid for Saturn { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 54364f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 58300f64 } } impl Spheroid for Saturn { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 60268f64 } } @@ -532,20 +532,20 @@ impl RotationalElements for Saturn { ); } impl PointMass for Uranus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 5793951.256527211f64 } } impl Ellipsoid for Uranus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 24973f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 25363.666666666668f64 } } impl Spheroid for Uranus { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 25559f64 } } @@ -605,20 +605,20 @@ impl RotationalElements for Uranus { ); } impl PointMass for Neptune { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 6835103.145462294f64 } } impl Ellipsoid for Neptune { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 24341f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 24623f64 } } impl Spheroid for Neptune { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 24764f64 } } @@ -711,20 +711,20 @@ impl RotationalElements for Neptune { ); } impl PointMass for Pluto { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 869.6138177608748f64 } } impl Ellipsoid for Pluto { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1188.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1188.3f64 } } impl Spheroid for Pluto { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 1188.3f64 } } @@ -749,13 +749,13 @@ mod tests { use crate::bodies::*; #[test] fn test_point_mass_199() { - assert_eq!(Mercury::gravitational_parameter(), 22031.868551400003f64); + assert_eq!(Mercury.gravitational_parameter(), 22031.868551400003f64); } #[test] fn test_spheroid_199() { - assert_eq!(Mercury::polar_radius(), 2438.26f64); - assert_eq!(Mercury::mean_radius(), 2439.7733333333335f64); - assert_eq!(Mercury::equatorial_radius(), 2440.53f64); + assert_eq!(Mercury.polar_radius(), 2438.26f64); + assert_eq!(Mercury.mean_radius(), 2439.7733333333335f64); + assert_eq!(Mercury.equatorial_radius(), 2440.53f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_199() { @@ -823,13 +823,13 @@ mod tests { } #[test] fn test_point_mass_299() { - assert_eq!(Venus::gravitational_parameter(), 324858.592f64); + assert_eq!(Venus.gravitational_parameter(), 324858.592f64); } #[test] fn test_spheroid_299() { - assert_eq!(Venus::polar_radius(), 6051.8f64); - assert_eq!(Venus::mean_radius(), 6051.8f64); - assert_eq!(Venus::equatorial_radius(), 6051.8f64); + assert_eq!(Venus.polar_radius(), 6051.8f64); + assert_eq!(Venus.mean_radius(), 6051.8f64); + assert_eq!(Venus.equatorial_radius(), 6051.8f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_299() { @@ -866,13 +866,13 @@ mod tests { } #[test] fn test_point_mass_399() { - assert_eq!(Earth::gravitational_parameter(), 398600.43550702266f64); + assert_eq!(Earth.gravitational_parameter(), 398600.43550702266f64); } #[test] fn test_spheroid_399() { - assert_eq!(Earth::polar_radius(), 6356.7519f64); - assert_eq!(Earth::mean_radius(), 6371.008366666666f64); - assert_eq!(Earth::equatorial_radius(), 6378.1366f64); + assert_eq!(Earth.polar_radius(), 6356.7519f64); + assert_eq!(Earth.mean_radius(), 6371.008366666666f64); + assert_eq!(Earth.equatorial_radius(), 6378.1366f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_399() { @@ -945,13 +945,13 @@ mod tests { } #[test] fn test_point_mass_499() { - assert_eq!(Mars::gravitational_parameter(), 42828.37362069909f64); + assert_eq!(Mars.gravitational_parameter(), 42828.37362069909f64); } #[test] fn test_spheroid_499() { - assert_eq!(Mars::polar_radius(), 3376.2f64); - assert_eq!(Mars::mean_radius(), 3389.5266666666666f64); - assert_eq!(Mars::equatorial_radius(), 3396.19f64); + assert_eq!(Mars.polar_radius(), 3376.2f64); + assert_eq!(Mars.mean_radius(), 3389.5266666666666f64); + assert_eq!(Mars.equatorial_radius(), 3396.19f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_499() { @@ -1145,13 +1145,13 @@ mod tests { } #[test] fn test_point_mass_599() { - assert_eq!(Jupiter::gravitational_parameter(), 126686531.9003704f64); + assert_eq!(Jupiter.gravitational_parameter(), 126686531.9003704f64); } #[test] fn test_spheroid_599() { - assert_eq!(Jupiter::polar_radius(), 66854f64); - assert_eq!(Jupiter::mean_radius(), 69946f64); - assert_eq!(Jupiter::equatorial_radius(), 71492f64); + assert_eq!(Jupiter.polar_radius(), 66854f64); + assert_eq!(Jupiter.mean_radius(), 69946f64); + assert_eq!(Jupiter.equatorial_radius(), 71492f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_599() { @@ -1268,13 +1268,13 @@ mod tests { } #[test] fn test_point_mass_699() { - assert_eq!(Saturn::gravitational_parameter(), 37931206.23436167f64); + assert_eq!(Saturn.gravitational_parameter(), 37931206.23436167f64); } #[test] fn test_spheroid_699() { - assert_eq!(Saturn::polar_radius(), 54364f64); - assert_eq!(Saturn::mean_radius(), 58300f64); - assert_eq!(Saturn::equatorial_radius(), 60268f64); + assert_eq!(Saturn.polar_radius(), 54364f64); + assert_eq!(Saturn.mean_radius(), 58300f64); + assert_eq!(Saturn.equatorial_radius(), 60268f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_699() { @@ -1342,13 +1342,13 @@ mod tests { } #[test] fn test_point_mass_799() { - assert_eq!(Uranus::gravitational_parameter(), 5793951.256527211f64); + assert_eq!(Uranus.gravitational_parameter(), 5793951.256527211f64); } #[test] fn test_spheroid_799() { - assert_eq!(Uranus::polar_radius(), 24973f64); - assert_eq!(Uranus::mean_radius(), 25363.666666666668f64); - assert_eq!(Uranus::equatorial_radius(), 25559f64); + assert_eq!(Uranus.polar_radius(), 24973f64); + assert_eq!(Uranus.mean_radius(), 25363.666666666668f64); + assert_eq!(Uranus.equatorial_radius(), 25559f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_799() { @@ -1426,13 +1426,13 @@ mod tests { } #[test] fn test_point_mass_899() { - assert_eq!(Neptune::gravitational_parameter(), 6835103.145462294f64); + assert_eq!(Neptune.gravitational_parameter(), 6835103.145462294f64); } #[test] fn test_spheroid_899() { - assert_eq!(Neptune::polar_radius(), 24341f64); - assert_eq!(Neptune::mean_radius(), 24623f64); - assert_eq!(Neptune::equatorial_radius(), 24764f64); + assert_eq!(Neptune.polar_radius(), 24341f64); + assert_eq!(Neptune.mean_radius(), 24623f64); + assert_eq!(Neptune.equatorial_radius(), 24764f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_899() { @@ -1545,13 +1545,13 @@ mod tests { } #[test] fn test_point_mass_999() { - assert_eq!(Pluto::gravitational_parameter(), 869.6138177608748f64); + assert_eq!(Pluto.gravitational_parameter(), 869.6138177608748f64); } #[test] fn test_spheroid_999() { - assert_eq!(Pluto::polar_radius(), 1188.3f64); - assert_eq!(Pluto::mean_radius(), 1188.3f64); - assert_eq!(Pluto::equatorial_radius(), 1188.3f64); + assert_eq!(Pluto.polar_radius(), 1188.3f64); + assert_eq!(Pluto.mean_radius(), 1188.3f64); + assert_eq!(Pluto.equatorial_radius(), 1188.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_999() { diff --git a/crates/lox_core/src/bodies/generated/satellites.rs b/crates/lox_core/src/bodies/generated/satellites.rs index 8d8b68df..af2944a5 100644 --- a/crates/lox_core/src/bodies/generated/satellites.rs +++ b/crates/lox_core/src/bodies/generated/satellites.rs @@ -27,23 +27,23 @@ use crate::bodies::{ Umbriel, Ymir, }; impl PointMass for Moon { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 4902.80011845755f64 } } impl Ellipsoid for Moon { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1737.4f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1737.4000000000003f64 } } impl TriAxial for Moon { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 1737.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1737.4f64 } } @@ -113,23 +113,23 @@ impl RotationalElements for Moon { ); } impl PointMass for Phobos { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.0007087546066894452f64 } } impl Ellipsoid for Phobos { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 9.1f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 11.166666666666666f64 } } impl TriAxial for Phobos { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 13f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 11.4f64 } } @@ -173,23 +173,23 @@ impl RotationalElements for Phobos { ); } impl PointMass for Deimos { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.00009615569648120313f64 } } impl Ellipsoid for Deimos { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 5.1f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 6.3f64 } } impl TriAxial for Deimos { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 7.8f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 6f64 } } @@ -250,23 +250,23 @@ impl RotationalElements for Deimos { ); } impl PointMass for Io { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 5959.915466180539f64 } } impl Ellipsoid for Io { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1815.7f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1821.5f64 } } impl TriAxial for Io { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 1829.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1819.4f64 } } @@ -309,23 +309,23 @@ impl RotationalElements for Io { ); } impl PointMass for Europa { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 3202.712099607295f64 } } impl Ellipsoid for Europa { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1559.5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1560.8f64 } } impl TriAxial for Europa { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 1562.6f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1560.3f64 } } @@ -377,23 +377,23 @@ impl RotationalElements for Europa { ); } impl PointMass for Ganymede { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 9887.832752719638f64 } } impl Ellipsoid for Ganymede { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 2631.2f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 2631.2f64 } } impl TriAxial for Ganymede { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 2631.2f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 2631.2f64 } } @@ -442,23 +442,23 @@ impl RotationalElements for Ganymede { ); } impl PointMass for Callisto { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 7179.283402579837f64 } } impl Ellipsoid for Callisto { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 2410.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 2410.3f64 } } impl TriAxial for Callisto { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 2410.3f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 2410.3f64 } } @@ -513,23 +513,23 @@ impl RotationalElements for Callisto { ); } impl PointMass for Amalthea { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.1645634534798259f64 } } impl Ellipsoid for Amalthea { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 64f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 87.33333333333333f64 } } impl TriAxial for Amalthea { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 125f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 73f64 } } @@ -590,23 +590,23 @@ impl RotationalElements for Amalthea { ); } impl PointMass for Himalia { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.1515524299611265f64 } } impl Ellipsoid for Himalia { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 85f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 85f64 } } impl TriAxial for Himalia { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 85f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 85f64 } } @@ -619,18 +619,18 @@ impl RotationalElements for Himalia { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Elara { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 40f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 40f64 } } impl TriAxial for Elara { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 40f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 40f64 } } @@ -643,18 +643,18 @@ impl RotationalElements for Elara { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Pasiphae { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 18f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 18f64 } } impl TriAxial for Pasiphae { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 18f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 18f64 } } @@ -667,18 +667,18 @@ impl RotationalElements for Pasiphae { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Sinope { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 14f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 14f64 } } impl TriAxial for Sinope { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 14f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 14f64 } } @@ -691,18 +691,18 @@ impl RotationalElements for Sinope { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Lysithea { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 12f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 12f64 } } impl TriAxial for Lysithea { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 12f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 12f64 } } @@ -715,18 +715,18 @@ impl RotationalElements for Lysithea { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Carme { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 15f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 15f64 } } impl TriAxial for Carme { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 15f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 15f64 } } @@ -739,18 +739,18 @@ impl RotationalElements for Carme { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Ananke { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 10f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 10f64 } } impl TriAxial for Ananke { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 10f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 10f64 } } @@ -763,18 +763,18 @@ impl RotationalElements for Ananke { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Leda { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 5f64 } } impl TriAxial for Leda { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 5f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 5f64 } } @@ -787,23 +787,23 @@ impl RotationalElements for Leda { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Thebe { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.030148f64 } } impl Ellipsoid for Thebe { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 42f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 49.666666666666664f64 } } impl TriAxial for Thebe { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 58f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 49f64 } } @@ -864,23 +864,23 @@ impl RotationalElements for Thebe { ); } impl PointMass for Adrastea { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.000139f64 } } impl Ellipsoid for Adrastea { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 7f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 8.333333333333334f64 } } impl TriAxial for Adrastea { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 10f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 8f64 } } @@ -908,23 +908,23 @@ impl RotationalElements for Adrastea { ); } impl PointMass for Metis { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.002501f64 } } impl Ellipsoid for Metis { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 17f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 22.333333333333332f64 } } impl TriAxial for Metis { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 30f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 20f64 } } @@ -1232,23 +1232,23 @@ impl RotationalElements for Dia { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Mimas { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 2.503488768152587f64 } } impl Ellipsoid for Mimas { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 190.6f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 198.36666666666667f64 } } impl TriAxial for Mimas { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 207.8f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 196.7f64 } } @@ -1303,23 +1303,23 @@ impl RotationalElements for Mimas { ); } impl PointMass for Enceladus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 7.210366688598896f64 } } impl Ellipsoid for Enceladus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 248.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 252.1f64 } } impl TriAxial for Enceladus { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 256.6f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 251.4f64 } } @@ -1347,23 +1347,23 @@ impl RotationalElements for Enceladus { ); } impl PointMass for Tethys { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 41.21352885489587f64 } } impl Ellipsoid for Tethys { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 526.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 530.9999999999999f64 } } impl TriAxial for Tethys { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 538.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 528.3f64 } } @@ -1418,23 +1418,23 @@ impl RotationalElements for Tethys { ); } impl PointMass for Dione { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 73.11607172482067f64 } } impl Ellipsoid for Dione { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 559.6f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 561.4333333333333f64 } } impl TriAxial for Dione { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 563.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 561.3f64 } } @@ -1462,23 +1462,23 @@ impl RotationalElements for Dione { ); } impl PointMass for Rhea { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 153.9417519146563f64 } } impl Ellipsoid for Rhea { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 762.4f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 763.5f64 } } impl TriAxial for Rhea { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 765f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 763.1f64 } } @@ -1533,23 +1533,23 @@ impl RotationalElements for Rhea { ); } impl PointMass for Titan { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 8978.137095521046f64 } } impl Ellipsoid for Titan { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 2574.47f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 2574.7999999999997f64 } } impl TriAxial for Titan { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 2575.15f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 2574.78f64 } } @@ -1577,23 +1577,23 @@ impl RotationalElements for Titan { ); } impl PointMass for Hyperion { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.3704913747932265f64 } } impl Ellipsoid for Hyperion { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 102.7f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 138.6f64 } } impl TriAxial for Hyperion { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 180.1f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 133f64 } } @@ -1606,23 +1606,23 @@ impl RotationalElements for Hyperion { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Iapetus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 120.5151060137642f64 } } impl Ellipsoid for Iapetus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 712.1f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 734.5f64 } } impl TriAxial for Iapetus { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 745.7f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 745.7f64 } } @@ -1650,23 +1650,23 @@ impl RotationalElements for Iapetus { ); } impl PointMass for Phoebe { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.5547860052791678f64 } } impl Ellipsoid for Phoebe { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 101.8f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 106.56666666666666f64 } } impl TriAxial for Phoebe { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 109.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 108.5f64 } } @@ -1686,23 +1686,23 @@ impl RotationalElements for Phoebe { ); } impl PointMass for Janus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.1265765099012197f64 } } impl Ellipsoid for Janus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 76.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 90.33333333333333f64 } } impl TriAxial for Janus { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 101.7f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 93f64 } } @@ -1757,23 +1757,23 @@ impl RotationalElements for Janus { ); } impl PointMass for Epimetheus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.03512333288208074f64 } } impl Ellipsoid for Epimetheus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 53f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 58.4f64 } } impl TriAxial for Epimetheus { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 64.9f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 57.3f64 } } @@ -1828,23 +1828,23 @@ impl RotationalElements for Epimetheus { ); } impl PointMass for Helene { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.0004757419551776972f64 } } impl Ellipsoid for Helene { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 13.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 18.46666666666667f64 } } impl TriAxial for Helene { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 22.5f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 19.6f64 } } @@ -1872,18 +1872,18 @@ impl RotationalElements for Helene { ); } impl Ellipsoid for Telesto { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 9.8f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 12.633333333333335f64 } } impl TriAxial for Telesto { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 16.3f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 11.8f64 } } @@ -1911,18 +1911,18 @@ impl RotationalElements for Telesto { ); } impl Ellipsoid for Calypso { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 6.3f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 10.3f64 } } impl TriAxial for Calypso { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 15.3f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 9.3f64 } } @@ -1950,23 +1950,23 @@ impl RotationalElements for Calypso { ); } impl PointMass for Atlas { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.0003718871247516475f64 } } impl Ellipsoid for Atlas { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 9.4f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 15.899999999999999f64 } } impl TriAxial for Atlas { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 20.5f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 17.8f64 } } @@ -1994,23 +1994,23 @@ impl RotationalElements for Atlas { ); } impl PointMass for Prometheus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.0107520800100761f64 } } impl Ellipsoid for Prometheus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 28.2f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 46f64 } } impl TriAxial for Prometheus { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 68.2f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 41.6f64 } } @@ -2038,23 +2038,23 @@ impl RotationalElements for Prometheus { ); } impl PointMass for Pandora { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.009290325122028795f64 } } impl Ellipsoid for Pandora { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 31.5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 41.5f64 } } impl TriAxial for Pandora { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 52.2f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 40.8f64 } } @@ -2082,18 +2082,18 @@ impl RotationalElements for Pandora { ); } impl Ellipsoid for Pan { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 10.4f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 14.333333333333334f64 } } impl TriAxial for Pan { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 17.2f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 15.4f64 } } @@ -2225,18 +2225,18 @@ impl RotationalElements for Narvi { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Methone { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1.21f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1.4799999999999998f64 } } impl TriAxial for Methone { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 1.94f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1.29f64 } } @@ -2249,18 +2249,18 @@ impl RotationalElements for Methone { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Pallene { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1.8f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 2.2533333333333334f64 } } impl TriAxial for Pallene { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 2.88f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 2.08f64 } } @@ -2273,18 +2273,18 @@ impl RotationalElements for Pallene { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Polydeuces { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1.2333333333333334f64 } } impl TriAxial for Polydeuces { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 1.5f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1.2f64 } } @@ -2297,18 +2297,18 @@ impl RotationalElements for Polydeuces { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Daphnis { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 2.8f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 3.9666666666666663f64 } } impl TriAxial for Daphnis { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 4.6f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 4.5f64 } } @@ -2425,18 +2425,18 @@ impl RotationalElements for Surtur { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Anthe { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 0.5f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 0.5f64 } } impl TriAxial for Anthe { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 0.5f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 0.5f64 } } @@ -2473,18 +2473,18 @@ impl RotationalElements for Tarqeq { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl Ellipsoid for Aegaeon { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 0.2f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 0.3833333333333333f64 } } impl TriAxial for Aegaeon { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 0.7f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 0.25f64 } } @@ -2497,23 +2497,23 @@ impl RotationalElements for Aegaeon { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Ariel { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 83.46344431770477f64 } } impl Ellipsoid for Ariel { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 577.7f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 578.9f64 } } impl TriAxial for Ariel { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 581.1f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 577.9f64 } } @@ -2583,23 +2583,23 @@ impl RotationalElements for Ariel { ); } impl PointMass for Umbriel { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 85.09338094489388f64 } } impl Ellipsoid for Umbriel { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 584.7f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 584.7f64 } } impl TriAxial for Umbriel { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 584.7f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 584.7f64 } } @@ -2672,23 +2672,23 @@ impl RotationalElements for Umbriel { ); } impl PointMass for Titania { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 226.9437003741248f64 } } impl Ellipsoid for Titania { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 788.9f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 788.9f64 } } impl TriAxial for Titania { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 788.9f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 788.9f64 } } @@ -2764,23 +2764,23 @@ impl RotationalElements for Titania { ); } impl PointMass for Oberon { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 205.3234302535623f64 } } impl Ellipsoid for Oberon { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 761.4f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 761.4f64 } } impl TriAxial for Oberon { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 761.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 761.4f64 } } @@ -2859,23 +2859,23 @@ impl RotationalElements for Oberon { ); } impl PointMass for Miranda { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 4.3195168992321f64 } } impl Ellipsoid for Miranda { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 232.9f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 235.83333333333334f64 } } impl TriAxial for Miranda { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 240.4f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 234.2f64 } } @@ -2960,18 +2960,18 @@ impl RotationalElements for Miranda { ); } impl Ellipsoid for Cordelia { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 13f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 13f64 } } impl TriAxial for Cordelia { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 13f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 13f64 } } @@ -3056,18 +3056,18 @@ impl RotationalElements for Cordelia { ); } impl Ellipsoid for Ophelia { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 15f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 15f64 } } impl TriAxial for Ophelia { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 15f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 15f64 } } @@ -3152,18 +3152,18 @@ impl RotationalElements for Ophelia { ); } impl Ellipsoid for Bianca { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 21f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 21f64 } } impl TriAxial for Bianca { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 21f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 21f64 } } @@ -3248,18 +3248,18 @@ impl RotationalElements for Bianca { ); } impl Ellipsoid for Cressida { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 31f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 31f64 } } impl TriAxial for Cressida { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 31f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 31f64 } } @@ -3344,18 +3344,18 @@ impl RotationalElements for Cressida { ); } impl Ellipsoid for Desdemona { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 27f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 27f64 } } impl TriAxial for Desdemona { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 27f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 27f64 } } @@ -3440,18 +3440,18 @@ impl RotationalElements for Desdemona { ); } impl Ellipsoid for Juliet { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 42f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 42f64 } } impl TriAxial for Juliet { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 42f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 42f64 } } @@ -3536,18 +3536,18 @@ impl RotationalElements for Juliet { ); } impl Ellipsoid for Portia { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 54f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 54f64 } } impl TriAxial for Portia { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 54f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 54f64 } } @@ -3632,18 +3632,18 @@ impl RotationalElements for Portia { ); } impl Ellipsoid for Rosalind { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 27f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 27f64 } } impl TriAxial for Rosalind { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 27f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 27f64 } } @@ -3728,18 +3728,18 @@ impl RotationalElements for Rosalind { ); } impl Ellipsoid for Belinda { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 33f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 33f64 } } impl TriAxial for Belinda { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 33f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 33f64 } } @@ -3824,18 +3824,18 @@ impl RotationalElements for Belinda { ); } impl Ellipsoid for Puck { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 77f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 77f64 } } impl TriAxial for Puck { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 77f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 77f64 } } @@ -4016,23 +4016,23 @@ impl RotationalElements for Cupid { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Triton { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 1428.495462910464f64 } } impl Ellipsoid for Triton { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 1352.6f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 1352.6f64 } } impl TriAxial for Triton { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 1352.6f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 1352.6f64 } } @@ -4114,18 +4114,18 @@ impl RotationalElements for Triton { ); } impl Ellipsoid for Nereid { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 170f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 170f64 } } impl TriAxial for Nereid { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 170f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 170f64 } } @@ -4138,23 +4138,23 @@ impl RotationalElements for Nereid { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Naiad { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.008530281246540886f64 } } impl Ellipsoid for Naiad { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 29f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 29f64 } } impl TriAxial for Naiad { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 29f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 29f64 } } @@ -4236,23 +4236,23 @@ impl RotationalElements for Naiad { ); } impl PointMass for Thalassa { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.0235887319799217f64 } } impl Ellipsoid for Thalassa { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 40f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 40f64 } } impl TriAxial for Thalassa { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 40f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 40f64 } } @@ -4334,23 +4334,23 @@ impl RotationalElements for Thalassa { ); } impl PointMass for Despina { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.1167318403814998f64 } } impl Ellipsoid for Despina { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 74f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 74f64 } } impl TriAxial for Despina { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 74f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 74f64 } } @@ -4432,23 +4432,23 @@ impl RotationalElements for Despina { ); } impl PointMass for Galatea { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.189898503906069f64 } } impl Ellipsoid for Galatea { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 79f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 79f64 } } impl TriAxial for Galatea { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 79f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 79f64 } } @@ -4530,23 +4530,23 @@ impl RotationalElements for Galatea { ); } impl PointMass for Larissa { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.2548437405693583f64 } } impl Ellipsoid for Larissa { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 96f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 96f64 } } impl TriAxial for Larissa { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 96f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 96f64 } } @@ -4628,23 +4628,23 @@ impl RotationalElements for Larissa { ); } impl PointMass for Proteus { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 2.583422379120727f64 } } impl Ellipsoid for Proteus { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 201f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 209f64 } } impl TriAxial for Proteus { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 218f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 208f64 } } @@ -4766,23 +4766,23 @@ impl RotationalElements for Neso { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Charon { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 105.8799888601881f64 } } impl Ellipsoid for Charon { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 606f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 606f64 } } impl TriAxial for Charon { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { 606f64 } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { 606f64 } } @@ -4802,7 +4802,7 @@ impl RotationalElements for Charon { ); } impl PointMass for Nix { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.00304817564816976f64 } } @@ -4815,7 +4815,7 @@ impl RotationalElements for Nix { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Hydra { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.003211039206155255f64 } } @@ -4828,7 +4828,7 @@ impl RotationalElements for Hydra { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Kerberos { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0.001110040850536676f64 } } @@ -4841,7 +4841,7 @@ impl RotationalElements for Kerberos { const PRIME_MERIDIAN_COEFFICIENTS: PolynomialCoefficients = (0f64, 0f64, 0f64, &[] as &[f64]); } impl PointMass for Styx { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 0f64 } } @@ -4859,14 +4859,14 @@ mod tests { use crate::bodies::*; #[test] fn test_point_mass_301() { - assert_eq!(Moon::gravitational_parameter(), 4902.80011845755f64); + assert_eq!(Moon.gravitational_parameter(), 4902.80011845755f64); } #[test] fn test_tri_axial_301() { - assert_eq!(Moon::polar_radius(), 1737.4f64); - assert_eq!(Moon::mean_radius(), 1737.4000000000003f64); - assert_eq!(Moon::subplanetary_radius(), 1737.4f64); - assert_eq!(Moon::along_orbit_radius(), 1737.4f64); + assert_eq!(Moon.polar_radius(), 1737.4f64); + assert_eq!(Moon.mean_radius(), 1737.4000000000003f64); + assert_eq!(Moon.subplanetary_radius(), 1737.4f64); + assert_eq!(Moon.along_orbit_radius(), 1737.4f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_301() { @@ -4955,14 +4955,14 @@ mod tests { } #[test] fn test_point_mass_401() { - assert_eq!(Phobos::gravitational_parameter(), 0.0007087546066894452f64); + assert_eq!(Phobos.gravitational_parameter(), 0.0007087546066894452f64); } #[test] fn test_tri_axial_401() { - assert_eq!(Phobos::polar_radius(), 9.1f64); - assert_eq!(Phobos::mean_radius(), 11.166666666666666f64); - assert_eq!(Phobos::subplanetary_radius(), 13f64); - assert_eq!(Phobos::along_orbit_radius(), 11.4f64); + assert_eq!(Phobos.polar_radius(), 9.1f64); + assert_eq!(Phobos.mean_radius(), 11.166666666666666f64); + assert_eq!(Phobos.subplanetary_radius(), 13f64); + assert_eq!(Phobos.along_orbit_radius(), 11.4f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_401() { @@ -5025,14 +5025,14 @@ mod tests { } #[test] fn test_point_mass_402() { - assert_eq!(Deimos::gravitational_parameter(), 0.00009615569648120313f64); + assert_eq!(Deimos.gravitational_parameter(), 0.00009615569648120313f64); } #[test] fn test_tri_axial_402() { - assert_eq!(Deimos::polar_radius(), 5.1f64); - assert_eq!(Deimos::mean_radius(), 6.3f64); - assert_eq!(Deimos::subplanetary_radius(), 7.8f64); - assert_eq!(Deimos::along_orbit_radius(), 6f64); + assert_eq!(Deimos.polar_radius(), 5.1f64); + assert_eq!(Deimos.mean_radius(), 6.3f64); + assert_eq!(Deimos.subplanetary_radius(), 7.8f64); + assert_eq!(Deimos.along_orbit_radius(), 6f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_402() { @@ -5112,14 +5112,14 @@ mod tests { } #[test] fn test_point_mass_501() { - assert_eq!(Io::gravitational_parameter(), 5959.915466180539f64); + assert_eq!(Io.gravitational_parameter(), 5959.915466180539f64); } #[test] fn test_tri_axial_501() { - assert_eq!(Io::polar_radius(), 1815.7f64); - assert_eq!(Io::mean_radius(), 1821.5f64); - assert_eq!(Io::subplanetary_radius(), 1829.4f64); - assert_eq!(Io::along_orbit_radius(), 1819.4f64); + assert_eq!(Io.polar_radius(), 1815.7f64); + assert_eq!(Io.mean_radius(), 1821.5f64); + assert_eq!(Io.subplanetary_radius(), 1829.4f64); + assert_eq!(Io.along_orbit_radius(), 1819.4f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_501() { @@ -5181,14 +5181,14 @@ mod tests { } #[test] fn test_point_mass_502() { - assert_eq!(Europa::gravitational_parameter(), 3202.712099607295f64); + assert_eq!(Europa.gravitational_parameter(), 3202.712099607295f64); } #[test] fn test_tri_axial_502() { - assert_eq!(Europa::polar_radius(), 1559.5f64); - assert_eq!(Europa::mean_radius(), 1560.8f64); - assert_eq!(Europa::subplanetary_radius(), 1562.6f64); - assert_eq!(Europa::along_orbit_radius(), 1560.3f64); + assert_eq!(Europa.polar_radius(), 1559.5f64); + assert_eq!(Europa.mean_radius(), 1560.8f64); + assert_eq!(Europa.subplanetary_radius(), 1562.6f64); + assert_eq!(Europa.along_orbit_radius(), 1560.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_502() { @@ -5259,14 +5259,14 @@ mod tests { } #[test] fn test_point_mass_503() { - assert_eq!(Ganymede::gravitational_parameter(), 9887.832752719638f64); + assert_eq!(Ganymede.gravitational_parameter(), 9887.832752719638f64); } #[test] fn test_tri_axial_503() { - assert_eq!(Ganymede::polar_radius(), 2631.2f64); - assert_eq!(Ganymede::mean_radius(), 2631.2f64); - assert_eq!(Ganymede::subplanetary_radius(), 2631.2f64); - assert_eq!(Ganymede::along_orbit_radius(), 2631.2f64); + assert_eq!(Ganymede.polar_radius(), 2631.2f64); + assert_eq!(Ganymede.mean_radius(), 2631.2f64); + assert_eq!(Ganymede.subplanetary_radius(), 2631.2f64); + assert_eq!(Ganymede.along_orbit_radius(), 2631.2f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_503() { @@ -5334,14 +5334,14 @@ mod tests { } #[test] fn test_point_mass_504() { - assert_eq!(Callisto::gravitational_parameter(), 7179.283402579837f64); + assert_eq!(Callisto.gravitational_parameter(), 7179.283402579837f64); } #[test] fn test_tri_axial_504() { - assert_eq!(Callisto::polar_radius(), 2410.3f64); - assert_eq!(Callisto::mean_radius(), 2410.3f64); - assert_eq!(Callisto::subplanetary_radius(), 2410.3f64); - assert_eq!(Callisto::along_orbit_radius(), 2410.3f64); + assert_eq!(Callisto.polar_radius(), 2410.3f64); + assert_eq!(Callisto.mean_radius(), 2410.3f64); + assert_eq!(Callisto.subplanetary_radius(), 2410.3f64); + assert_eq!(Callisto.along_orbit_radius(), 2410.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_504() { @@ -5415,14 +5415,14 @@ mod tests { } #[test] fn test_point_mass_505() { - assert_eq!(Amalthea::gravitational_parameter(), 0.1645634534798259f64); + assert_eq!(Amalthea.gravitational_parameter(), 0.1645634534798259f64); } #[test] fn test_tri_axial_505() { - assert_eq!(Amalthea::polar_radius(), 64f64); - assert_eq!(Amalthea::mean_radius(), 87.33333333333333f64); - assert_eq!(Amalthea::subplanetary_radius(), 125f64); - assert_eq!(Amalthea::along_orbit_radius(), 73f64); + assert_eq!(Amalthea.polar_radius(), 64f64); + assert_eq!(Amalthea.mean_radius(), 87.33333333333333f64); + assert_eq!(Amalthea.subplanetary_radius(), 125f64); + assert_eq!(Amalthea.along_orbit_radius(), 73f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_505() { @@ -5502,14 +5502,14 @@ mod tests { } #[test] fn test_point_mass_506() { - assert_eq!(Himalia::gravitational_parameter(), 0.1515524299611265f64); + assert_eq!(Himalia.gravitational_parameter(), 0.1515524299611265f64); } #[test] fn test_tri_axial_506() { - assert_eq!(Himalia::polar_radius(), 85f64); - assert_eq!(Himalia::mean_radius(), 85f64); - assert_eq!(Himalia::subplanetary_radius(), 85f64); - assert_eq!(Himalia::along_orbit_radius(), 85f64); + assert_eq!(Himalia.polar_radius(), 85f64); + assert_eq!(Himalia.mean_radius(), 85f64); + assert_eq!(Himalia.subplanetary_radius(), 85f64); + assert_eq!(Himalia.along_orbit_radius(), 85f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_506() { @@ -5541,10 +5541,10 @@ mod tests { } #[test] fn test_tri_axial_507() { - assert_eq!(Elara::polar_radius(), 40f64); - assert_eq!(Elara::mean_radius(), 40f64); - assert_eq!(Elara::subplanetary_radius(), 40f64); - assert_eq!(Elara::along_orbit_radius(), 40f64); + assert_eq!(Elara.polar_radius(), 40f64); + assert_eq!(Elara.mean_radius(), 40f64); + assert_eq!(Elara.subplanetary_radius(), 40f64); + assert_eq!(Elara.along_orbit_radius(), 40f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_507() { @@ -5576,10 +5576,10 @@ mod tests { } #[test] fn test_tri_axial_508() { - assert_eq!(Pasiphae::polar_radius(), 18f64); - assert_eq!(Pasiphae::mean_radius(), 18f64); - assert_eq!(Pasiphae::subplanetary_radius(), 18f64); - assert_eq!(Pasiphae::along_orbit_radius(), 18f64); + assert_eq!(Pasiphae.polar_radius(), 18f64); + assert_eq!(Pasiphae.mean_radius(), 18f64); + assert_eq!(Pasiphae.subplanetary_radius(), 18f64); + assert_eq!(Pasiphae.along_orbit_radius(), 18f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_508() { @@ -5611,10 +5611,10 @@ mod tests { } #[test] fn test_tri_axial_509() { - assert_eq!(Sinope::polar_radius(), 14f64); - assert_eq!(Sinope::mean_radius(), 14f64); - assert_eq!(Sinope::subplanetary_radius(), 14f64); - assert_eq!(Sinope::along_orbit_radius(), 14f64); + assert_eq!(Sinope.polar_radius(), 14f64); + assert_eq!(Sinope.mean_radius(), 14f64); + assert_eq!(Sinope.subplanetary_radius(), 14f64); + assert_eq!(Sinope.along_orbit_radius(), 14f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_509() { @@ -5646,10 +5646,10 @@ mod tests { } #[test] fn test_tri_axial_510() { - assert_eq!(Lysithea::polar_radius(), 12f64); - assert_eq!(Lysithea::mean_radius(), 12f64); - assert_eq!(Lysithea::subplanetary_radius(), 12f64); - assert_eq!(Lysithea::along_orbit_radius(), 12f64); + assert_eq!(Lysithea.polar_radius(), 12f64); + assert_eq!(Lysithea.mean_radius(), 12f64); + assert_eq!(Lysithea.subplanetary_radius(), 12f64); + assert_eq!(Lysithea.along_orbit_radius(), 12f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_510() { @@ -5681,10 +5681,10 @@ mod tests { } #[test] fn test_tri_axial_511() { - assert_eq!(Carme::polar_radius(), 15f64); - assert_eq!(Carme::mean_radius(), 15f64); - assert_eq!(Carme::subplanetary_radius(), 15f64); - assert_eq!(Carme::along_orbit_radius(), 15f64); + assert_eq!(Carme.polar_radius(), 15f64); + assert_eq!(Carme.mean_radius(), 15f64); + assert_eq!(Carme.subplanetary_radius(), 15f64); + assert_eq!(Carme.along_orbit_radius(), 15f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_511() { @@ -5716,10 +5716,10 @@ mod tests { } #[test] fn test_tri_axial_512() { - assert_eq!(Ananke::polar_radius(), 10f64); - assert_eq!(Ananke::mean_radius(), 10f64); - assert_eq!(Ananke::subplanetary_radius(), 10f64); - assert_eq!(Ananke::along_orbit_radius(), 10f64); + assert_eq!(Ananke.polar_radius(), 10f64); + assert_eq!(Ananke.mean_radius(), 10f64); + assert_eq!(Ananke.subplanetary_radius(), 10f64); + assert_eq!(Ananke.along_orbit_radius(), 10f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_512() { @@ -5751,10 +5751,10 @@ mod tests { } #[test] fn test_tri_axial_513() { - assert_eq!(Leda::polar_radius(), 5f64); - assert_eq!(Leda::mean_radius(), 5f64); - assert_eq!(Leda::subplanetary_radius(), 5f64); - assert_eq!(Leda::along_orbit_radius(), 5f64); + assert_eq!(Leda.polar_radius(), 5f64); + assert_eq!(Leda.mean_radius(), 5f64); + assert_eq!(Leda.subplanetary_radius(), 5f64); + assert_eq!(Leda.along_orbit_radius(), 5f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_513() { @@ -5786,14 +5786,14 @@ mod tests { } #[test] fn test_point_mass_514() { - assert_eq!(Thebe::gravitational_parameter(), 0.030148f64); + assert_eq!(Thebe.gravitational_parameter(), 0.030148f64); } #[test] fn test_tri_axial_514() { - assert_eq!(Thebe::polar_radius(), 42f64); - assert_eq!(Thebe::mean_radius(), 49.666666666666664f64); - assert_eq!(Thebe::subplanetary_radius(), 58f64); - assert_eq!(Thebe::along_orbit_radius(), 49f64); + assert_eq!(Thebe.polar_radius(), 42f64); + assert_eq!(Thebe.mean_radius(), 49.666666666666664f64); + assert_eq!(Thebe.subplanetary_radius(), 58f64); + assert_eq!(Thebe.along_orbit_radius(), 49f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_514() { @@ -5873,14 +5873,14 @@ mod tests { } #[test] fn test_point_mass_515() { - assert_eq!(Adrastea::gravitational_parameter(), 0.000139f64); + assert_eq!(Adrastea.gravitational_parameter(), 0.000139f64); } #[test] fn test_tri_axial_515() { - assert_eq!(Adrastea::polar_radius(), 7f64); - assert_eq!(Adrastea::mean_radius(), 8.333333333333334f64); - assert_eq!(Adrastea::subplanetary_radius(), 10f64); - assert_eq!(Adrastea::along_orbit_radius(), 8f64); + assert_eq!(Adrastea.polar_radius(), 7f64); + assert_eq!(Adrastea.mean_radius(), 8.333333333333334f64); + assert_eq!(Adrastea.subplanetary_radius(), 10f64); + assert_eq!(Adrastea.along_orbit_radius(), 8f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_515() { @@ -5927,14 +5927,14 @@ mod tests { } #[test] fn test_point_mass_516() { - assert_eq!(Metis::gravitational_parameter(), 0.002501f64); + assert_eq!(Metis.gravitational_parameter(), 0.002501f64); } #[test] fn test_tri_axial_516() { - assert_eq!(Metis::polar_radius(), 17f64); - assert_eq!(Metis::mean_radius(), 22.333333333333332f64); - assert_eq!(Metis::subplanetary_radius(), 30f64); - assert_eq!(Metis::along_orbit_radius(), 20f64); + assert_eq!(Metis.polar_radius(), 17f64); + assert_eq!(Metis.mean_radius(), 22.333333333333332f64); + assert_eq!(Metis.subplanetary_radius(), 30f64); + assert_eq!(Metis.along_orbit_radius(), 20f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_516() { @@ -6961,14 +6961,14 @@ mod tests { } #[test] fn test_point_mass_601() { - assert_eq!(Mimas::gravitational_parameter(), 2.503488768152587f64); + assert_eq!(Mimas.gravitational_parameter(), 2.503488768152587f64); } #[test] fn test_tri_axial_601() { - assert_eq!(Mimas::polar_radius(), 190.6f64); - assert_eq!(Mimas::mean_radius(), 198.36666666666667f64); - assert_eq!(Mimas::subplanetary_radius(), 207.8f64); - assert_eq!(Mimas::along_orbit_radius(), 196.7f64); + assert_eq!(Mimas.polar_radius(), 190.6f64); + assert_eq!(Mimas.mean_radius(), 198.36666666666667f64); + assert_eq!(Mimas.subplanetary_radius(), 207.8f64); + assert_eq!(Mimas.along_orbit_radius(), 196.7f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_601() { @@ -7042,14 +7042,14 @@ mod tests { } #[test] fn test_point_mass_602() { - assert_eq!(Enceladus::gravitational_parameter(), 7.210366688598896f64); + assert_eq!(Enceladus.gravitational_parameter(), 7.210366688598896f64); } #[test] fn test_tri_axial_602() { - assert_eq!(Enceladus::polar_radius(), 248.3f64); - assert_eq!(Enceladus::mean_radius(), 252.1f64); - assert_eq!(Enceladus::subplanetary_radius(), 256.6f64); - assert_eq!(Enceladus::along_orbit_radius(), 251.4f64); + assert_eq!(Enceladus.polar_radius(), 248.3f64); + assert_eq!(Enceladus.mean_radius(), 252.1f64); + assert_eq!(Enceladus.subplanetary_radius(), 256.6f64); + assert_eq!(Enceladus.along_orbit_radius(), 251.4f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_602() { @@ -7096,14 +7096,14 @@ mod tests { } #[test] fn test_point_mass_603() { - assert_eq!(Tethys::gravitational_parameter(), 41.21352885489587f64); + assert_eq!(Tethys.gravitational_parameter(), 41.21352885489587f64); } #[test] fn test_tri_axial_603() { - assert_eq!(Tethys::polar_radius(), 526.3f64); - assert_eq!(Tethys::mean_radius(), 530.9999999999999f64); - assert_eq!(Tethys::subplanetary_radius(), 538.4f64); - assert_eq!(Tethys::along_orbit_radius(), 528.3f64); + assert_eq!(Tethys.polar_radius(), 526.3f64); + assert_eq!(Tethys.mean_radius(), 530.9999999999999f64); + assert_eq!(Tethys.subplanetary_radius(), 538.4f64); + assert_eq!(Tethys.along_orbit_radius(), 528.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_603() { @@ -7177,14 +7177,14 @@ mod tests { } #[test] fn test_point_mass_604() { - assert_eq!(Dione::gravitational_parameter(), 73.11607172482067f64); + assert_eq!(Dione.gravitational_parameter(), 73.11607172482067f64); } #[test] fn test_tri_axial_604() { - assert_eq!(Dione::polar_radius(), 559.6f64); - assert_eq!(Dione::mean_radius(), 561.4333333333333f64); - assert_eq!(Dione::subplanetary_radius(), 563.4f64); - assert_eq!(Dione::along_orbit_radius(), 561.3f64); + assert_eq!(Dione.polar_radius(), 559.6f64); + assert_eq!(Dione.mean_radius(), 561.4333333333333f64); + assert_eq!(Dione.subplanetary_radius(), 563.4f64); + assert_eq!(Dione.along_orbit_radius(), 561.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_604() { @@ -7231,14 +7231,14 @@ mod tests { } #[test] fn test_point_mass_605() { - assert_eq!(Rhea::gravitational_parameter(), 153.9417519146563f64); + assert_eq!(Rhea.gravitational_parameter(), 153.9417519146563f64); } #[test] fn test_tri_axial_605() { - assert_eq!(Rhea::polar_radius(), 762.4f64); - assert_eq!(Rhea::mean_radius(), 763.5f64); - assert_eq!(Rhea::subplanetary_radius(), 765f64); - assert_eq!(Rhea::along_orbit_radius(), 763.1f64); + assert_eq!(Rhea.polar_radius(), 762.4f64); + assert_eq!(Rhea.mean_radius(), 763.5f64); + assert_eq!(Rhea.subplanetary_radius(), 765f64); + assert_eq!(Rhea.along_orbit_radius(), 763.1f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_605() { @@ -7312,14 +7312,14 @@ mod tests { } #[test] fn test_point_mass_606() { - assert_eq!(Titan::gravitational_parameter(), 8978.137095521046f64); + assert_eq!(Titan.gravitational_parameter(), 8978.137095521046f64); } #[test] fn test_tri_axial_606() { - assert_eq!(Titan::polar_radius(), 2574.47f64); - assert_eq!(Titan::mean_radius(), 2574.7999999999997f64); - assert_eq!(Titan::subplanetary_radius(), 2575.15f64); - assert_eq!(Titan::along_orbit_radius(), 2574.78f64); + assert_eq!(Titan.polar_radius(), 2574.47f64); + assert_eq!(Titan.mean_radius(), 2574.7999999999997f64); + assert_eq!(Titan.subplanetary_radius(), 2575.15f64); + assert_eq!(Titan.along_orbit_radius(), 2574.78f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_606() { @@ -7366,14 +7366,14 @@ mod tests { } #[test] fn test_point_mass_607() { - assert_eq!(Hyperion::gravitational_parameter(), 0.3704913747932265f64); + assert_eq!(Hyperion.gravitational_parameter(), 0.3704913747932265f64); } #[test] fn test_tri_axial_607() { - assert_eq!(Hyperion::polar_radius(), 102.7f64); - assert_eq!(Hyperion::mean_radius(), 138.6f64); - assert_eq!(Hyperion::subplanetary_radius(), 180.1f64); - assert_eq!(Hyperion::along_orbit_radius(), 133f64); + assert_eq!(Hyperion.polar_radius(), 102.7f64); + assert_eq!(Hyperion.mean_radius(), 138.6f64); + assert_eq!(Hyperion.subplanetary_radius(), 180.1f64); + assert_eq!(Hyperion.along_orbit_radius(), 133f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_607() { @@ -7405,14 +7405,14 @@ mod tests { } #[test] fn test_point_mass_608() { - assert_eq!(Iapetus::gravitational_parameter(), 120.5151060137642f64); + assert_eq!(Iapetus.gravitational_parameter(), 120.5151060137642f64); } #[test] fn test_tri_axial_608() { - assert_eq!(Iapetus::polar_radius(), 712.1f64); - assert_eq!(Iapetus::mean_radius(), 734.5f64); - assert_eq!(Iapetus::subplanetary_radius(), 745.7f64); - assert_eq!(Iapetus::along_orbit_radius(), 745.7f64); + assert_eq!(Iapetus.polar_radius(), 712.1f64); + assert_eq!(Iapetus.mean_radius(), 734.5f64); + assert_eq!(Iapetus.subplanetary_radius(), 745.7f64); + assert_eq!(Iapetus.along_orbit_radius(), 745.7f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_608() { @@ -7459,14 +7459,14 @@ mod tests { } #[test] fn test_point_mass_609() { - assert_eq!(Phoebe::gravitational_parameter(), 0.5547860052791678f64); + assert_eq!(Phoebe.gravitational_parameter(), 0.5547860052791678f64); } #[test] fn test_tri_axial_609() { - assert_eq!(Phoebe::polar_radius(), 101.8f64); - assert_eq!(Phoebe::mean_radius(), 106.56666666666666f64); - assert_eq!(Phoebe::subplanetary_radius(), 109.4f64); - assert_eq!(Phoebe::along_orbit_radius(), 108.5f64); + assert_eq!(Phoebe.polar_radius(), 101.8f64); + assert_eq!(Phoebe.mean_radius(), 106.56666666666666f64); + assert_eq!(Phoebe.subplanetary_radius(), 109.4f64); + assert_eq!(Phoebe.along_orbit_radius(), 108.5f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_609() { @@ -7503,14 +7503,14 @@ mod tests { } #[test] fn test_point_mass_610() { - assert_eq!(Janus::gravitational_parameter(), 0.1265765099012197f64); + assert_eq!(Janus.gravitational_parameter(), 0.1265765099012197f64); } #[test] fn test_tri_axial_610() { - assert_eq!(Janus::polar_radius(), 76.3f64); - assert_eq!(Janus::mean_radius(), 90.33333333333333f64); - assert_eq!(Janus::subplanetary_radius(), 101.7f64); - assert_eq!(Janus::along_orbit_radius(), 93f64); + assert_eq!(Janus.polar_radius(), 76.3f64); + assert_eq!(Janus.mean_radius(), 90.33333333333333f64); + assert_eq!(Janus.subplanetary_radius(), 101.7f64); + assert_eq!(Janus.along_orbit_radius(), 93f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_610() { @@ -7584,17 +7584,14 @@ mod tests { } #[test] fn test_point_mass_611() { - assert_eq!( - Epimetheus::gravitational_parameter(), - 0.03512333288208074f64 - ); + assert_eq!(Epimetheus.gravitational_parameter(), 0.03512333288208074f64); } #[test] fn test_tri_axial_611() { - assert_eq!(Epimetheus::polar_radius(), 53f64); - assert_eq!(Epimetheus::mean_radius(), 58.4f64); - assert_eq!(Epimetheus::subplanetary_radius(), 64.9f64); - assert_eq!(Epimetheus::along_orbit_radius(), 57.3f64); + assert_eq!(Epimetheus.polar_radius(), 53f64); + assert_eq!(Epimetheus.mean_radius(), 58.4f64); + assert_eq!(Epimetheus.subplanetary_radius(), 64.9f64); + assert_eq!(Epimetheus.along_orbit_radius(), 57.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_611() { @@ -7668,14 +7665,14 @@ mod tests { } #[test] fn test_point_mass_612() { - assert_eq!(Helene::gravitational_parameter(), 0.0004757419551776972f64); + assert_eq!(Helene.gravitational_parameter(), 0.0004757419551776972f64); } #[test] fn test_tri_axial_612() { - assert_eq!(Helene::polar_radius(), 13.3f64); - assert_eq!(Helene::mean_radius(), 18.46666666666667f64); - assert_eq!(Helene::subplanetary_radius(), 22.5f64); - assert_eq!(Helene::along_orbit_radius(), 19.6f64); + assert_eq!(Helene.polar_radius(), 13.3f64); + assert_eq!(Helene.mean_radius(), 18.46666666666667f64); + assert_eq!(Helene.subplanetary_radius(), 22.5f64); + assert_eq!(Helene.along_orbit_radius(), 19.6f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_612() { @@ -7722,10 +7719,10 @@ mod tests { } #[test] fn test_tri_axial_613() { - assert_eq!(Telesto::polar_radius(), 9.8f64); - assert_eq!(Telesto::mean_radius(), 12.633333333333335f64); - assert_eq!(Telesto::subplanetary_radius(), 16.3f64); - assert_eq!(Telesto::along_orbit_radius(), 11.8f64); + assert_eq!(Telesto.polar_radius(), 9.8f64); + assert_eq!(Telesto.mean_radius(), 12.633333333333335f64); + assert_eq!(Telesto.subplanetary_radius(), 16.3f64); + assert_eq!(Telesto.along_orbit_radius(), 11.8f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_613() { @@ -7772,10 +7769,10 @@ mod tests { } #[test] fn test_tri_axial_614() { - assert_eq!(Calypso::polar_radius(), 6.3f64); - assert_eq!(Calypso::mean_radius(), 10.3f64); - assert_eq!(Calypso::subplanetary_radius(), 15.3f64); - assert_eq!(Calypso::along_orbit_radius(), 9.3f64); + assert_eq!(Calypso.polar_radius(), 6.3f64); + assert_eq!(Calypso.mean_radius(), 10.3f64); + assert_eq!(Calypso.subplanetary_radius(), 15.3f64); + assert_eq!(Calypso.along_orbit_radius(), 9.3f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_614() { @@ -7822,14 +7819,14 @@ mod tests { } #[test] fn test_point_mass_615() { - assert_eq!(Atlas::gravitational_parameter(), 0.0003718871247516475f64); + assert_eq!(Atlas.gravitational_parameter(), 0.0003718871247516475f64); } #[test] fn test_tri_axial_615() { - assert_eq!(Atlas::polar_radius(), 9.4f64); - assert_eq!(Atlas::mean_radius(), 15.899999999999999f64); - assert_eq!(Atlas::subplanetary_radius(), 20.5f64); - assert_eq!(Atlas::along_orbit_radius(), 17.8f64); + assert_eq!(Atlas.polar_radius(), 9.4f64); + assert_eq!(Atlas.mean_radius(), 15.899999999999999f64); + assert_eq!(Atlas.subplanetary_radius(), 20.5f64); + assert_eq!(Atlas.along_orbit_radius(), 17.8f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_615() { @@ -7876,14 +7873,14 @@ mod tests { } #[test] fn test_point_mass_616() { - assert_eq!(Prometheus::gravitational_parameter(), 0.0107520800100761f64); + assert_eq!(Prometheus.gravitational_parameter(), 0.0107520800100761f64); } #[test] fn test_tri_axial_616() { - assert_eq!(Prometheus::polar_radius(), 28.2f64); - assert_eq!(Prometheus::mean_radius(), 46f64); - assert_eq!(Prometheus::subplanetary_radius(), 68.2f64); - assert_eq!(Prometheus::along_orbit_radius(), 41.6f64); + assert_eq!(Prometheus.polar_radius(), 28.2f64); + assert_eq!(Prometheus.mean_radius(), 46f64); + assert_eq!(Prometheus.subplanetary_radius(), 68.2f64); + assert_eq!(Prometheus.along_orbit_radius(), 41.6f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_616() { @@ -7930,14 +7927,14 @@ mod tests { } #[test] fn test_point_mass_617() { - assert_eq!(Pandora::gravitational_parameter(), 0.009290325122028795f64); + assert_eq!(Pandora.gravitational_parameter(), 0.009290325122028795f64); } #[test] fn test_tri_axial_617() { - assert_eq!(Pandora::polar_radius(), 31.5f64); - assert_eq!(Pandora::mean_radius(), 41.5f64); - assert_eq!(Pandora::subplanetary_radius(), 52.2f64); - assert_eq!(Pandora::along_orbit_radius(), 40.8f64); + assert_eq!(Pandora.polar_radius(), 31.5f64); + assert_eq!(Pandora.mean_radius(), 41.5f64); + assert_eq!(Pandora.subplanetary_radius(), 52.2f64); + assert_eq!(Pandora.along_orbit_radius(), 40.8f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_617() { @@ -7984,10 +7981,10 @@ mod tests { } #[test] fn test_tri_axial_618() { - assert_eq!(Pan::polar_radius(), 10.4f64); - assert_eq!(Pan::mean_radius(), 14.333333333333334f64); - assert_eq!(Pan::subplanetary_radius(), 17.2f64); - assert_eq!(Pan::along_orbit_radius(), 15.4f64); + assert_eq!(Pan.polar_radius(), 10.4f64); + assert_eq!(Pan.mean_radius(), 14.333333333333334f64); + assert_eq!(Pan.subplanetary_radius(), 17.2f64); + assert_eq!(Pan.along_orbit_radius(), 15.4f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_618() { @@ -8398,10 +8395,10 @@ mod tests { } #[test] fn test_tri_axial_632() { - assert_eq!(Methone::polar_radius(), 1.21f64); - assert_eq!(Methone::mean_radius(), 1.4799999999999998f64); - assert_eq!(Methone::subplanetary_radius(), 1.94f64); - assert_eq!(Methone::along_orbit_radius(), 1.29f64); + assert_eq!(Methone.polar_radius(), 1.21f64); + assert_eq!(Methone.mean_radius(), 1.4799999999999998f64); + assert_eq!(Methone.subplanetary_radius(), 1.94f64); + assert_eq!(Methone.along_orbit_radius(), 1.29f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_632() { @@ -8433,10 +8430,10 @@ mod tests { } #[test] fn test_tri_axial_633() { - assert_eq!(Pallene::polar_radius(), 1.8f64); - assert_eq!(Pallene::mean_radius(), 2.2533333333333334f64); - assert_eq!(Pallene::subplanetary_radius(), 2.88f64); - assert_eq!(Pallene::along_orbit_radius(), 2.08f64); + assert_eq!(Pallene.polar_radius(), 1.8f64); + assert_eq!(Pallene.mean_radius(), 2.2533333333333334f64); + assert_eq!(Pallene.subplanetary_radius(), 2.88f64); + assert_eq!(Pallene.along_orbit_radius(), 2.08f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_633() { @@ -8468,10 +8465,10 @@ mod tests { } #[test] fn test_tri_axial_634() { - assert_eq!(Polydeuces::polar_radius(), 1f64); - assert_eq!(Polydeuces::mean_radius(), 1.2333333333333334f64); - assert_eq!(Polydeuces::subplanetary_radius(), 1.5f64); - assert_eq!(Polydeuces::along_orbit_radius(), 1.2f64); + assert_eq!(Polydeuces.polar_radius(), 1f64); + assert_eq!(Polydeuces.mean_radius(), 1.2333333333333334f64); + assert_eq!(Polydeuces.subplanetary_radius(), 1.5f64); + assert_eq!(Polydeuces.along_orbit_radius(), 1.2f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_634() { @@ -8503,10 +8500,10 @@ mod tests { } #[test] fn test_tri_axial_635() { - assert_eq!(Daphnis::polar_radius(), 2.8f64); - assert_eq!(Daphnis::mean_radius(), 3.9666666666666663f64); - assert_eq!(Daphnis::subplanetary_radius(), 4.6f64); - assert_eq!(Daphnis::along_orbit_radius(), 4.5f64); + assert_eq!(Daphnis.polar_radius(), 2.8f64); + assert_eq!(Daphnis.mean_radius(), 3.9666666666666663f64); + assert_eq!(Daphnis.subplanetary_radius(), 4.6f64); + assert_eq!(Daphnis.along_orbit_radius(), 4.5f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_635() { @@ -8902,10 +8899,10 @@ mod tests { } #[test] fn test_tri_axial_649() { - assert_eq!(Anthe::polar_radius(), 0.5f64); - assert_eq!(Anthe::mean_radius(), 0.5f64); - assert_eq!(Anthe::subplanetary_radius(), 0.5f64); - assert_eq!(Anthe::along_orbit_radius(), 0.5f64); + assert_eq!(Anthe.polar_radius(), 0.5f64); + assert_eq!(Anthe.mean_radius(), 0.5f64); + assert_eq!(Anthe.subplanetary_radius(), 0.5f64); + assert_eq!(Anthe.along_orbit_radius(), 0.5f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_649() { @@ -9021,10 +9018,10 @@ mod tests { } #[test] fn test_tri_axial_653() { - assert_eq!(Aegaeon::polar_radius(), 0.2f64); - assert_eq!(Aegaeon::mean_radius(), 0.3833333333333333f64); - assert_eq!(Aegaeon::subplanetary_radius(), 0.7f64); - assert_eq!(Aegaeon::along_orbit_radius(), 0.25f64); + assert_eq!(Aegaeon.polar_radius(), 0.2f64); + assert_eq!(Aegaeon.mean_radius(), 0.3833333333333333f64); + assert_eq!(Aegaeon.subplanetary_radius(), 0.7f64); + assert_eq!(Aegaeon.along_orbit_radius(), 0.25f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_653() { @@ -9056,14 +9053,14 @@ mod tests { } #[test] fn test_point_mass_701() { - assert_eq!(Ariel::gravitational_parameter(), 83.46344431770477f64); + assert_eq!(Ariel.gravitational_parameter(), 83.46344431770477f64); } #[test] fn test_tri_axial_701() { - assert_eq!(Ariel::polar_radius(), 577.7f64); - assert_eq!(Ariel::mean_radius(), 578.9f64); - assert_eq!(Ariel::subplanetary_radius(), 581.1f64); - assert_eq!(Ariel::along_orbit_radius(), 577.9f64); + assert_eq!(Ariel.polar_radius(), 577.7f64); + assert_eq!(Ariel.mean_radius(), 578.9f64); + assert_eq!(Ariel.subplanetary_radius(), 581.1f64); + assert_eq!(Ariel.along_orbit_radius(), 577.9f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_701() { @@ -9152,14 +9149,14 @@ mod tests { } #[test] fn test_point_mass_702() { - assert_eq!(Umbriel::gravitational_parameter(), 85.09338094489388f64); + assert_eq!(Umbriel.gravitational_parameter(), 85.09338094489388f64); } #[test] fn test_tri_axial_702() { - assert_eq!(Umbriel::polar_radius(), 584.7f64); - assert_eq!(Umbriel::mean_radius(), 584.7f64); - assert_eq!(Umbriel::subplanetary_radius(), 584.7f64); - assert_eq!(Umbriel::along_orbit_radius(), 584.7f64); + assert_eq!(Umbriel.polar_radius(), 584.7f64); + assert_eq!(Umbriel.mean_radius(), 584.7f64); + assert_eq!(Umbriel.subplanetary_radius(), 584.7f64); + assert_eq!(Umbriel.along_orbit_radius(), 584.7f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_702() { @@ -9251,14 +9248,14 @@ mod tests { } #[test] fn test_point_mass_703() { - assert_eq!(Titania::gravitational_parameter(), 226.9437003741248f64); + assert_eq!(Titania.gravitational_parameter(), 226.9437003741248f64); } #[test] fn test_tri_axial_703() { - assert_eq!(Titania::polar_radius(), 788.9f64); - assert_eq!(Titania::mean_radius(), 788.9f64); - assert_eq!(Titania::subplanetary_radius(), 788.9f64); - assert_eq!(Titania::along_orbit_radius(), 788.9f64); + assert_eq!(Titania.polar_radius(), 788.9f64); + assert_eq!(Titania.mean_radius(), 788.9f64); + assert_eq!(Titania.subplanetary_radius(), 788.9f64); + assert_eq!(Titania.along_orbit_radius(), 788.9f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_703() { @@ -9353,14 +9350,14 @@ mod tests { } #[test] fn test_point_mass_704() { - assert_eq!(Oberon::gravitational_parameter(), 205.3234302535623f64); + assert_eq!(Oberon.gravitational_parameter(), 205.3234302535623f64); } #[test] fn test_tri_axial_704() { - assert_eq!(Oberon::polar_radius(), 761.4f64); - assert_eq!(Oberon::mean_radius(), 761.4f64); - assert_eq!(Oberon::subplanetary_radius(), 761.4f64); - assert_eq!(Oberon::along_orbit_radius(), 761.4f64); + assert_eq!(Oberon.polar_radius(), 761.4f64); + assert_eq!(Oberon.mean_radius(), 761.4f64); + assert_eq!(Oberon.subplanetary_radius(), 761.4f64); + assert_eq!(Oberon.along_orbit_radius(), 761.4f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_704() { @@ -9458,14 +9455,14 @@ mod tests { } #[test] fn test_point_mass_705() { - assert_eq!(Miranda::gravitational_parameter(), 4.3195168992321f64); + assert_eq!(Miranda.gravitational_parameter(), 4.3195168992321f64); } #[test] fn test_tri_axial_705() { - assert_eq!(Miranda::polar_radius(), 232.9f64); - assert_eq!(Miranda::mean_radius(), 235.83333333333334f64); - assert_eq!(Miranda::subplanetary_radius(), 240.4f64); - assert_eq!(Miranda::along_orbit_radius(), 234.2f64); + assert_eq!(Miranda.polar_radius(), 232.9f64); + assert_eq!(Miranda.mean_radius(), 235.83333333333334f64); + assert_eq!(Miranda.subplanetary_radius(), 240.4f64); + assert_eq!(Miranda.along_orbit_radius(), 234.2f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_705() { @@ -9569,10 +9566,10 @@ mod tests { } #[test] fn test_tri_axial_706() { - assert_eq!(Cordelia::polar_radius(), 13f64); - assert_eq!(Cordelia::mean_radius(), 13f64); - assert_eq!(Cordelia::subplanetary_radius(), 13f64); - assert_eq!(Cordelia::along_orbit_radius(), 13f64); + assert_eq!(Cordelia.polar_radius(), 13f64); + assert_eq!(Cordelia.mean_radius(), 13f64); + assert_eq!(Cordelia.subplanetary_radius(), 13f64); + assert_eq!(Cordelia.along_orbit_radius(), 13f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_706() { @@ -9676,10 +9673,10 @@ mod tests { } #[test] fn test_tri_axial_707() { - assert_eq!(Ophelia::polar_radius(), 15f64); - assert_eq!(Ophelia::mean_radius(), 15f64); - assert_eq!(Ophelia::subplanetary_radius(), 15f64); - assert_eq!(Ophelia::along_orbit_radius(), 15f64); + assert_eq!(Ophelia.polar_radius(), 15f64); + assert_eq!(Ophelia.mean_radius(), 15f64); + assert_eq!(Ophelia.subplanetary_radius(), 15f64); + assert_eq!(Ophelia.along_orbit_radius(), 15f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_707() { @@ -9783,10 +9780,10 @@ mod tests { } #[test] fn test_tri_axial_708() { - assert_eq!(Bianca::polar_radius(), 21f64); - assert_eq!(Bianca::mean_radius(), 21f64); - assert_eq!(Bianca::subplanetary_radius(), 21f64); - assert_eq!(Bianca::along_orbit_radius(), 21f64); + assert_eq!(Bianca.polar_radius(), 21f64); + assert_eq!(Bianca.mean_radius(), 21f64); + assert_eq!(Bianca.subplanetary_radius(), 21f64); + assert_eq!(Bianca.along_orbit_radius(), 21f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_708() { @@ -9890,10 +9887,10 @@ mod tests { } #[test] fn test_tri_axial_709() { - assert_eq!(Cressida::polar_radius(), 31f64); - assert_eq!(Cressida::mean_radius(), 31f64); - assert_eq!(Cressida::subplanetary_radius(), 31f64); - assert_eq!(Cressida::along_orbit_radius(), 31f64); + assert_eq!(Cressida.polar_radius(), 31f64); + assert_eq!(Cressida.mean_radius(), 31f64); + assert_eq!(Cressida.subplanetary_radius(), 31f64); + assert_eq!(Cressida.along_orbit_radius(), 31f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_709() { @@ -9997,10 +9994,10 @@ mod tests { } #[test] fn test_tri_axial_710() { - assert_eq!(Desdemona::polar_radius(), 27f64); - assert_eq!(Desdemona::mean_radius(), 27f64); - assert_eq!(Desdemona::subplanetary_radius(), 27f64); - assert_eq!(Desdemona::along_orbit_radius(), 27f64); + assert_eq!(Desdemona.polar_radius(), 27f64); + assert_eq!(Desdemona.mean_radius(), 27f64); + assert_eq!(Desdemona.subplanetary_radius(), 27f64); + assert_eq!(Desdemona.along_orbit_radius(), 27f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_710() { @@ -10104,10 +10101,10 @@ mod tests { } #[test] fn test_tri_axial_711() { - assert_eq!(Juliet::polar_radius(), 42f64); - assert_eq!(Juliet::mean_radius(), 42f64); - assert_eq!(Juliet::subplanetary_radius(), 42f64); - assert_eq!(Juliet::along_orbit_radius(), 42f64); + assert_eq!(Juliet.polar_radius(), 42f64); + assert_eq!(Juliet.mean_radius(), 42f64); + assert_eq!(Juliet.subplanetary_radius(), 42f64); + assert_eq!(Juliet.along_orbit_radius(), 42f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_711() { @@ -10211,10 +10208,10 @@ mod tests { } #[test] fn test_tri_axial_712() { - assert_eq!(Portia::polar_radius(), 54f64); - assert_eq!(Portia::mean_radius(), 54f64); - assert_eq!(Portia::subplanetary_radius(), 54f64); - assert_eq!(Portia::along_orbit_radius(), 54f64); + assert_eq!(Portia.polar_radius(), 54f64); + assert_eq!(Portia.mean_radius(), 54f64); + assert_eq!(Portia.subplanetary_radius(), 54f64); + assert_eq!(Portia.along_orbit_radius(), 54f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_712() { @@ -10318,10 +10315,10 @@ mod tests { } #[test] fn test_tri_axial_713() { - assert_eq!(Rosalind::polar_radius(), 27f64); - assert_eq!(Rosalind::mean_radius(), 27f64); - assert_eq!(Rosalind::subplanetary_radius(), 27f64); - assert_eq!(Rosalind::along_orbit_radius(), 27f64); + assert_eq!(Rosalind.polar_radius(), 27f64); + assert_eq!(Rosalind.mean_radius(), 27f64); + assert_eq!(Rosalind.subplanetary_radius(), 27f64); + assert_eq!(Rosalind.along_orbit_radius(), 27f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_713() { @@ -10425,10 +10422,10 @@ mod tests { } #[test] fn test_tri_axial_714() { - assert_eq!(Belinda::polar_radius(), 33f64); - assert_eq!(Belinda::mean_radius(), 33f64); - assert_eq!(Belinda::subplanetary_radius(), 33f64); - assert_eq!(Belinda::along_orbit_radius(), 33f64); + assert_eq!(Belinda.polar_radius(), 33f64); + assert_eq!(Belinda.mean_radius(), 33f64); + assert_eq!(Belinda.subplanetary_radius(), 33f64); + assert_eq!(Belinda.along_orbit_radius(), 33f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_714() { @@ -10532,10 +10529,10 @@ mod tests { } #[test] fn test_tri_axial_715() { - assert_eq!(Puck::polar_radius(), 77f64); - assert_eq!(Puck::mean_radius(), 77f64); - assert_eq!(Puck::subplanetary_radius(), 77f64); - assert_eq!(Puck::along_orbit_radius(), 77f64); + assert_eq!(Puck.polar_radius(), 77f64); + assert_eq!(Puck.mean_radius(), 77f64); + assert_eq!(Puck.subplanetary_radius(), 77f64); + assert_eq!(Puck.along_orbit_radius(), 77f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_715() { @@ -10975,14 +10972,14 @@ mod tests { } #[test] fn test_point_mass_801() { - assert_eq!(Triton::gravitational_parameter(), 1428.495462910464f64); + assert_eq!(Triton.gravitational_parameter(), 1428.495462910464f64); } #[test] fn test_tri_axial_801() { - assert_eq!(Triton::polar_radius(), 1352.6f64); - assert_eq!(Triton::mean_radius(), 1352.6f64); - assert_eq!(Triton::subplanetary_radius(), 1352.6f64); - assert_eq!(Triton::along_orbit_radius(), 1352.6f64); + assert_eq!(Triton.polar_radius(), 1352.6f64); + assert_eq!(Triton.mean_radius(), 1352.6f64); + assert_eq!(Triton.subplanetary_radius(), 1352.6f64); + assert_eq!(Triton.along_orbit_radius(), 1352.6f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_801() { @@ -11083,10 +11080,10 @@ mod tests { } #[test] fn test_tri_axial_802() { - assert_eq!(Nereid::polar_radius(), 170f64); - assert_eq!(Nereid::mean_radius(), 170f64); - assert_eq!(Nereid::subplanetary_radius(), 170f64); - assert_eq!(Nereid::along_orbit_radius(), 170f64); + assert_eq!(Nereid.polar_radius(), 170f64); + assert_eq!(Nereid.mean_radius(), 170f64); + assert_eq!(Nereid.subplanetary_radius(), 170f64); + assert_eq!(Nereid.along_orbit_radius(), 170f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_802() { @@ -11118,14 +11115,14 @@ mod tests { } #[test] fn test_point_mass_803() { - assert_eq!(Naiad::gravitational_parameter(), 0.008530281246540886f64); + assert_eq!(Naiad.gravitational_parameter(), 0.008530281246540886f64); } #[test] fn test_tri_axial_803() { - assert_eq!(Naiad::polar_radius(), 29f64); - assert_eq!(Naiad::mean_radius(), 29f64); - assert_eq!(Naiad::subplanetary_radius(), 29f64); - assert_eq!(Naiad::along_orbit_radius(), 29f64); + assert_eq!(Naiad.polar_radius(), 29f64); + assert_eq!(Naiad.mean_radius(), 29f64); + assert_eq!(Naiad.subplanetary_radius(), 29f64); + assert_eq!(Naiad.along_orbit_radius(), 29f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_803() { @@ -11226,14 +11223,14 @@ mod tests { } #[test] fn test_point_mass_804() { - assert_eq!(Thalassa::gravitational_parameter(), 0.0235887319799217f64); + assert_eq!(Thalassa.gravitational_parameter(), 0.0235887319799217f64); } #[test] fn test_tri_axial_804() { - assert_eq!(Thalassa::polar_radius(), 40f64); - assert_eq!(Thalassa::mean_radius(), 40f64); - assert_eq!(Thalassa::subplanetary_radius(), 40f64); - assert_eq!(Thalassa::along_orbit_radius(), 40f64); + assert_eq!(Thalassa.polar_radius(), 40f64); + assert_eq!(Thalassa.mean_radius(), 40f64); + assert_eq!(Thalassa.subplanetary_radius(), 40f64); + assert_eq!(Thalassa.along_orbit_radius(), 40f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_804() { @@ -11334,14 +11331,14 @@ mod tests { } #[test] fn test_point_mass_805() { - assert_eq!(Despina::gravitational_parameter(), 0.1167318403814998f64); + assert_eq!(Despina.gravitational_parameter(), 0.1167318403814998f64); } #[test] fn test_tri_axial_805() { - assert_eq!(Despina::polar_radius(), 74f64); - assert_eq!(Despina::mean_radius(), 74f64); - assert_eq!(Despina::subplanetary_radius(), 74f64); - assert_eq!(Despina::along_orbit_radius(), 74f64); + assert_eq!(Despina.polar_radius(), 74f64); + assert_eq!(Despina.mean_radius(), 74f64); + assert_eq!(Despina.subplanetary_radius(), 74f64); + assert_eq!(Despina.along_orbit_radius(), 74f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_805() { @@ -11442,14 +11439,14 @@ mod tests { } #[test] fn test_point_mass_806() { - assert_eq!(Galatea::gravitational_parameter(), 0.189898503906069f64); + assert_eq!(Galatea.gravitational_parameter(), 0.189898503906069f64); } #[test] fn test_tri_axial_806() { - assert_eq!(Galatea::polar_radius(), 79f64); - assert_eq!(Galatea::mean_radius(), 79f64); - assert_eq!(Galatea::subplanetary_radius(), 79f64); - assert_eq!(Galatea::along_orbit_radius(), 79f64); + assert_eq!(Galatea.polar_radius(), 79f64); + assert_eq!(Galatea.mean_radius(), 79f64); + assert_eq!(Galatea.subplanetary_radius(), 79f64); + assert_eq!(Galatea.along_orbit_radius(), 79f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_806() { @@ -11550,14 +11547,14 @@ mod tests { } #[test] fn test_point_mass_807() { - assert_eq!(Larissa::gravitational_parameter(), 0.2548437405693583f64); + assert_eq!(Larissa.gravitational_parameter(), 0.2548437405693583f64); } #[test] fn test_tri_axial_807() { - assert_eq!(Larissa::polar_radius(), 96f64); - assert_eq!(Larissa::mean_radius(), 96f64); - assert_eq!(Larissa::subplanetary_radius(), 96f64); - assert_eq!(Larissa::along_orbit_radius(), 96f64); + assert_eq!(Larissa.polar_radius(), 96f64); + assert_eq!(Larissa.mean_radius(), 96f64); + assert_eq!(Larissa.subplanetary_radius(), 96f64); + assert_eq!(Larissa.along_orbit_radius(), 96f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_807() { @@ -11658,14 +11655,14 @@ mod tests { } #[test] fn test_point_mass_808() { - assert_eq!(Proteus::gravitational_parameter(), 2.583422379120727f64); + assert_eq!(Proteus.gravitational_parameter(), 2.583422379120727f64); } #[test] fn test_tri_axial_808() { - assert_eq!(Proteus::polar_radius(), 201f64); - assert_eq!(Proteus::mean_radius(), 209f64); - assert_eq!(Proteus::subplanetary_radius(), 218f64); - assert_eq!(Proteus::along_orbit_radius(), 208f64); + assert_eq!(Proteus.polar_radius(), 201f64); + assert_eq!(Proteus.mean_radius(), 209f64); + assert_eq!(Proteus.subplanetary_radius(), 218f64); + assert_eq!(Proteus.along_orbit_radius(), 208f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_808() { @@ -11906,14 +11903,14 @@ mod tests { } #[test] fn test_point_mass_901() { - assert_eq!(Charon::gravitational_parameter(), 105.8799888601881f64); + assert_eq!(Charon.gravitational_parameter(), 105.8799888601881f64); } #[test] fn test_tri_axial_901() { - assert_eq!(Charon::polar_radius(), 606f64); - assert_eq!(Charon::mean_radius(), 606f64); - assert_eq!(Charon::subplanetary_radius(), 606f64); - assert_eq!(Charon::along_orbit_radius(), 606f64); + assert_eq!(Charon.polar_radius(), 606f64); + assert_eq!(Charon.mean_radius(), 606f64); + assert_eq!(Charon.subplanetary_radius(), 606f64); + assert_eq!(Charon.along_orbit_radius(), 606f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_901() { @@ -11950,7 +11947,7 @@ mod tests { } #[test] fn test_point_mass_902() { - assert_eq!(Nix::gravitational_parameter(), 0.00304817564816976f64); + assert_eq!(Nix.gravitational_parameter(), 0.00304817564816976f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_902() { @@ -11982,7 +11979,7 @@ mod tests { } #[test] fn test_point_mass_903() { - assert_eq!(Hydra::gravitational_parameter(), 0.003211039206155255f64); + assert_eq!(Hydra.gravitational_parameter(), 0.003211039206155255f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_903() { @@ -12014,7 +12011,7 @@ mod tests { } #[test] fn test_point_mass_904() { - assert_eq!(Kerberos::gravitational_parameter(), 0.001110040850536676f64); + assert_eq!(Kerberos.gravitational_parameter(), 0.001110040850536676f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_904() { @@ -12046,7 +12043,7 @@ mod tests { } #[test] fn test_point_mass_905() { - assert_eq!(Styx::gravitational_parameter(), 0f64); + assert_eq!(Styx.gravitational_parameter(), 0f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_905() { diff --git a/crates/lox_core/src/bodies/generated/sun.rs b/crates/lox_core/src/bodies/generated/sun.rs index 1f8802d8..de8989e4 100644 --- a/crates/lox_core/src/bodies/generated/sun.rs +++ b/crates/lox_core/src/bodies/generated/sun.rs @@ -13,20 +13,20 @@ use crate::bodies::{ RotationalElements, Spheroid, Sun, }; impl PointMass for Sun { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { 132712440041.27942f64 } } impl Ellipsoid for Sun { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { 695700f64 } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { 695700f64 } } impl Spheroid for Sun { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { 695700f64 } } @@ -51,13 +51,13 @@ mod tests { use crate::bodies::*; #[test] fn test_point_mass_10() { - assert_eq!(Sun::gravitational_parameter(), 132712440041.27942f64); + assert_eq!(Sun.gravitational_parameter(), 132712440041.27942f64); } #[test] fn test_spheroid_10() { - assert_eq!(Sun::polar_radius(), 695700f64); - assert_eq!(Sun::mean_radius(), 695700f64); - assert_eq!(Sun::equatorial_radius(), 695700f64); + assert_eq!(Sun.polar_radius(), 695700f64); + assert_eq!(Sun.mean_radius(), 695700f64); + assert_eq!(Sun.equatorial_radius(), 695700f64); } #[test] fn test_rotational_elements_nutation_precession_coefficients_10() { diff --git a/crates/lox_core/src/errors.rs b/crates/lox_core/src/errors.rs index df5e198d..926c19f5 100644 --- a/crates/lox_core/src/errors.rs +++ b/crates/lox_core/src/errors.rs @@ -18,4 +18,6 @@ pub enum LoxError { InvalidSeconds(i64, i64, f64), #[error("day of year cannot be 366 for a non-leap year")] NonLeapYear, + #[error("unknown body `{0}`")] + UnknownBody(String), } diff --git a/crates/lox_core/src/two_body.rs b/crates/lox_core/src/two_body.rs index 06f56f83..9b6ed890 100644 --- a/crates/lox_core/src/two_body.rs +++ b/crates/lox_core/src/two_body.rs @@ -8,7 +8,7 @@ pub use glam::DVec3; -use crate::bodies::{gravitational_parameter, PointMass}; +use crate::bodies::PointMass; use crate::time::epochs::Epoch; use crate::two_body::elements::{cartesian_to_keplerian, keplerian_to_cartesian}; @@ -75,7 +75,7 @@ impl TwoBody for Cartesian { } fn keplerian(&self) -> Elements { - let mu = gravitational_parameter(self.center); + let mu = self.center.gravitational_parameter(); cartesian_to_keplerian(mu, self.position, self.velocity) } @@ -162,7 +162,7 @@ impl TwoBody for Keplerian { } fn cartesian(&self) -> (DVec3, DVec3) { - let mu = gravitational_parameter(self.center); + let mu = self.center.gravitational_parameter(); keplerian_to_cartesian( mu, self.semi_major, diff --git a/crates/lox_py/src/bodies.rs b/crates/lox_py/src/bodies.rs new file mode 100644 index 00000000..2814094a --- /dev/null +++ b/crates/lox_py/src/bodies.rs @@ -0,0 +1,325 @@ +/* + * Copyright (c) 2024. Helge Eichhorn and the LOX contributors + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + */ + +use pyo3::prelude::*; + +use lox_core::bodies::*; + +use crate::LoxPyError; + +#[pyclass(name = "Sun")] +struct PySun; + +#[pymethods] +impl PySun { + #[new] + fn new() -> Self { + Self + } + + fn __repr__(&self) -> PyResult { + Ok("Sun()".to_string()) + } + + fn __str__(&self) -> PyResult { + Ok("Sun".to_string()) + } + + fn id(&self) -> i32 { + Sun.id().0 + } + + fn name(&self) -> &'static str { + Sun.name() + } + + fn gravitational_parameter(&self) -> f64 { + Sun.gravitational_parameter() + } + + fn mean_radius(&self) -> f64 { + Sun.mean_radius() + } + + fn polar_radius(&self) -> f64 { + Sun.polar_radius() + } + + fn equatorial_radius(&self) -> f64 { + Sun.equatorial_radius() + } +} + +#[pyclass(name = "Barycenter")] +struct PyBarycenter(Box); + +#[pymethods] +impl PyBarycenter { + #[new] + fn new(name: &str) -> Result { + let barycenter: Option> = match name { + "ssb" | "SSB" | "solar system barycenter" | "Solar System Barycenter" => { + Some(Box::new(SolarSystemBarycenter)) + } + "mercury barycenter" | "Mercury Barycenter" => Some(Box::new(MercuryBarycenter)), + "venus barycenter" | "Venus Barycenter" => Some(Box::new(VenusBarycenter)), + "earth barycenter" | "Earth Barycenter" => Some(Box::new(EarthBarycenter)), + "mars barycenter" | "Mars Barycenter" => Some(Box::new(MarsBarycenter)), + "jupiter barycenter" | "Jupiter Barycenter" => Some(Box::new(JupiterBarycenter)), + "saturn barycenter" | "Saturn Barycenter" => Some(Box::new(SaturnBarycenter)), + "uranus barycenter" | "Uranus Barycenter" => Some(Box::new(UranusBarycenter)), + "neptune barycenter" | "Neptune Barycenter" => Some(Box::new(NeptuneBarycenter)), + "pluto barycenter" | "Pluto Barycenter" => Some(Box::new(PlutoBarycenter)), + _ => None, + }; + match barycenter { + Some(barycenter) => Ok(Self(barycenter)), + None => Err(LoxPyError::InvalidBody(name.to_string())), + } + } + + fn __repr__(&self) -> PyResult { + Ok(format!("MinorBody(\"{}\")", self.name())) + } + + fn __str__(&self) -> PyResult { + Ok(self.name().to_string()) + } + + fn id(&self) -> i32 { + self.0.id().0 + } + + fn name(&self) -> &'static str { + self.0.name() + } + + fn gravitational_parameter(&self) -> f64 { + self.0.gravitational_parameter() + } +} + +#[pyclass(name = "Planet")] +struct PyPlanet(Box); + +#[pymethods] +impl PyPlanet { + #[new] + fn new(name: &str) -> Result { + let planet: Option> = match name { + "mercury" | "Mercury" => Some(Box::new(Mercury)), + "venus" | "Venus" => Some(Box::new(Venus)), + "earth" | "Earth" => Some(Box::new(Earth)), + "mars" | "Mars" => Some(Box::new(Mars)), + "jupiter" | "Jupiter" => Some(Box::new(Jupiter)), + "saturn" | "Saturn" => Some(Box::new(Saturn)), + "uranus" | "Uranus" => Some(Box::new(Uranus)), + "neptune" | "Neptune" => Some(Box::new(Neptune)), + "pluto" | "Pluto" => Some(Box::new(Pluto)), + _ => None, + }; + match planet { + Some(planet) => Ok(Self(planet)), + None => Err(LoxPyError::InvalidBody(name.to_string())), + } + } + + fn __repr__(&self) -> PyResult { + Ok(format!("MinorBody(\"{}\")", self.name())) + } + + fn __str__(&self) -> PyResult { + Ok(self.name().to_string()) + } + + fn id(&self) -> i32 { + self.0.id().0 + } + + fn name(&self) -> &'static str { + self.0.name() + } + + fn gravitational_parameter(&self) -> f64 { + self.0.gravitational_parameter() + } + + fn mean_radius(&self) -> f64 { + self.0.mean_radius() + } + + fn polar_radius(&self) -> f64 { + self.0.polar_radius() + } + + fn equatorial_radius(&self) -> f64 { + self.0.equatorial_radius() + } +} + +#[pyclass(name = "Satellite")] +struct PySatellite(Box); + +#[pymethods] +impl PySatellite { + #[new] + fn new(name: &str) -> Result { + let satellite: Option> = match name { + "moon" | "Moon" | "luna" | "Luna" => Some(Box::new(Moon)), + "phobos" | "Phobos" => Some(Box::new(Phobos)), + "deimos" | "Deimos" => Some(Box::new(Deimos)), + "io" | "Io" => Some(Box::new(Io)), + "europa" | "Europa" => Some(Box::new(Europa)), + "ganymede" | "Ganymede" => Some(Box::new(Ganymede)), + "callisto" | "Callisto" => Some(Box::new(Callisto)), + "amalthea" | "Amalthea" => Some(Box::new(Amalthea)), + "himalia" | "Himalia" => Some(Box::new(Himalia)), + "thebe" | "Thebe" => Some(Box::new(Thebe)), + "adrastea" | "Adrastea" => Some(Box::new(Adrastea)), + "metis" | "Metis" => Some(Box::new(Metis)), + "mimas" | "Mimas" => Some(Box::new(Mimas)), + "enceladus" | "Enceladus" => Some(Box::new(Enceladus)), + "tethys" | "Tethys" => Some(Box::new(Tethys)), + "dione" | "Dione" => Some(Box::new(Dione)), + "rhea" | "Rhea" => Some(Box::new(Rhea)), + "titan" | "Titan" => Some(Box::new(Titan)), + "hyperion" | "Hyperion" => Some(Box::new(Hyperion)), + "iapetus" | "Iapetus" => Some(Box::new(Iapetus)), + "phoebe" | "Phoebe" => Some(Box::new(Phoebe)), + "janus" | "Janus" => Some(Box::new(Janus)), + "epimetheus" | "Epimetheus" => Some(Box::new(Epimetheus)), + "helene" | "Helene" => Some(Box::new(Helene)), + "atlas" | "Atlas" => Some(Box::new(Atlas)), + "prometheus" | "Prometheus" => Some(Box::new(Prometheus)), + "pandora" | "Pandora" => Some(Box::new(Pandora)), + "ariel" | "Ariel" => Some(Box::new(Ariel)), + "umbriel" | "Umbriel" => Some(Box::new(Umbriel)), + "titania" | "Titania" => Some(Box::new(Titania)), + "oberon" | "Oberon" => Some(Box::new(Oberon)), + "miranda" | "Miranda" => Some(Box::new(Miranda)), + "triton" | "Triton" => Some(Box::new(Triton)), + "naiad" | "Naiad" => Some(Box::new(Naiad)), + "thalassa" | "Thalassa" => Some(Box::new(Thalassa)), + "despina" | "Despina" => Some(Box::new(Despina)), + "galatea" | "Galatea" => Some(Box::new(Galatea)), + "larissa" | "Larissa" => Some(Box::new(Larissa)), + "proteus" | "Proteus" => Some(Box::new(Proteus)), + "charon" | "Charon" => Some(Box::new(Charon)), + _ => None, + }; + match satellite { + Some(satellite) => Ok(Self(satellite)), + None => Err(LoxPyError::InvalidBody(name.to_string())), + } + } + + fn __repr__(&self) -> PyResult { + Ok(format!("MinorBody(\"{}\")", self.name())) + } + + fn __str__(&self) -> PyResult { + Ok(self.name().to_string()) + } + + fn id(&self) -> i32 { + self.0.id().0 + } + + fn name(&self) -> &'static str { + self.0.name() + } + + fn gravitational_parameter(&self) -> f64 { + self.0.gravitational_parameter() + } + + fn mean_radius(&self) -> f64 { + self.0.mean_radius() + } + + fn polar_radius(&self) -> f64 { + self.0.polar_radius() + } + + fn subplanetary_radius(&self) -> f64 { + self.0.subplanetary_radius() + } + + fn along_orbit_radius(&self) -> f64 { + self.0.along_orbit_radius() + } +} + +#[pyclass(name = "MinorBody")] +struct PyMinorBody(Box); + +#[pymethods] +impl PyMinorBody { + #[new] + fn new(name: &str) -> Result { + let minor: Option> = match name { + "ceres" | "Ceres" => Some(Box::new(Ceres)), + "vesta" | "Vesta" => Some(Box::new(Vesta)), + "psyche" | "Psyche" => Some(Box::new(Psyche)), + "eros" | "Eros" => Some(Box::new(Eros)), + "davida" | "Davida" => Some(Box::new(Davida)), + _ => None, + }; + match minor { + Some(minor) => Ok(Self(minor)), + None => Err(LoxPyError::InvalidBody(name.to_string())), + } + } + + fn __repr__(&self) -> PyResult { + Ok(format!("MinorBody(\"{}\")", self.name())) + } + + fn __str__(&self) -> PyResult { + Ok(self.name().to_string()) + } + + fn id(&self) -> i32 { + self.0.id().0 + } + + fn name(&self) -> &'static str { + self.0.name() + } + + fn gravitational_parameter(&self) -> f64 { + self.0.gravitational_parameter() + } + + fn mean_radius(&self) -> f64 { + self.0.mean_radius() + } + + fn polar_radius(&self) -> f64 { + self.0.polar_radius() + } + + fn subplanetary_radius(&self) -> f64 { + self.0.subplanetary_radius() + } + + fn along_orbit_radius(&self) -> f64 { + self.0.along_orbit_radius() + } +} + +#[pymodule] +#[pyo3(name = "bodies")] +pub fn module(_py: Python, m: &PyModule) -> PyResult<()> { + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + Ok(()) +} diff --git a/crates/lox_py/src/lib.rs b/crates/lox_py/src/lib.rs index 6fb65b5a..73a00a65 100644 --- a/crates/lox_py/src/lib.rs +++ b/crates/lox_py/src/lib.rs @@ -8,6 +8,7 @@ use pyo3::exceptions::PyValueError; use pyo3::prelude::*; +use pyo3::wrap_pymodule; use thiserror::Error; use lox_core::errors::LoxError; @@ -15,10 +16,14 @@ use lox_core::time::dates::{Date, Time}; use lox_core::time::epochs::Epoch; use lox_core::time::epochs::TimeScale; +mod bodies; + #[derive(Error, Debug)] pub enum LoxPyError { #[error("invalid time scale `{0}`")] InvalidTimeScale(String), + #[error("unknown body `{0}`")] + InvalidBody(String), #[error(transparent)] LoxError(#[from] LoxError), #[error(transparent)] @@ -29,6 +34,7 @@ impl From for PyErr { fn from(value: LoxPyError) -> Self { match value { LoxPyError::InvalidTimeScale(_) => PyValueError::new_err(value.to_string()), + LoxPyError::InvalidBody(_) => PyValueError::new_err(value.to_string()), LoxPyError::LoxError(value) => PyValueError::new_err(value.to_string()), LoxPyError::PyError(value) => value, } @@ -69,19 +75,19 @@ struct PyEpoch(Epoch); impl PyEpoch { #[allow(clippy::too_many_arguments)] #[pyo3(signature = ( - scale, - year, - month, - day, - hour = 0, - minute = 0, - second = 0, - milli = 0, - micro = 0, - nano = 0, - pico = 0, - femto = 0, - atto = 0 + scale, + year, + month, + day, + hour = 0, + minute = 0, + second = 0, + milli = 0, + micro = 0, + nano = 0, + pico = 0, + femto = 0, + atto = 0 ))] #[new] fn new( @@ -139,6 +145,7 @@ impl PyEpoch { /// A Python module implemented in Rust. #[pymodule] fn lox_space(_py: Python, m: &PyModule) -> PyResult<()> { + m.add_wrapped(wrap_pymodule!(bodies::module))?; m.add_class::()?; m.add_class::()?; Ok(()) diff --git a/tools/lox_gen/src/main.rs b/tools/lox_gen/src/main.rs index 872a5c63..d50b1db0 100644 --- a/tools/lox_gen/src/main.rs +++ b/tools/lox_gen/src/main.rs @@ -159,16 +159,16 @@ fn spheroid( #code impl Ellipsoid for #ident { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { #polar } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { #mean } } impl Spheroid for #ident { - fn equatorial_radius() -> f64 { + fn equatorial_radius(&self) -> f64 { #equatorial } } @@ -181,9 +181,9 @@ fn spheroid( #[test] fn #test_name() { - assert_eq!(#ident::polar_radius(), #polar); - assert_eq!(#ident::mean_radius(), #mean); - assert_eq!(#ident::equatorial_radius(), #equatorial); + assert_eq!(#ident.polar_radius(), #polar); + assert_eq!(#ident.mean_radius(), #mean); + assert_eq!(#ident.equatorial_radius(), #equatorial); } }; @@ -216,19 +216,19 @@ fn tri_axial( #code impl Ellipsoid for #ident { - fn polar_radius() -> f64 { + fn polar_radius(&self) -> f64 { #polar } - fn mean_radius() -> f64 { + fn mean_radius(&self) -> f64 { #mean } } impl TriAxial for #ident { - fn subplanetary_radius() -> f64 { + fn subplanetary_radius(&self) -> f64 { #subplanetary } - fn along_orbit_radius() -> f64 { + fn along_orbit_radius(&self) -> f64 { #along_orbit } } @@ -241,10 +241,10 @@ fn tri_axial( #[test] fn #test_name() { - assert_eq!(#ident::polar_radius(), #polar); - assert_eq!(#ident::mean_radius(), #mean); - assert_eq!(#ident::subplanetary_radius(), #subplanetary); - assert_eq!(#ident::along_orbit_radius(), #along_orbit); + assert_eq!(#ident.polar_radius(), #polar); + assert_eq!(#ident.mean_radius(), #mean); + assert_eq!(#ident.subplanetary_radius(), #subplanetary); + assert_eq!(#ident.along_orbit_radius(), #along_orbit); } }; @@ -273,7 +273,7 @@ fn point_mass( #code impl PointMass for #ident { - fn gravitational_parameter() -> f64 { + fn gravitational_parameter(&self) -> f64 { #gm } } @@ -286,7 +286,7 @@ fn point_mass( #[test] fn #test_name() { - assert_eq!(#ident::gravitational_parameter(), #gm); + assert_eq!(#ident.gravitational_parameter(), #gm); } };