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

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

Introduction

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

Prototype

Vector3D ZERO

To view the source code for org.apache.commons.math3.geometry.euclidean.threed Vector3D ZERO.

Click Source Link

Document

Null vector (coordinates: 0, 0, 0).

Usage

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

    }
}