Skip to content

Commit 4d67196

Browse files
Fix/time kind spice api (#236)
* Fix time conversion in ReadEphemeris and add UTC tests * Fix time conversion in StateVector and update version numbers
1 parent c146d7f commit 4d67196

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

IO.Astrodynamics.Net/IO.Astrodynamics.CLI/IO.Astrodynamics.CLI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<FileVersion>0.0.1</FileVersion>
1010
<PackAsTool>true</PackAsTool>
1111
<ToolCommandName>astro</ToolCommandName>
12-
<Version>0.6.5.0</Version>
12+
<Version>0.6.5.1</Version>
1313
<Title>Astrodynamics command line interface</Title>
1414
<Authors>Sylvain Guillet</Authors>
1515
<Description>This CLI allows end user to exploit IO.Astrodynamics framework </Description>

IO.Astrodynamics.Net/IO.Astrodynamics.Tests/APITest.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,40 @@ public void ReadEphemeris()
392392
TestHelpers.EarthAtJ2000, TestHelpers.MoonAtJ2000,
393393
null, Aberration.LT));
394394
}
395+
396+
[Fact]
397+
public void ReadEphemerisUTC()
398+
{
399+
var searchWindow = new Window(TimeSystem.Time.CreateUTC(0.0), TimeSystem.Time.CreateUTC(100.0));
400+
var res = API.Instance.ReadEphemeris(searchWindow, TestHelpers.EarthAtJ2000, TestHelpers.MoonAtJ2000,
401+
Frames.Frame.ICRF, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector());
402+
403+
var stateVectors = res as StateVector[] ?? res.ToArray();
404+
Assert.Equal(new Vector3(-291527956.4143643,-266751935.53610146,-76118494.37190592), stateVectors[0].Position,TestHelpers.VectorComparer);
405+
Assert.Equal(new Vector3(643.6475664431179,-665.9766990302671,-301.2930723673155), stateVectors[0].Velocity,TestHelpers.VectorComparer);
406+
Assert.Equal(PlanetsAndMoons.EARTH.NaifId, stateVectors[0].Observer.NaifId);
407+
Assert.Equal(Frames.Frame.ICRF, stateVectors[0].Frame);
408+
Assert.Equal(0, stateVectors[0].Epoch.TimeSpanFromJ2000().TotalSeconds,6);
409+
410+
Assert.Throws<ArgumentNullException>(() => API.Instance.ReadEphemeris(searchWindow, null,
411+
TestHelpers.MoonAtJ2000,
412+
Frames.Frame.ICRF, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector()));
413+
Assert.Throws<ArgumentNullException>(() => API.Instance.ReadEphemeris(searchWindow, TestHelpers.EarthAtJ2000,
414+
null,
415+
Frames.Frame.ICRF, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector()));
416+
Assert.Throws<ArgumentNullException>(() => API.Instance.ReadEphemeris(searchWindow, TestHelpers.EarthAtJ2000,
417+
TestHelpers.MoonAtJ2000,
418+
null, Aberration.LT, TimeSpan.FromSeconds(10.0)).Select(x => x.ToStateVector()));
419+
Assert.Throws<ArgumentNullException>(() => API.Instance.ReadEphemeris(searchWindow.StartDate, null,
420+
TestHelpers.MoonAtJ2000,
421+
Frames.Frame.ICRF, Aberration.LT));
422+
Assert.Throws<ArgumentNullException>(() => API.Instance.ReadEphemeris(searchWindow.StartDate,
423+
TestHelpers.EarthAtJ2000, null,
424+
Frames.Frame.ICRF, Aberration.LT));
425+
Assert.Throws<ArgumentNullException>(() => API.Instance.ReadEphemeris(searchWindow.StartDate,
426+
TestHelpers.EarthAtJ2000, TestHelpers.MoonAtJ2000,
427+
null, Aberration.LT));
428+
}
395429

396430
[Fact]
397431
public void ReadLongEphemeris()

IO.Astrodynamics.Net/IO.Astrodynamics.Tests/Body/CelestialBodyTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,18 @@ public void GetEphemeris()
159159
TestHelpers.Sun, TimeSystem.Time.J2000TDB + TimeSpan.FromDays(1.0), Frames.Frame.ICRF), res.ElementAt(1).ToStateVector(), TestHelpers.StateVectorComparer);
160160
}
161161

162+
[Fact]
163+
public void GetEphemerisUTC()
164+
{
165+
var earth = PlanetsAndMoons.EARTH_BODY;
166+
var res = earth.GetEphemeris(new Window(TimeSystem.Time.J2000UTC, TimeSpan.FromDays(1.0)), TestHelpers.Sun, Frames.Frame.ICRF, Aberration.None,
167+
TimeSpan.FromDays(1.0)).ToArray();
168+
Assert.Equal(2, res.Length);
169+
Assert.Equal(
170+
new StateVector(new Vector3(-29069076368.647408, 132303142494.37561, 57359794320.98976), new Vector3(-29695.854459557304, -5497.347182651618, -2382.9422283991967),
171+
TestHelpers.Sun, TimeSystem.Time.J2000UTC + TimeSpan.FromDays(1.0), Frames.Frame.ICRF), res.ElementAt(1).ToStateVector(), TestHelpers.StateVectorComparer);
172+
}
173+
162174
[Fact]
163175
public void GetEphemerisLT()
164176
{

IO.Astrodynamics.Net/IO.Astrodynamics/API.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,13 +649,13 @@ public IEnumerable<LaunchWindow> FindLaunchWindows(Maneuver.Launch launch,
649649
{
650650
var start = searchWindow.StartDate + i * messageSize * stepSize;
651651
var end = start + messageSize * stepSize > searchWindow.EndDate ? searchWindow.EndDate : (start + messageSize * stepSize) - stepSize;
652-
var window = new TimeSystem.Window(start, end);
652+
var window = new TimeSystem.Window(start.ToTDB(), end.ToTDB());
653653
var stateVectors = new StateVector[messageSize];
654654
ReadEphemerisProxy(window.Convert(), observer.NaifId, target.NaifId, frame.Name,
655655
aberration.GetDescription(), stepSize.TotalSeconds,
656656
stateVectors);
657657
orbitalParameters.AddRange(stateVectors.Where(x => !string.IsNullOrEmpty(x.Frame)).Select(x =>
658-
new OrbitalParameters.StateVector(x.Position.Convert(), x.Velocity.Convert(), observer, Time.Create(x.Epoch, TimeFrame.TDBFrame), frame)));
658+
new OrbitalParameters.StateVector(x.Position.Convert(), x.Velocity.Convert(), observer, Time.CreateTDB(x.Epoch).ConvertTo(searchWindow.StartDate.Frame), frame)));
659659
}
660660

661661
return orbitalParameters;

IO.Astrodynamics.Net/IO.Astrodynamics/IO.Astrodynamics.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<id>IO.Astrodynamics</id>
55
<authors>Sylvain Guillet</authors>
66
<copyright>Sylvain Guillet</copyright>
7-
<version>6.5.0</version>
7+
<version>6.5.1</version>
88
<title>Astrodynamics framework</title>
99
<icon>images\dragonfly-dark-trans.png</icon>
1010
<readme>docs\README.md</readme>

0 commit comments

Comments
 (0)