diff --git a/IO.Astrodynamics.Net/IO.Astrodynamics.CLI/IO.Astrodynamics.CLI.csproj b/IO.Astrodynamics.Net/IO.Astrodynamics.CLI/IO.Astrodynamics.CLI.csproj index b1037b34d..2938cba95 100644 --- a/IO.Astrodynamics.Net/IO.Astrodynamics.CLI/IO.Astrodynamics.CLI.csproj +++ b/IO.Astrodynamics.Net/IO.Astrodynamics.CLI/IO.Astrodynamics.CLI.csproj @@ -9,7 +9,7 @@ 0.0.1 true astro - 0.6.5.0 + 0.6.5.1 Astrodynamics command line interface Sylvain Guillet This CLI allows end user to exploit IO.Astrodynamics framework diff --git a/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/APITest.cs b/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/APITest.cs index 05b11450c..3d56f3d83 100644 --- a/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/APITest.cs +++ b/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/APITest.cs @@ -392,6 +392,40 @@ public void ReadEphemeris() TestHelpers.EarthAtJ2000, TestHelpers.MoonAtJ2000, null, Aberration.LT)); } + + [Fact] + public void ReadEphemerisUTC() + { + var searchWindow = new Window(TimeSystem.Time.CreateUTC(0.0), TimeSystem.Time.CreateUTC(100.0)); + var res = API.Instance.ReadEphemeris(searchWindow, TestHelpers.EarthAtJ2000, TestHelpers.MoonAtJ2000, + Frames.Frame.ICRF, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector()); + + var stateVectors = res as StateVector[] ?? res.ToArray(); + Assert.Equal(new Vector3(-291527956.4143643,-266751935.53610146,-76118494.37190592), stateVectors[0].Position,TestHelpers.VectorComparer); + Assert.Equal(new Vector3(643.6475664431179,-665.9766990302671,-301.2930723673155), stateVectors[0].Velocity,TestHelpers.VectorComparer); + Assert.Equal(PlanetsAndMoons.EARTH.NaifId, stateVectors[0].Observer.NaifId); + Assert.Equal(Frames.Frame.ICRF, stateVectors[0].Frame); + Assert.Equal(0, stateVectors[0].Epoch.TimeSpanFromJ2000().TotalSeconds,6); + + Assert.Throws(() => API.Instance.ReadEphemeris(searchWindow, null, + TestHelpers.MoonAtJ2000, + Frames.Frame.ICRF, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector())); + Assert.Throws(() => API.Instance.ReadEphemeris(searchWindow, TestHelpers.EarthAtJ2000, + null, + Frames.Frame.ICRF, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector())); + Assert.Throws(() => API.Instance.ReadEphemeris(searchWindow, TestHelpers.EarthAtJ2000, + TestHelpers.MoonAtJ2000, + null, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector())); + Assert.Throws(() => API.Instance.ReadEphemeris(searchWindow.StartDate, null, + TestHelpers.MoonAtJ2000, + Frames.Frame.ICRF, Aberration.LT)); + Assert.Throws(() => API.Instance.ReadEphemeris(searchWindow.StartDate, + TestHelpers.EarthAtJ2000, null, + Frames.Frame.ICRF, Aberration.LT)); + Assert.Throws(() => API.Instance.ReadEphemeris(searchWindow.StartDate, + TestHelpers.EarthAtJ2000, TestHelpers.MoonAtJ2000, + null, Aberration.LT)); + } [Fact] public void ReadLongEphemeris() diff --git a/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/Body/CelestialBodyTests.cs b/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/Body/CelestialBodyTests.cs index 523dae401..a97a9404c 100644 --- a/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/Body/CelestialBodyTests.cs +++ b/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/Body/CelestialBodyTests.cs @@ -159,6 +159,18 @@ public void GetEphemeris() TestHelpers.Sun, TimeSystem.Time.J2000TDB + TimeSpan.FromDays(1.0), Frames.Frame.ICRF), res.ElementAt(1).ToStateVector(), TestHelpers.StateVectorComparer); } + [Fact] + public void GetEphemerisUTC() + { + var earth = PlanetsAndMoons.EARTH_BODY; + var res = earth.GetEphemeris(new Window(TimeSystem.Time.J2000UTC, TimeSpan.FromDays(1.0)), TestHelpers.Sun, Frames.Frame.ICRF, Aberration.None, + TimeSpan.FromDays(1.0)).ToArray(); + Assert.Equal(2, res.Length); + Assert.Equal( + new StateVector(new Vector3(-29069076368.647408, 132303142494.37561, 57359794320.98976), new Vector3(-29695.854459557304, -5497.347182651618, -2382.9422283991967), + TestHelpers.Sun, TimeSystem.Time.J2000UTC + TimeSpan.FromDays(1.0), Frames.Frame.ICRF), res.ElementAt(1).ToStateVector(), TestHelpers.StateVectorComparer); + } + [Fact] public void GetEphemerisLT() { diff --git a/IO.Astrodynamics.Net/IO.Astrodynamics/API.cs b/IO.Astrodynamics.Net/IO.Astrodynamics/API.cs index 821059f58..d22b2b488 100644 --- a/IO.Astrodynamics.Net/IO.Astrodynamics/API.cs +++ b/IO.Astrodynamics.Net/IO.Astrodynamics/API.cs @@ -649,13 +649,13 @@ public IEnumerable FindLaunchWindows(Maneuver.Launch launch, { var start = searchWindow.StartDate + i * messageSize * stepSize; var end = start + messageSize * stepSize > searchWindow.EndDate ? searchWindow.EndDate : (start + messageSize * stepSize) - stepSize; - var window = new TimeSystem.Window(start, end); + var window = new TimeSystem.Window(start.ToTDB(), end.ToTDB()); var stateVectors = new StateVector[messageSize]; ReadEphemerisProxy(window.Convert(), observer.NaifId, target.NaifId, frame.Name, aberration.GetDescription(), stepSize.TotalSeconds, stateVectors); orbitalParameters.AddRange(stateVectors.Where(x => !string.IsNullOrEmpty(x.Frame)).Select(x => - new OrbitalParameters.StateVector(x.Position.Convert(), x.Velocity.Convert(), observer, Time.Create(x.Epoch, TimeFrame.TDBFrame), frame))); + new OrbitalParameters.StateVector(x.Position.Convert(), x.Velocity.Convert(), observer, Time.CreateTDB(x.Epoch).ConvertTo(searchWindow.StartDate.Frame), frame))); } return orbitalParameters; diff --git a/IO.Astrodynamics.Net/IO.Astrodynamics/IO.Astrodynamics.nuspec b/IO.Astrodynamics.Net/IO.Astrodynamics/IO.Astrodynamics.nuspec index ef3e60f2c..1783c75ee 100644 --- a/IO.Astrodynamics.Net/IO.Astrodynamics/IO.Astrodynamics.nuspec +++ b/IO.Astrodynamics.Net/IO.Astrodynamics/IO.Astrodynamics.nuspec @@ -4,7 +4,7 @@ IO.Astrodynamics Sylvain Guillet Sylvain Guillet - 6.5.0 + 6.5.1 Astrodynamics framework images\dragonfly-dark-trans.png docs\README.md