List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D subtract
public Vector3D subtract(final Vector<Euclidean3D> v)
From source file:org.orekit.frames.HelmertTransformationTest.java
@Test public void testHelmert20002005() throws OrekitException { Frame itrf2008 = FramesFactory.getITRF(IERSConventions.IERS_2010, true); Frame itrf2000 = HelmertTransformation.Predefined.ITRF_2008_TO_ITRF_2000.createTransformedITRF(itrf2008, "2000"); Frame itrf2005 = HelmertTransformation.Predefined.ITRF_2008_TO_ITRF_2005.createTransformedITRF(itrf2008, "2005"); Vector3D pos2000 = new Vector3D(1234567.8, 2345678.9, 3456789.0); // check the Helmert transformation as per http://itrf.ign.fr/ITRF_solutions/2005/tp_05-00.php AbsoluteDate date = AbsoluteDate.J2000_EPOCH; Vector3D pos2005 = itrf2000.getTransformTo(itrf2005, date).transformPosition(pos2000); Vector3D generalOffset = pos2000.subtract(pos2005); Vector3D linearOffset = computeOffsetLinearly(0.1, -0.8, -5.8, 0.000, 0.000, 0.000, -0.2, 0.1, -1.8, 0.000, 0.000, 0.000, pos2000, 0.0); Vector3D error = generalOffset.subtract(linearOffset); Assert.assertEquals(0.0, error.getNorm(), FastMath.ulp(pos2000.getNorm())); date = date.shiftedBy(Constants.JULIAN_YEAR); pos2005 = itrf2000.getTransformTo(itrf2005, date).transformPosition(pos2000); generalOffset = pos2000.subtract(pos2005); linearOffset = computeOffsetLinearly(0.1, -0.8, -5.8, 0.000, 0.000, 0.000, -0.2, 0.1, -1.8, 0.000, 0.000, 0.000, pos2000, 1.0);/* w w w .j av a2 s. c om*/ error = generalOffset.subtract(linearOffset); Assert.assertEquals(0.0, error.getNorm(), FastMath.ulp(pos2000.getNorm())); }
From source file:org.orekit.frames.HelmertTransformationTest.java
@Test public void testHelmert19972000() throws OrekitException { Frame itrf2008 = FramesFactory.getITRF(IERSConventions.IERS_2010, true); Frame itrf2000 = HelmertTransformation.Predefined.ITRF_2008_TO_ITRF_2000.createTransformedITRF(itrf2008, "2000"); Frame itrf97 = HelmertTransformation.Predefined.ITRF_2008_TO_ITRF_97.createTransformedITRF(itrf2008, "97"); Vector3D pos97 = new Vector3D(1234567.8, 2345678.9, 3456789.0); // check the Helmert transformation as per ftp://itrf.ensg.ign.fr/pub/itrf/ITRF.TP AbsoluteDate date = new AbsoluteDate(1997, 1, 1, 12, 0, 0, TimeScalesFactory.getTT()); Vector3D pos2000 = itrf97.getTransformTo(itrf2000, date).transformPosition(pos97); Vector3D generalOffset = pos97.subtract(pos2000); Vector3D linearOffset = computeOffsetLinearly(6.7, 6.1, -18.5, 0.000, 0.000, 0.000, 0.0, -0.6, -1.4, 0.000, 0.000, 0.002, pos2000, 0.0); Vector3D error = generalOffset.subtract(linearOffset); Assert.assertEquals(0.0, error.getNorm(), 2.0e-11 * pos97.getNorm()); date = date.shiftedBy(Constants.JULIAN_YEAR); pos2000 = itrf97.getTransformTo(itrf2000, date).transformPosition(pos97); generalOffset = pos97.subtract(pos2000); linearOffset = computeOffsetLinearly(6.7, 6.1, -18.5, 0.000, 0.000, 0.000, 0.0, -0.6, -1.4, 0.000, 0.000, 0.002, pos2000, 1.0);//from w w w . ja v a 2 s . com error = generalOffset.subtract(linearOffset); Assert.assertEquals(0.0, error.getNorm(), 6.0e-11 * pos97.getNorm()); }
From source file:org.orekit.frames.HelmertTransformationTest.java
@Test public void testHelmert19932000() throws OrekitException { Frame itrf2008 = FramesFactory.getITRF(IERSConventions.IERS_2010, true); Frame itrf2000 = HelmertTransformation.Predefined.ITRF_2008_TO_ITRF_2000.createTransformedITRF(itrf2008, "2000"); Frame itrf93 = HelmertTransformation.Predefined.ITRF_2008_TO_ITRF_93.createTransformedITRF(itrf2008, "93"); Vector3D pos93 = new Vector3D(1234567.8, 2345678.9, 3456789.0); // check the Helmert transformation as per ftp://itrf.ensg.ign.fr/pub/itrf/ITRF.TP AbsoluteDate date = new AbsoluteDate(1988, 1, 1, 12, 0, 0, TimeScalesFactory.getTT()); Vector3D pos2000 = itrf93.getTransformTo(itrf2000, date).transformPosition(pos93); Vector3D generalOffset = pos93.subtract(pos2000); Vector3D linearOffset = computeOffsetLinearly(12.7, 6.5, -20.9, -0.39, 0.80, -1.14, -2.9, -0.2, -0.6, -0.11, -0.19, 0.07, pos2000, 0.0);/*from w ww. j a va2 s . com*/ Vector3D error = generalOffset.subtract(linearOffset); Assert.assertEquals(0.0, error.getNorm(), FastMath.ulp(pos93.getNorm())); date = date.shiftedBy(Constants.JULIAN_YEAR); pos2000 = itrf93.getTransformTo(itrf2000, date).transformPosition(pos93); generalOffset = pos93.subtract(pos2000); linearOffset = computeOffsetLinearly(12.7, 6.5, -20.9, -0.39, 0.80, -1.14, -2.9, -0.2, -0.6, -0.11, -0.19, 0.07, pos2000, 1.0); error = generalOffset.subtract(linearOffset); Assert.assertEquals(0.0, error.getNorm(), FastMath.ulp(pos93.getNorm())); }
From source file:org.orekit.frames.LocalOrbitalFrameTest.java
private void checkFrame(LOFType type, AbsoluteDate date, Vector3D expectedXDirection, Vector3D expectedYDirection, Vector3D expectedZDirection, Vector3D expectedRotationDirection) throws OrekitException { LocalOrbitalFrame lof = new LocalOrbitalFrame(FramesFactory.getGCRF(), type, provider, type.name()); Transform t = lof.getTransformTo(FramesFactory.getGCRF(), date); PVCoordinates pv1 = t.transformPVCoordinates(PVCoordinates.ZERO); Vector3D p1 = pv1.getPosition(); Vector3D v1 = pv1.getVelocity(); PVCoordinates pv2 = provider.getPVCoordinates(date, FramesFactory.getGCRF()); Vector3D p2 = pv2.getPosition(); Vector3D v2 = pv2.getVelocity(); Assert.assertEquals(0, p1.subtract(p2).getNorm(), 1.0e-14 * p1.getNorm()); Assert.assertEquals(0, v1.subtract(v2).getNorm(), 1.0e-14 * v1.getNorm()); Vector3D xDirection = t.transformVector(Vector3D.PLUS_I); Vector3D yDirection = t.transformVector(Vector3D.PLUS_J); Vector3D zDirection = t.transformVector(Vector3D.PLUS_K); Assert.assertEquals(0, Vector3D.angle(expectedXDirection, xDirection), 2.0e-15); Assert.assertEquals(0, Vector3D.angle(expectedYDirection, yDirection), 1.0e-15); Assert.assertEquals(0, Vector3D.angle(expectedZDirection, zDirection), 1.0e-15); Assert.assertEquals(0, Vector3D.angle(expectedRotationDirection, t.getRotationRate()), 1.0e-15); Assert.assertEquals(initialOrbit.getKeplerianMeanMotion(), t.getRotationRate().getNorm(), 1.0e-7); }
From source file:org.orekit.frames.SpacecraftFrameTest.java
@Test public void testPropagator() throws OrekitException { AbsoluteDate stopDate = iniDate.shiftedBy(1000.0); PVCoordinates pv0 = scFrame.getPropagator().propagate(stopDate).getPVCoordinates(); Vector3D p0 = pv0.getPosition(); Vector3D v0 = pv0.getVelocity(); PVCoordinates pv1 = scFrame.getPVCoordinates(stopDate, eme2000); Vector3D p1 = pv1.getPosition(); Vector3D v1 = pv0.getVelocity(); Assert.assertEquals(0, p1.subtract(p0).getNorm(), Utils.epsilonTest); Assert.assertEquals(0, v1.subtract(v0).getNorm(), Utils.epsilonTest); }
From source file:org.orekit.frames.Transform.java
/** Get the inverse transform of the instance. * @return inverse transform of the instance *///from w w w . j ava2 s . c om public Transform getInverse() { final Rotation r = angular.getRotation(); final Vector3D o = angular.getRotationRate(); final Vector3D oDot = angular.getRotationAcceleration(); final Vector3D rp = r.applyTo(cartesian.getPosition()); final Vector3D rv = r.applyTo(cartesian.getVelocity()); final Vector3D ra = r.applyTo(cartesian.getAcceleration()); final Vector3D pInv = rp.negate(); final Vector3D crossP = Vector3D.crossProduct(o, rp); final Vector3D vInv = crossP.subtract(rv); final Vector3D crossV = Vector3D.crossProduct(o, rv); final Vector3D crossDotP = Vector3D.crossProduct(oDot, rp); final Vector3D crossCrossP = Vector3D.crossProduct(o, crossP); final Vector3D aInv = new Vector3D(-1, ra, 2, crossV, 1, crossDotP, -1, crossCrossP); return new Transform(date, new PVCoordinates(pInv, vInv, aInv), angular.revert()); }
From source file:org.orekit.frames.TransformTest.java
@Test public void testSimpleComposition() { Transform transform = new Transform(AbsoluteDate.J2000_EPOCH, new Transform(AbsoluteDate.J2000_EPOCH, new Rotation(Vector3D.PLUS_K, 0.5 * FastMath.PI)), new Transform(AbsoluteDate.J2000_EPOCH, Vector3D.PLUS_I)); Vector3D u = transform.transformPosition(new Vector3D(1.0, 1.0, 1.0)); Vector3D v = new Vector3D(0.0, 1.0, 1.0); Assert.assertEquals(0, u.subtract(v).getNorm(), 1.0e-15); }
From source file:org.orekit.frames.TransformTest.java
@Test public void testTranslation() { RandomGenerator rnd = new Well19937a(0x7e9d737ba4147787l); for (int i = 0; i < 10; ++i) { Vector3D delta = randomVector(1.0e3, rnd); Transform transform = new Transform(AbsoluteDate.J2000_EPOCH, delta); for (int j = 0; j < 10; ++j) { Vector3D a = new Vector3D(rnd.nextDouble(), rnd.nextDouble(), rnd.nextDouble()); Vector3D b = transform.transformVector(a); Assert.assertEquals(0, b.subtract(a).getNorm(), 1.0e-15); Vector3D c = transform.transformPosition(a); Assert.assertEquals(0, c.subtract(a).subtract(delta).getNorm(), 1.0e-14); }/*from w w w . j a v a 2 s.co m*/ } }
From source file:org.orekit.frames.TransformTest.java
@Test public void testRotation() { RandomGenerator rnd = new Well19937a(0x73d5554d99427af0l); for (int i = 0; i < 10; ++i) { Rotation r = randomRotation(rnd); Vector3D axis = r.getAxis(); double angle = r.getAngle(); Transform transform = new Transform(AbsoluteDate.J2000_EPOCH, r); for (int j = 0; j < 10; ++j) { Vector3D a = new Vector3D(rnd.nextDouble(), rnd.nextDouble(), rnd.nextDouble()); Vector3D b = transform.transformVector(a); Assert.assertEquals(Vector3D.angle(axis, a), Vector3D.angle(axis, b), 1.0e-14); Vector3D aOrtho = Vector3D.crossProduct(axis, a); Vector3D bOrtho = Vector3D.crossProduct(axis, b); Assert.assertEquals(angle, Vector3D.angle(aOrtho, bOrtho), 1.0e-14); Vector3D c = transform.transformPosition(a); Assert.assertEquals(0, c.subtract(b).getNorm(), 1.0e-14); }/*from w w w. j a va 2 s . co m*/ } }
From source file:org.orekit.frames.TransformTest.java
private void checkNoTransform(Transform transform, RandomGenerator random) { for (int i = 0; i < 100; ++i) { Vector3D a = randomVector(1.0e3, random); Vector3D tA = transform.transformVector(a); Assert.assertEquals(0, a.subtract(tA).getNorm(), 1.0e-10 * a.getNorm()); Vector3D b = randomVector(1.0e3, random); Vector3D tB = transform.transformPosition(b); Assert.assertEquals(0, b.subtract(tB).getNorm(), 1.0e-10 * a.getNorm()); PVCoordinates pv = new PVCoordinates(randomVector(1.0e3, random), randomVector(1.0, random), randomVector(1.0e-3, random)); PVCoordinates tPv = transform.transformPVCoordinates(pv); checkVector(pv.getPosition(), tPv.getPosition(), 1.0e-10); checkVector(pv.getVelocity(), tPv.getVelocity(), 3.0e-9); checkVector(pv.getAcceleration(), tPv.getAcceleration(), 3.0e-9); }/*w w w.j a v a 2s.com*/ }