private double GenericMoon_Semidiameter(SkyContext c, int id) { var ecl = c.Get(GenericMoon_Ecliptical, id); var radius = genericMoons.FirstOrDefault(gm => gm.Id == id).Data.radius; return(GenericSatellite.Semidiameter(ecl.Distance, radius)); }
private CrdsEcliptical GenericMoon_Ecliptical(SkyContext c, int id) { var moon = genericMoons.FirstOrDefault(gm => gm.Id == id); var eclPlanet = moon.Planet == Planet.PLUTO ? c.Get(Pluto_Ecliptical) : c.Get(Planet_Ecliptical, moon.Planet); var orbit = moon.Data; return(GenericSatellite.Position(c.JulianDay, orbit, eclPlanet)); }
private float GenericMoon_RiseTransitSet(SkyContext c, int id) { var moon = genericMoons.FirstOrDefault(gm => gm.Id == id); var delta = moon.Planet == Planet.PLUTO ? c.Get(Pluto_DistanceFromEarth) : c.Get(Planet_DistanceFromEarth, moon.Planet); double r = moon.Planet == Planet.PLUTO ? c.Get(Pluto_DistanceFromSun) : c.Get(Planet_DistanceFromSun, moon.Planet); var mag0 = moon.Data.mag; return(GenericSatellite.Magnitude(mag0, delta, r)); }
public void Positions() { // Test data is obtained from NASA JPL Ephemeris tool // https://ssd.jpl.nasa.gov/horizons.cgi List <TestData> testDatas = new List <TestData>() { // Himalia new TestData() { // Jupiter Planet = new CrdsEcliptical(289.7284978, -0.0083066, 5.754), Satellite = new CrdsEcliptical(289.1380251, -0.1787516, 5.816), JulianDay = 2458910.5, Orbit = new GenericSatelliteOrbit() { jd = 2458910.5, M = 173.3391578385199, n = 1.4334454486197841, e = 0.1445592845834921, a = 0.076704623733999638, i = 29.281956648008659, w = 28.857802792063811, Om = 44.243050305709588, Pw = 139.38, POm = 292.57 } }, // Elara // 2020-Mar-03 00:00 new TestData() { Planet = new CrdsEcliptical(289.9104513, -0.0100286, 5.754), Satellite = new CrdsEcliptical(290.5880675, -0.3618171), JulianDay = 2458911.5, Orbit = new GenericSatelliteOrbit() { jd = 2458911.5, M = 77.3445191940261, n = 1.3997313639410149, e = 0.20484227354508239, a = 0.07793140889266964, i = 30.592442329213181, w = 196.27845249534491, Om = 90.810465090589958, Pw = 128.07, POm = 265.3 } } }; foreach (var testData in testDatas) { CrdsEcliptical eclSatellite = GenericSatellite.Position(testData.JulianDay, testData.Orbit, testData.Planet); Assert.IsTrue(Angle.Separation(eclSatellite, testData.Satellite) < 8.0 / 3600.0); //Assert.AreEqual(eclSatellite.Lambda, testData.Satellite.Lambda, 10.0 / 3600); //Assert.AreEqual(eclSatellite.Beta, testData.Satellite.Beta, 10.0 / 3600); //Assert.AreEqual(eclSatellite.Distance, testData.Satellite.Distance, 1e-3); } }