From acfd70841fb0dca2f91d8a7645a2aa16ba16b412 Mon Sep 17 00:00:00 2001 From: ktyl Date: Wed, 7 Sep 2022 00:55:16 +0100 Subject: [PATCH] WIP RESET THIS --- scripts/orbits/IOrbitalElementsExtensions.cs | 13 ++++++ scripts/orbits/OrbitalElements.cs | 46 ++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 scripts/orbits/IOrbitalElementsExtensions.cs create mode 100644 scripts/orbits/OrbitalElements.cs diff --git a/scripts/orbits/IOrbitalElementsExtensions.cs b/scripts/orbits/IOrbitalElementsExtensions.cs new file mode 100644 index 0000000..f8dbda1 --- /dev/null +++ b/scripts/orbits/IOrbitalElementsExtensions.cs @@ -0,0 +1,13 @@ +using Vim.Math3d; +using static System.Math; + +public static class IOrbitalElementsExtensions +{ + /// + /// Get the Cartesian position on the orbit for a given mean anomaly. + /// + /// Mean anomaly + /// Position + public static DVector2 GetEccentricPosition2D(this OrbitalElements elements, double M) => + Kepler.GetEccentricPosition2D(elements.e, elements.a, M); +} \ No newline at end of file diff --git a/scripts/orbits/OrbitalElements.cs b/scripts/orbits/OrbitalElements.cs new file mode 100644 index 0000000..c501dc8 --- /dev/null +++ b/scripts/orbits/OrbitalElements.cs @@ -0,0 +1,46 @@ +public struct OrbitalElements +{ + private Ellipse _ellipse; + /// + /// Semi-major axis in AU + /// + public double a => _ellipse.a; + /// + /// Eccentricity + /// + public double e => _ellipse.e; + /// + /// Inclination in degrees + /// + public double i { get; private set; } + /// + /// Argument of ascending node in degrees + /// + public double W { get; private set; } + /// + /// Argument of periapsis in degrees + /// + public double p { get; private set; } + /// + /// Mean anomaly at epoch + /// + public double M0 { get; private set; } + + /// + /// + /// + /// Semi-major axis in AU + /// eccentricity + /// Inclination in degrees + /// Argument of ascending node in degrees + /// Argument of periapsis in degrees + /// Mean anomaly at epoch + public OrbitalElements(double a, double e, double i, double W, double p, double M0) + { + _ellipse = new Ellipse(a, e); + this.i = i; + this.W = W; + this.p = p; + this.M0 = M0; + } +} \ No newline at end of file