List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D ZERO
Vector3D ZERO
To view the source code for org.apache.commons.math3.geometry.euclidean.threed Vector3D ZERO.
Click Source Link
From source file:org.orekit.utils.TimeStampedAngularCoordinatesTest.java
@Test public void testInterpolationWithoutAcceleration() throws OrekitException { AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH; double alpha0 = 0.5 * FastMath.PI; double omega = 0.05 * FastMath.PI; final TimeStampedAngularCoordinates reference = new TimeStampedAngularCoordinates(date, new Rotation(Vector3D.PLUS_K, alpha0), new Vector3D(omega, Vector3D.MINUS_K), Vector3D.ZERO); double[] errors = interpolationErrors(reference, 1.0); Assert.assertEquals(0.0, errors[0], 1.0e-15); Assert.assertEquals(0.0, errors[1], 3.0e-15); Assert.assertEquals(0.0, errors[2], 3.0e-14); }
From source file:org.orekit.utils.TimeStampedAngularCoordinatesTest.java
@Test public void testInterpolationNeedOffsetWrongRate() throws OrekitException { AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH; double omega = 2.0 * FastMath.PI; TimeStampedAngularCoordinates reference = new TimeStampedAngularCoordinates(date, Rotation.IDENTITY, new Vector3D(omega, Vector3D.MINUS_K), Vector3D.ZERO); List<TimeStampedAngularCoordinates> sample = new ArrayList<TimeStampedAngularCoordinates>(); for (double dt : new double[] { 0.0, 0.25, 0.5, 0.75, 1.0 }) { TimeStampedAngularCoordinates shifted = reference.shiftedBy(dt); sample.add(new TimeStampedAngularCoordinates(shifted.getDate(), shifted.getRotation(), Vector3D.ZERO, Vector3D.ZERO));/* w ww. j a v a2 s. com*/ } for (TimeStampedAngularCoordinates s : sample) { TimeStampedAngularCoordinates interpolated = TimeStampedAngularCoordinates.interpolate(s.getDate(), AngularDerivativesFilter.USE_RR, sample); Rotation r = interpolated.getRotation(); Vector3D rate = interpolated.getRotationRate(); Assert.assertEquals(0.0, Rotation.distance(s.getRotation(), r), 2.0e-14); Assert.assertEquals(0.0, Vector3D.distance(s.getRotationRate(), rate), 2.0e-13); } }
From source file:org.orekit.utils.TimeStampedAngularCoordinatesTest.java
@Test public void testInterpolationRotationOnly() throws OrekitException { AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH; double alpha0 = 0.5 * FastMath.PI; double omega = 0.5 * FastMath.PI; TimeStampedAngularCoordinates reference = new TimeStampedAngularCoordinates(date, new Rotation(Vector3D.PLUS_K, alpha0), new Vector3D(omega, Vector3D.MINUS_K), Vector3D.ZERO); List<TimeStampedAngularCoordinates> sample = new ArrayList<TimeStampedAngularCoordinates>(); for (double dt : new double[] { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 }) { Rotation r = reference.shiftedBy(dt).getRotation(); sample.add(new TimeStampedAngularCoordinates(date.shiftedBy(dt), r, Vector3D.ZERO, Vector3D.ZERO)); }/*from www .j a v a 2 s . com*/ for (double dt = 0; dt < 1.0; dt += 0.001) { TimeStampedAngularCoordinates interpolated = TimeStampedAngularCoordinates .interpolate(date.shiftedBy(dt), AngularDerivativesFilter.USE_R, sample); Rotation r = interpolated.getRotation(); Vector3D rate = interpolated.getRotationRate(); Assert.assertEquals(0.0, Rotation.distance(reference.shiftedBy(dt).getRotation(), r), 3.0e-4); Assert.assertEquals(0.0, Vector3D.distance(reference.shiftedBy(dt).getRotationRate(), rate), 1.0e-2); } }
From source file:org.orekit.utils.TimeStampedAngularCoordinatesTest.java
@Test public void testInterpolationTooSmallSample() throws OrekitException { AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH; double alpha0 = 0.5 * FastMath.PI; double omega = 0.5 * FastMath.PI; TimeStampedAngularCoordinates reference = new TimeStampedAngularCoordinates(date, new Rotation(Vector3D.PLUS_K, alpha0), new Vector3D(omega, Vector3D.MINUS_K), Vector3D.ZERO); List<TimeStampedAngularCoordinates> sample = new ArrayList<TimeStampedAngularCoordinates>(); Rotation r = reference.shiftedBy(0.2).getRotation(); sample.add(new TimeStampedAngularCoordinates(date.shiftedBy(0.2), r, Vector3D.ZERO, Vector3D.ZERO)); try {/*from ww w. j a v a 2 s.c om*/ TimeStampedAngularCoordinates.interpolate(date.shiftedBy(0.3), AngularDerivativesFilter.USE_R, sample); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.NOT_ENOUGH_DATA_FOR_INTERPOLATION, oe.getSpecifier()); Assert.assertEquals(1, ((Integer) oe.getParts()[0]).intValue()); } }
From source file:org.orekit.utils.TimeStampedAngularCoordinatesTest.java
@Test public void testInterpolationGTODIssue() throws OrekitException { AbsoluteDate t0 = new AbsoluteDate("2004-04-06T19:59:28.000", TimeScalesFactory.getTAI()); double[][] params = new double[][] { { 0.0, -0.3802356750911964, -0.9248896320037013, 7.292115030462892e-5 }, { 4.0, 0.1345716955788532, -0.990903859488413, 7.292115033301528e-5 }, { 8.0, -0.613127541102373, 0.7899839354960061, 7.292115037371062e-5 } }; List<TimeStampedAngularCoordinates> sample = new ArrayList<TimeStampedAngularCoordinates>(); for (double[] row : params) { AbsoluteDate t = t0.shiftedBy(row[0] * 3600.0); Rotation r = new Rotation(row[1], 0.0, 0.0, row[2], false); Vector3D o = new Vector3D(row[3], Vector3D.PLUS_K); sample.add(new TimeStampedAngularCoordinates(t, r, o, Vector3D.ZERO)); }//from w w w . j a v a2 s.com for (double dt = 0; dt < 29000; dt += 120) { TimeStampedAngularCoordinates shifted = sample.get(0).shiftedBy(dt); TimeStampedAngularCoordinates interpolated = TimeStampedAngularCoordinates.interpolate(t0.shiftedBy(dt), AngularDerivativesFilter.USE_RR, sample); Assert.assertEquals(0.0, Rotation.distance(shifted.getRotation(), interpolated.getRotation()), 1.3e-7); Assert.assertEquals(0.0, Vector3D.distance(shifted.getRotationRate(), interpolated.getRotationRate()), 1.0e-11); } }
From source file:org.orekit.utils.TimeStampedPVCoordinates.java
/** * Build from position and velocity. Acceleration is set to zero. * * @param date coordinates date//from w w w .j a v a2 s. co m * @param position the position vector (m) * @param velocity the velocity vector (m/s) */ public TimeStampedPVCoordinates(final AbsoluteDate date, final Vector3D position, final Vector3D velocity) { this(date, position, velocity, Vector3D.ZERO); }
From source file:org.orekit.utils.TimeStampedPVCoordinatesTest.java
@Test public void testPVOnlyConstructor() { //setup//from w ww . jav a 2 s. c o m AbsoluteDate date = AbsoluteDate.J2000_EPOCH; Vector3D p = new Vector3D(1, 2, 3); Vector3D v = new Vector3D(4, 5, 6); //action TimeStampedPVCoordinates actual = new TimeStampedPVCoordinates(date, p, v); //verify Assert.assertEquals(date, actual.getDate()); Assert.assertEquals(1, actual.getPosition().getX(), 0); Assert.assertEquals(2, actual.getPosition().getY(), 0); Assert.assertEquals(3, actual.getPosition().getZ(), 0); Assert.assertEquals(4, actual.getVelocity().getX(), 0); Assert.assertEquals(5, actual.getVelocity().getY(), 0); Assert.assertEquals(6, actual.getVelocity().getZ(), 0); Assert.assertEquals(Vector3D.ZERO, actual.getAcceleration()); }
From source file:org.orekit.utils.TimeStampedPVCoordinatesTest.java
@Test public void testPVCoordinatesCopyConstructor() { //setup//www .jav a 2 s . c om AbsoluteDate date = AbsoluteDate.J2000_EPOCH; PVCoordinates pv = new PVCoordinates(new Vector3D(1, 2, 3), new Vector3D(4, 5, 6)); //action TimeStampedPVCoordinates actual = new TimeStampedPVCoordinates(date, pv); //verify Assert.assertEquals(date, actual.getDate()); Assert.assertEquals(1, actual.getPosition().getX(), 0); Assert.assertEquals(2, actual.getPosition().getY(), 0); Assert.assertEquals(3, actual.getPosition().getZ(), 0); Assert.assertEquals(4, actual.getVelocity().getX(), 0); Assert.assertEquals(5, actual.getVelocity().getY(), 0); Assert.assertEquals(6, actual.getVelocity().getZ(), 0); Assert.assertEquals(Vector3D.ZERO, actual.getAcceleration()); }
From source file:org.orekit.utils.TimeStampedPVCoordinatesTest.java
@Test public void testInterpolatePolynomialPV() { Random random = new Random(0xae7771c9933407bdl); AbsoluteDate t0 = AbsoluteDate.J2000_EPOCH; for (int i = 0; i < 20; ++i) { PolynomialFunction px = randomPolynomial(5, random); PolynomialFunction py = randomPolynomial(5, random); PolynomialFunction pz = randomPolynomial(5, random); PolynomialFunction pxDot = px.polynomialDerivative(); PolynomialFunction pyDot = py.polynomialDerivative(); PolynomialFunction pzDot = pz.polynomialDerivative(); PolynomialFunction pxDotDot = pxDot.polynomialDerivative(); PolynomialFunction pyDotDot = pyDot.polynomialDerivative(); PolynomialFunction pzDotDot = pzDot.polynomialDerivative(); List<TimeStampedPVCoordinates> sample = new ArrayList<TimeStampedPVCoordinates>(); for (double dt : new double[] { 0.0, 0.5, 1.0 }) { Vector3D position = new Vector3D(px.value(dt), py.value(dt), pz.value(dt)); Vector3D velocity = new Vector3D(pxDot.value(dt), pyDot.value(dt), pzDot.value(dt)); sample.add(new TimeStampedPVCoordinates(t0.shiftedBy(dt), position, velocity, Vector3D.ZERO)); }//from w w w . ja v a 2s . co m for (double dt = 0; dt < 1.0; dt += 0.01) { TimeStampedPVCoordinates interpolated = TimeStampedPVCoordinates.interpolate(t0.shiftedBy(dt), CartesianDerivativesFilter.USE_PV, sample); Vector3D p = interpolated.getPosition(); Vector3D v = interpolated.getVelocity(); Vector3D a = interpolated.getAcceleration(); Assert.assertEquals(px.value(dt), p.getX(), 4.0e-16 * p.getNorm()); Assert.assertEquals(py.value(dt), p.getY(), 4.0e-16 * p.getNorm()); Assert.assertEquals(pz.value(dt), p.getZ(), 4.0e-16 * p.getNorm()); Assert.assertEquals(pxDot.value(dt), v.getX(), 9.0e-16 * v.getNorm()); Assert.assertEquals(pyDot.value(dt), v.getY(), 9.0e-16 * v.getNorm()); Assert.assertEquals(pzDot.value(dt), v.getZ(), 9.0e-16 * v.getNorm()); Assert.assertEquals(pxDotDot.value(dt), a.getX(), 1.0e-14 * a.getNorm()); Assert.assertEquals(pyDotDot.value(dt), a.getY(), 1.0e-14 * a.getNorm()); Assert.assertEquals(pzDotDot.value(dt), a.getZ(), 1.0e-14 * a.getNorm()); } } }
From source file:org.orekit.utils.TimeStampedPVCoordinatesTest.java
@Test public void testInterpolatePolynomialPositionOnly() { Random random = new Random(0x88740a12e4299003l); AbsoluteDate t0 = AbsoluteDate.J2000_EPOCH; for (int i = 0; i < 20; ++i) { PolynomialFunction px = randomPolynomial(5, random); PolynomialFunction py = randomPolynomial(5, random); PolynomialFunction pz = randomPolynomial(5, random); PolynomialFunction pxDot = px.polynomialDerivative(); PolynomialFunction pyDot = py.polynomialDerivative(); PolynomialFunction pzDot = pz.polynomialDerivative(); PolynomialFunction pxDotDot = pxDot.polynomialDerivative(); PolynomialFunction pyDotDot = pyDot.polynomialDerivative(); PolynomialFunction pzDotDot = pzDot.polynomialDerivative(); List<TimeStampedPVCoordinates> sample = new ArrayList<TimeStampedPVCoordinates>(); for (double dt : new double[] { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 }) { Vector3D position = new Vector3D(px.value(dt), py.value(dt), pz.value(dt)); sample.add(new TimeStampedPVCoordinates(t0.shiftedBy(dt), position, Vector3D.ZERO, Vector3D.ZERO)); }/*w ww . ja v a 2 s. com*/ for (double dt = 0; dt < 1.0; dt += 0.01) { TimeStampedPVCoordinates interpolated = TimeStampedPVCoordinates.interpolate(t0.shiftedBy(dt), CartesianDerivativesFilter.USE_P, sample); Vector3D p = interpolated.getPosition(); Vector3D v = interpolated.getVelocity(); Vector3D a = interpolated.getAcceleration(); Assert.assertEquals(px.value(dt), p.getX(), 5.0e-16 * p.getNorm()); Assert.assertEquals(py.value(dt), p.getY(), 5.0e-16 * p.getNorm()); Assert.assertEquals(pz.value(dt), p.getZ(), 5.0e-16 * p.getNorm()); Assert.assertEquals(pxDot.value(dt), v.getX(), 7.0e-15 * v.getNorm()); Assert.assertEquals(pyDot.value(dt), v.getY(), 7.0e-15 * v.getNorm()); Assert.assertEquals(pzDot.value(dt), v.getZ(), 7.0e-15 * v.getNorm()); Assert.assertEquals(pxDotDot.value(dt), a.getX(), 2.0e-13 * a.getNorm()); Assert.assertEquals(pyDotDot.value(dt), a.getY(), 2.0e-13 * a.getNorm()); Assert.assertEquals(pzDotDot.value(dt), a.getZ(), 2.0e-13 * a.getNorm()); } } }