Example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D subtract

List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D subtract

Introduction

In this page you can find the example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D subtract.

Prototype

public Vector3D subtract(final Vector<Euclidean3D> v) 

Source Link

Usage

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*/
}