Search in sources :

Example 96 with PVCoordinates

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);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 97 with PVCoordinates

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);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 98 with PVCoordinates

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);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 99 with PVCoordinates

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);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) CelestialBody(org.orekit.bodies.CelestialBody) PVCoordinates(org.orekit.utils.PVCoordinates) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 100 with PVCoordinates

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);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) CelestialBody(org.orekit.bodies.CelestialBody) PVCoordinates(org.orekit.utils.PVCoordinates) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Aggregations

PVCoordinates (org.orekit.utils.PVCoordinates)341 Vector3D (org.hipparchus.geometry.euclidean.threed.Vector3D)271 Test (org.junit.Test)242 AbsoluteDate (org.orekit.time.AbsoluteDate)189 TimeStampedPVCoordinates (org.orekit.utils.TimeStampedPVCoordinates)159 SpacecraftState (org.orekit.propagation.SpacecraftState)95 KeplerianOrbit (org.orekit.orbits.KeplerianOrbit)76 FieldAbsoluteDate (org.orekit.time.FieldAbsoluteDate)73 FieldPVCoordinates (org.orekit.utils.FieldPVCoordinates)71 FieldVector3D (org.hipparchus.geometry.euclidean.threed.FieldVector3D)67 Orbit (org.orekit.orbits.Orbit)65 EquinoctialOrbit (org.orekit.orbits.EquinoctialOrbit)57 Frame (org.orekit.frames.Frame)53 FieldSpacecraftState (org.orekit.propagation.FieldSpacecraftState)44 CartesianOrbit (org.orekit.orbits.CartesianOrbit)43 OneAxisEllipsoid (org.orekit.bodies.OneAxisEllipsoid)42 DateComponents (org.orekit.time.DateComponents)40 CircularOrbit (org.orekit.orbits.CircularOrbit)37 Rotation (org.hipparchus.geometry.euclidean.threed.Rotation)30 NumericalPropagator (org.orekit.propagation.numerical.NumericalPropagator)30