Search in sources :

Example 81 with TimeComponents

use of org.orekit.time.TimeComponents in project Orekit by CS-SI.

the class ITRFEquinoxProviderTest method testAASReferenceLEO.

@Test
public void testAASReferenceLEO() 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[][] { { 53098, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53099, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53100, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53101, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53102, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53103, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53104, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN }, { 53105, -0.4399619, 0.0015563, -0.140682, 0.333309, -0.052195, -0.003875, Double.NaN, Double.NaN } }));
    AbsoluteDate t0 = new AbsoluteDate(new DateComponents(2004, 04, 06), new TimeComponents(07, 51, 28.386009), TimeScalesFactory.getUTC());
    // ITRF
    PVCoordinates pvITRF = new PVCoordinates(new Vector3D(-1033479.3830, 7901295.2754, 6380356.5958), new Vector3D(-3225.636520, -2872.451450, 5531.924446));
    // GTOD
    PVCoordinates pvGTOD = new PVCoordinates(new Vector3D(-1033475.0313, 7901305.5856, 6380344.5328), new Vector3D(-3225.632747, -2872.442511, 5531.931288));
    Transform t = FramesFactory.getGTOD(IERSConventions.IERS_1996, true).getTransformTo(FramesFactory.getITRFEquinox(IERSConventions.IERS_1996, true), t0);
    checkPV(pvITRF, t.transformPVCoordinates(pvGTOD), 8.08e-5, 3.78e-7);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) TimeComponents(org.orekit.time.TimeComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 82 with TimeComponents

use of org.orekit.time.TimeComponents in project Orekit by CS-SI.

the class ITRFProviderTest method testAASReferenceLEO.

@Test
public void testAASReferenceLEO() 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
    // Reference position & velocity from : "Fundamentals of Astrodynamics and Applications", Third edition, David A. Vallado
    Utils.setLoaders(IERSConventions.IERS_2010, Utils.buildEOPList(IERSConventions.IERS_2010, ITRFVersion.ITRF_2008, new double[][] { { 53098, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53099, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53100, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53101, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53102, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53103, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53104, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53105, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 } }));
    AbsoluteDate t0 = new AbsoluteDate(new DateComponents(2004, 04, 06), new TimeComponents(07, 51, 28.386009), TimeScalesFactory.getUTC());
    // Positions LEO
    Frame itrfA = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
    PVCoordinates pvITRF = new PVCoordinates(new Vector3D(-1033479.3830, 7901295.2754, 6380356.5958), new Vector3D(-3225.636520, -2872.451450, 5531.924446));
    // Reference coordinates
    PVCoordinates pvGcrfIau2000A = new PVCoordinates(new Vector3D(5102508.9579, 6123011.4038, 6378136.9252), new Vector3D(-4743.220156, 790.536497, 5533.755728));
    checkPV(pvGcrfIau2000A, itrfA.getTransformTo(FramesFactory.getGCRF(), t0).transformPVCoordinates(pvITRF), 0.0192, 2.15e-5);
    PVCoordinates pvEME2000EqA = new PVCoordinates(new Vector3D(5102509.0383, 6123011.9758, 6378136.3118), new Vector3D(-4743.219766, 790.536344, 5533.756084));
    checkPV(pvEME2000EqA, itrfA.getTransformTo(FramesFactory.getEME2000(), t0).transformPVCoordinates(pvITRF), 0.0191, 2.13e-5);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) TimeComponents(org.orekit.time.TimeComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 83 with TimeComponents

use of org.orekit.time.TimeComponents in project Orekit by CS-SI.

the class ITRFProviderWithoutTidalEffectsTest method testMSLIBTransformJ2000_TerRef.

@Test
public void testMSLIBTransformJ2000_TerRef() throws OrekitException {
    AbsoluteDate t0 = new AbsoluteDate(new DateComponents(2003, 10, 14), new TimeComponents(02, 00, 00), TimeScalesFactory.getUTC());
    Frame itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
    Transform trans = FramesFactory.getEME2000().getTransformTo(itrf, t0);
    // Coordinates in EME2000
    PVCoordinates pvEME2000 = new PVCoordinates(new Vector3D(6500000.0, -1234567.0, 4000000.0), new Vector3D(3609.28229, 3322.88979, -7083.950661));
    // Reference coordinates in ITRF
    PVCoordinates pvRef = new PVCoordinates(new Vector3D(3011113.971820046, -5889827.854375269, 4002158.938875904), new Vector3D(4410.393506651586, -1033.61784235127, -7082.633883124906));
    // tests using direct transform
    checkPV(pvRef, trans.transformPVCoordinates(pvEME2000), 0.594, 1.79e-4);
    // compute local evolution using finite differences
    double h = 1.0;
    Rotation r0 = trans.getRotation();
    AbsoluteDate date = t0.shiftedBy(-2 * h);
    Rotation evoM2h = FramesFactory.getEME2000().getTransformTo(itrf, date).getRotation().compose(r0.revert(), RotationConvention.VECTOR_OPERATOR);
    double alphaM2h = -evoM2h.getAngle();
    Vector3D axisM2h = evoM2h.getAxis(RotationConvention.VECTOR_OPERATOR);
    date = t0.shiftedBy(-h);
    Rotation evoM1h = FramesFactory.getEME2000().getTransformTo(itrf, date).getRotation().compose(r0.revert(), RotationConvention.VECTOR_OPERATOR);
    double alphaM1h = -evoM1h.getAngle();
    Vector3D axisM1h = evoM1h.getAxis(RotationConvention.VECTOR_OPERATOR);
    date = t0.shiftedBy(h);
    Rotation evoP1h = FramesFactory.getEME2000().getTransformTo(itrf, date).getRotation().compose(r0.revert(), RotationConvention.VECTOR_OPERATOR);
    double alphaP1h = evoP1h.getAngle();
    Vector3D axisP1h = evoP1h.getAxis(RotationConvention.VECTOR_OPERATOR).negate();
    date = t0.shiftedBy(2 * h);
    Rotation evoP2h = FramesFactory.getEME2000().getTransformTo(itrf, date).getRotation().compose(r0.revert(), RotationConvention.VECTOR_OPERATOR);
    double alphaP2h = evoP2h.getAngle();
    Vector3D axisP2h = evoP2h.getAxis(RotationConvention.VECTOR_OPERATOR).negate();
    double w = (8 * (alphaP1h - alphaM1h) - (alphaP2h - alphaM2h)) / (12 * h);
    Vector3D axis = axisM2h.add(axisM1h).add(axisP1h.add(axisP2h)).normalize();
    Transform finiteDiffTransform = new Transform(t0, trans.getRotation(), new Vector3D(w, axis));
    checkPV(pvRef, finiteDiffTransform.transformPVCoordinates(pvEME2000), 0.594, 1.78e-4);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) TimeComponents(org.orekit.time.TimeComponents) Rotation(org.hipparchus.geometry.euclidean.threed.Rotation) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 84 with TimeComponents

use of org.orekit.time.TimeComponents in project Orekit by CS-SI.

the class ITRFProviderWithoutTidalEffectsTest method testRoughRotation.

@Test
public void testRoughRotation() throws OrekitException {
    AbsoluteDate date1 = new AbsoluteDate(new DateComponents(2006, 02, 24), new TimeComponents(15, 38, 00), TimeScalesFactory.getUTC());
    Frame itrf2008 = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
    Transform t0 = itrf2008.getTransformTo(FramesFactory.getEME2000(), date1);
    double dt = 10.0;
    AbsoluteDate date2 = date1.shiftedBy(dt);
    Transform t1 = itrf2008.getTransformTo(FramesFactory.getEME2000(), date2);
    Transform evolution = new Transform(date2, t0.getInverse(), t1);
    Vector3D p = new Vector3D(6000, 6000, 0);
    Assert.assertEquals(0.0, evolution.transformPosition(Vector3D.ZERO).getNorm(), 1.0e-15);
    Assert.assertEquals(0.0, evolution.transformVector(p).getZ(), 0.003);
    Assert.assertEquals(2 * FastMath.PI * dt / 86164, Vector3D.angle(t0.transformVector(p), t1.transformVector(p)), 1.0e-9);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) DateComponents(org.orekit.time.DateComponents) TimeComponents(org.orekit.time.TimeComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Example 85 with TimeComponents

use of org.orekit.time.TimeComponents in project Orekit by CS-SI.

the class TIRFProviderTest method testAASReferenceLEO.

@Test
public void testAASReferenceLEO() 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
    // Reference position & velocity from : "Fundamentals of Astrodynamics and Applications", Third edition, David A. Vallado
    Utils.setLoaders(IERSConventions.IERS_2010, Utils.buildEOPList(IERSConventions.IERS_2010, ITRFVersion.ITRF_2008, new double[][] { { 53098, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53099, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53100, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53101, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53102, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53103, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53104, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 }, { 53105, -0.4399619, 0.0015563, -0.140682, 0.333309, Double.NaN, Double.NaN, -0.000199, -0.000252 } }));
    AbsoluteDate t0 = new AbsoluteDate(new DateComponents(2004, 04, 06), new TimeComponents(07, 51, 28.386009), TimeScalesFactory.getUTC());
    // Positions LEO
    Frame itrfA = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
    PVCoordinates pvITRF = new PVCoordinates(new Vector3D(-1033479.3830, 7901295.2754, 6380356.5958), new Vector3D(-3225.636520, -2872.451450, 5531.924446));
    // Reference coordinates
    Frame tirf = FramesFactory.getTIRF(IERSConventions.IERS_2010);
    PVCoordinates pvTIRF = new PVCoordinates(new Vector3D(-1033475.0312, 7901305.5856, 6380344.5328), new Vector3D(-3225.632747, -2872.442511, 5531.931288));
    checkPV(pvTIRF, itrfA.getTransformTo(tirf, t0).transformPVCoordinates(pvITRF), 6.379e-5, 3.78e-7);
    Frame cirf = FramesFactory.getCIRF(IERSConventions.IERS_2010, true);
    PVCoordinates pvCIRF = new PVCoordinates(new Vector3D(5100018.4047, 6122786.3648, 6380344.5328), new Vector3D(-4745.380330, 790.341453, 5531.931288));
    checkPV(pvCIRF, tirf.getTransformTo(cirf, t0).transformPVCoordinates(pvTIRF), 8.59e-3, 4.65e-6);
}
Also used : Vector3D(org.hipparchus.geometry.euclidean.threed.Vector3D) PVCoordinates(org.orekit.utils.PVCoordinates) DateComponents(org.orekit.time.DateComponents) TimeComponents(org.orekit.time.TimeComponents) AbsoluteDate(org.orekit.time.AbsoluteDate) Test(org.junit.Test)

Aggregations

TimeComponents (org.orekit.time.TimeComponents)88 DateComponents (org.orekit.time.DateComponents)87 AbsoluteDate (org.orekit.time.AbsoluteDate)84 Test (org.junit.Test)72 KeplerianOrbit (org.orekit.orbits.KeplerianOrbit)55 FieldAbsoluteDate (org.orekit.time.FieldAbsoluteDate)55 Vector3D (org.hipparchus.geometry.euclidean.threed.Vector3D)47 Orbit (org.orekit.orbits.Orbit)44 SpacecraftState (org.orekit.propagation.SpacecraftState)42 CartesianOrbit (org.orekit.orbits.CartesianOrbit)35 FieldKeplerianOrbit (org.orekit.orbits.FieldKeplerianOrbit)35 FieldSpacecraftState (org.orekit.propagation.FieldSpacecraftState)32 AbstractLegacyForceModelTest (org.orekit.forces.AbstractLegacyForceModelTest)28 PVCoordinates (org.orekit.utils.PVCoordinates)24 EquinoctialOrbit (org.orekit.orbits.EquinoctialOrbit)22 FieldVector3D (org.hipparchus.geometry.euclidean.threed.FieldVector3D)17 Rotation (org.hipparchus.geometry.euclidean.threed.Rotation)17 NumericalPropagator (org.orekit.propagation.numerical.NumericalPropagator)17 CircularOrbit (org.orekit.orbits.CircularOrbit)16 FieldNumericalPropagator (org.orekit.propagation.numerical.FieldNumericalPropagator)16