use of org.orekit.utils.PVCoordinates in project Orekit by CS-SI.
the class ITRFEquinoxProviderTest method testAASReferenceGEO.
@Test
public void testAASReferenceGEO() throws OrekitException {
// this reference test has been extracted from the following paper:
// Implementation Issues Surrounding the New IAU Reference Systems for Astrodynamics
// David A. Vallado, John H. Seago, P. Kenneth Seidelmann
// http://www.centerforspace.com/downloads/files/pubs/AAS-06-134.pdf
Utils.setLoaders(IERSConventions.IERS_1996, Utils.buildEOPList(IERSConventions.IERS_1996, ITRFVersion.ITRF_2008, new double[][] { { 53153, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53154, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53155, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53156, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53157, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53158, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53159, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN }, { 53160, -0.4709050, 0.0000000, -0.083853, 0.467217, -0.053614, -0.004494, Double.NaN, Double.NaN } }));
AbsoluteDate t0 = new AbsoluteDate(new DateComponents(2004, 06, 01), TimeComponents.H00, TimeScalesFactory.getUTC());
Transform t = FramesFactory.getGTOD(IERSConventions.IERS_1996, true).getTransformTo(FramesFactory.getITRFEquinox(IERSConventions.IERS_1996, true), t0);
// GTOD
PVCoordinates pvGTOD = new PVCoordinates(new Vector3D(24796919.2956, -34115870.9001, 10293.2583), new Vector3D(-0.979178, -1.476540, -0.928772));
// ITRF
PVCoordinates pvITRF = new PVCoordinates(new Vector3D(24796919.2915, -34115870.9234, 10226.0621), new Vector3D(-0.979178, -1.476538, -0.928776));
checkPV(pvITRF, t.transformPVCoordinates(pvGTOD), 3.954e-4, 4.69e-7);
}
use of org.orekit.utils.PVCoordinates in project Orekit by CS-SI.
the class ITRFProviderTest method testAASReferenceGEODX0DY0.
@Test
public void testAASReferenceGEODX0DY0() throws OrekitException {
// this reference test has been extracted from the following paper:
// Implementation Issues Surrounding the New IAU Reference Systems for Astrodynamics
// David A. Vallado, John H. Seago, P. Kenneth Seidelmann
// http://www.centerforspace.com/downloads/files/pubs/AAS-06-134.pdf
Utils.setLoaders(IERSConventions.IERS_2010, Utils.buildEOPList(IERSConventions.IERS_2010, ITRFVersion.ITRF_2008, new double[][] { { 53153, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53154, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53155, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53156, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53157, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53158, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53159, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 }, { 53160, -0.4709050, 0.0000000, -0.083853, 0.467217, 0.0, 0.0, 0.0, 0.0 } }));
AbsoluteDate t0 = new AbsoluteDate(new DateComponents(2004, 06, 01), TimeComponents.H00, TimeScalesFactory.getUTC());
// Positions GEO
Frame itrfA = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
PVCoordinates pvITRF = new PVCoordinates(new Vector3D(24796919.2915, -34115870.9234, 10226.0621), new Vector3D(-0.979178, -1.476538, -0.928776));
PVCoordinates pvGCRFdx0dy0 = new PVCoordinates(new Vector3D(-40588150.3643, -11462167.0302, 27143.1979), new Vector3D(834.787457, -2958.305691, -1.172993));
checkPV(pvGCRFdx0dy0, itrfA.getTransformTo(FramesFactory.getGCRF(), t0).transformPVCoordinates(pvITRF), 0.0505, 1.06e-4);
PVCoordinates pvEME2000EqA = new PVCoordinates(new Vector3D(-40588149.5482, -11462169.9118, 27146.8462), new Vector3D(834.787667, -2958.305632, -1.172963));
checkPV(pvEME2000EqA, itrfA.getTransformTo(FramesFactory.getEME2000(), t0).transformPVCoordinates(pvITRF), 0.0603, 1.07e-4);
}
use of org.orekit.utils.PVCoordinates in project Orekit by CS-SI.
the class ITRFProviderWithoutTidalEffectsTest method testMontenbruck.
@Test
public void testMontenbruck() throws OrekitException {
AbsoluteDate t0 = new AbsoluteDate(new DateComponents(1999, 3, 4), TimeComponents.H00, TimeScalesFactory.getGPS());
Transform trans = FramesFactory.getITRF(IERSConventions.IERS_2010, true).getTransformTo(FramesFactory.getGCRF(), t0);
PVCoordinates pvWGS = new PVCoordinates(new Vector3D(19440953.805, 16881609.273, -6777115.092), new Vector3D(-811.1827456, -257.3799137, -3068.9508125));
checkPV(new PVCoordinates(new Vector3D(-23830592.685, -9747073.881, -6779831.010), new Vector3D(1561.9646362, -1754.3454485, -3068.8504996)), trans.transformPVCoordinates(pvWGS), 0.146, 3.43e-5);
}
use of org.orekit.utils.PVCoordinates in project Orekit by CS-SI.
the class L1TransformProviderTest method testTransformationOrientationForEarthMoon.
@Test
public void testTransformationOrientationForEarthMoon() throws OrekitException {
// Load Bodies
final CelestialBody earth = CelestialBodyFactory.getEarth();
final CelestialBody moon = CelestialBodyFactory.getMoon();
// Set framesd
final Frame eme2000 = FramesFactory.getEME2000();
final Frame l1Frame = new L1Frame(earth, moon);
// Time settings
final AbsoluteDate date = new AbsoluteDate(2000, 01, 01, 0, 0, 00.000, TimeScalesFactory.getUTC());
// Compute Moon position in EME2000
PVCoordinates pvMoon = moon.getPVCoordinates(date, eme2000);
Vector3D posMoon = pvMoon.getPosition();
// Compute L1 position in EME2000
// (it is important to use transformPosition(Vector3D.ZERO) and *not* getTranslation()
// because the test should avoid doing wrong interpretation of the meaning and
// particularly on the sign of the translation)
Vector3D posL1 = l1Frame.getTransformTo(eme2000, date).transformPosition(Vector3D.ZERO);
// check L1 and Moon are aligned as seen from Earth
Assert.assertEquals(0.0, Vector3D.angle(posMoon, posL1), 1.0e-10);
// check the Moon is at least 40 000km farther than L1
Assert.assertTrue(posMoon.getNorm() > posL1.getNorm() + 4.0e7);
}
use of org.orekit.utils.PVCoordinates in project Orekit by CS-SI.
the class L1TransformProviderTest method testSunJupiter.
@Test
public void testSunJupiter() throws OrekitException {
// Load Bodies
final CelestialBody sun = CelestialBodyFactory.getSun();
final CelestialBody jupiter = CelestialBodyFactory.getJupiter();
// Set frames
final Frame sunFrame = sun.getInertiallyOrientedFrame();
final Frame l1Frame = new L1Frame(sun, jupiter);
// Time settings
final AbsoluteDate date = new AbsoluteDate(2000, 01, 01, 0, 0, 00.000, TimeScalesFactory.getUTC());
// Compute Jupiter position in Sun centered frame
PVCoordinates pvJupiter = jupiter.getPVCoordinates(date, sunFrame);
Vector3D posJupiter = pvJupiter.getPosition();
// Compute L1 position in Sun centered frame
// (it is important to use transformPosition(Vector3D.ZERO) and *not* getTranslation()
// because the test should avoid doing wrong interpretation of the meaning and
// particularly on the sign of the translation)
Vector3D posL1 = l1Frame.getTransformTo(sunFrame, date).transformPosition(Vector3D.ZERO);
// check L1 and Jupiter are aligned as seen from Sun
Assert.assertEquals(0.0, Vector3D.angle(posJupiter, posL1), 1.0e-10);
// check if Jupiter is at least 45 000 000km farther than L1
Assert.assertTrue(posJupiter.getNorm() > posL1.getNorm() + 4.5e10);
}
Aggregations