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);
}
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);
}
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);
}
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);
}
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);
}
Aggregations