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.AngularCoordinatesTest.java

@Test
public void testNoCommute() {
    AngularCoordinates ac1 = new AngularCoordinates(new Rotation(0.48, 0.64, 0.36, 0.48, false), Vector3D.ZERO);
    AngularCoordinates ac2 = new AngularCoordinates(new Rotation(0.36, -0.48, 0.48, 0.64, false),
            Vector3D.ZERO);/*from  w w  w .  j  ava 2  s  . co  m*/

    AngularCoordinates add12 = ac1.addOffset(ac2);
    AngularCoordinates add21 = ac2.addOffset(ac1);

    // the rotations are really different from each other
    Assert.assertEquals(2.574, Rotation.distance(add12.getRotation(), add21.getRotation()), 1.0e-3);

}

From source file:org.orekit.utils.AngularCoordinatesTest.java

@Test
public void testRodriguesSpecialCases() {

    // identity/*from   w  w  w  . j a v a2 s .c om*/
    double[][] identity = new AngularCoordinates(Rotation.IDENTITY, Vector3D.ZERO, Vector3D.ZERO)
            .getModifiedRodrigues(1.0);
    for (double[] row : identity) {
        for (double element : row) {
            Assert.assertEquals(0.0, element, Precision.SAFE_MIN);
        }
    }
    AngularCoordinates acId = AngularCoordinates.createFromModifiedRodrigues(identity);
    Assert.assertEquals(0.0, acId.getRotation().getAngle(), Precision.SAFE_MIN);
    Assert.assertEquals(0.0, acId.getRotationRate().getNorm(), Precision.SAFE_MIN);

    // PI angle rotation (which is singular for non-modified Rodrigues vector)
    RandomGenerator random = new Well1024a(0x2158523e6accb859l);
    for (int i = 0; i < 100; ++i) {
        Vector3D axis = randomVector(random, 1.0);
        AngularCoordinates original = new AngularCoordinates(new Rotation(axis, FastMath.PI), Vector3D.ZERO,
                Vector3D.ZERO);
        AngularCoordinates rebuilt = AngularCoordinates
                .createFromModifiedRodrigues(original.getModifiedRodrigues(1.0));
        Assert.assertEquals(FastMath.PI, rebuilt.getRotation().getAngle(), 1.0e-15);
        Assert.assertEquals(0.0, FastMath.sin(Vector3D.angle(axis, rebuilt.getRotation().getAxis())), 1.0e-15);
        Assert.assertEquals(0.0, rebuilt.getRotationRate().getNorm(), 1.0e-16);
    }

}

From source file:org.orekit.utils.AngularCoordinatesTest.java

@Test
public void testInverseCrossProducts() throws OrekitException {
    checkInverse(Vector3D.PLUS_K, Vector3D.PLUS_I, Vector3D.PLUS_J);
    checkInverse(Vector3D.ZERO, Vector3D.ZERO, Vector3D.ZERO);
    checkInverse(Vector3D.ZERO, Vector3D.ZERO, Vector3D.PLUS_J);
    checkInverse(Vector3D.PLUS_K, Vector3D.PLUS_K, Vector3D.PLUS_J);
    checkInverse(Vector3D.ZERO, Vector3D.PLUS_K, Vector3D.ZERO);
    checkInverse(Vector3D.PLUS_K, Vector3D.PLUS_I, Vector3D.PLUS_K);
    checkInverse(Vector3D.PLUS_K, Vector3D.PLUS_I, Vector3D.PLUS_I);
    checkInverse(Vector3D.PLUS_K, Vector3D.PLUS_I, new Vector3D(1, 0, -1).normalize());
    checkInverse(Vector3D.ZERO, Vector3D.PLUS_I, Vector3D.ZERO, Vector3D.PLUS_J, Vector3D.ZERO);
}

From source file:org.orekit.utils.AngularCoordinatesTest.java

@Test
public void testInverseCrossProductsFailures() {
    checkInverseFailure(Vector3D.PLUS_K, Vector3D.ZERO, Vector3D.PLUS_J, Vector3D.PLUS_I, Vector3D.PLUS_K);
    checkInverseFailure(Vector3D.PLUS_K, Vector3D.ZERO, Vector3D.ZERO, Vector3D.ZERO, Vector3D.PLUS_K);
    checkInverseFailure(Vector3D.PLUS_I, Vector3D.PLUS_I, Vector3D.ZERO, Vector3D.MINUS_I, Vector3D.PLUS_K);
    checkInverseFailure(Vector3D.PLUS_I, Vector3D.PLUS_I, Vector3D.ZERO, Vector3D.PLUS_J, Vector3D.PLUS_J);
    checkInverseFailure(Vector3D.PLUS_I, Vector3D.PLUS_I, Vector3D.PLUS_J, Vector3D.PLUS_J, Vector3D.ZERO);
    checkInverseFailure(Vector3D.PLUS_I, Vector3D.PLUS_I, Vector3D.PLUS_J, Vector3D.ZERO, Vector3D.PLUS_J);
}

From source file:org.orekit.utils.AngularCoordinatesTest.java

@Test
public void testCancellingDerivatives() throws OrekitException {
    PVCoordinates u1 = new PVCoordinates(
            new Vector3D(-0.4466591282528639, -0.009657376949231283, -0.894652087807798),
            new Vector3D(-8.897296517803556E-4, 2.7825250920407674E-4, 4.411979658413134E-4),
            new Vector3D(4.753127475302486E-7, 1.0209400376727623E-8, 9.515403756524403E-7));
    PVCoordinates u2 = new PVCoordinates(
            new Vector3D(0.23723907259910096, 0.9628700806685033, -0.1288364474275361),
            new Vector3D(-7.98741002062555E-24, 2.4979687659429984E-24, 3.9607863426704016E-24),
            new Vector3D(-3.150541868418562E-23, 9.856329862034835E-24, 1.5648124883326986E-23));
    PVCoordinates v1 = new PVCoordinates(Vector3D.PLUS_K, Vector3D.ZERO, Vector3D.ZERO);
    PVCoordinates v2 = new PVCoordinates(Vector3D.MINUS_J, Vector3D.ZERO, Vector3D.ZERO);
    AngularCoordinates ac = new AngularCoordinates(u1, u2, v1, v2, 1.0e-9);
    PVCoordinates v1Computed = ac.applyTo(u1);
    PVCoordinates v2Computed = ac.applyTo(u2);
    Assert.assertEquals(0, Vector3D.distance(v1.getPosition(), v1Computed.getPosition()), 1.0e-15);
    Assert.assertEquals(0, Vector3D.distance(v2.getPosition(), v2Computed.getPosition()), 1.0e-15);
    Assert.assertEquals(0, Vector3D.distance(v1.getVelocity(), v1Computed.getVelocity()), 1.0e-15);
    Assert.assertEquals(0, Vector3D.distance(v2.getVelocity(), v2Computed.getVelocity()), 1.0e-15);
    Assert.assertEquals(0, Vector3D.distance(v1.getAcceleration(), v1Computed.getAcceleration()), 1.0e-15);
    Assert.assertEquals(0, Vector3D.distance(v2.getAcceleration(), v2Computed.getAcceleration()), 1.0e-15);
}

From source file:org.orekit.utils.AngularCoordinatesTest.java

@Test
@Deprecated // to be removed when AngularCoordinates.interpolate is removed
public void testInterpolationSimple() throws OrekitException {
    AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH;
    double alpha0 = 0.5 * FastMath.PI;
    double omega = 0.5 * FastMath.PI;
    AngularCoordinates reference = new AngularCoordinates(new Rotation(Vector3D.PLUS_K, alpha0),
            new Vector3D(omega, Vector3D.MINUS_K), Vector3D.ZERO);

    List<Pair<AbsoluteDate, AngularCoordinates>> sample = new ArrayList<Pair<AbsoluteDate, AngularCoordinates>>();
    for (double dt : new double[] { 0.0, 0.5, 1.0 }) {
        sample.add(new Pair<AbsoluteDate, AngularCoordinates>(date.shiftedBy(dt), reference.shiftedBy(dt)));
    }//from  w  w w.  j  av  a2  s .c  o  m

    for (double dt = 0; dt < 1.0; dt += 0.001) {
        AngularCoordinates interpolated = AngularCoordinates.interpolate(date.shiftedBy(dt), true, sample);
        Rotation r = interpolated.getRotation();
        Vector3D rate = interpolated.getRotationRate();
        Vector3D acceleration = interpolated.getRotationAcceleration();
        Assert.assertEquals(0.0, Rotation.distance(new Rotation(Vector3D.PLUS_K, alpha0 + omega * dt), r),
                1.1e-15);
        Assert.assertEquals(0.0, Vector3D.distance(new Vector3D(omega, Vector3D.MINUS_K), rate), 4.0e-15);
        Assert.assertEquals(0.0, Vector3D.distance(Vector3D.ZERO, acceleration), 3.0e-14);
    }

}

From source file:org.orekit.utils.PVCoordinates.java

/** Simple constructor.
 * <p> Set the Coordinates to default : (0 0 0), (0 0 0), (0 0 0).</p>
 *//*from   ww  w. j  a v a2 s  .c om*/
public PVCoordinates() {
    position = Vector3D.ZERO;
    velocity = Vector3D.ZERO;
    acceleration = Vector3D.ZERO;
}

From source file:org.orekit.utils.PVCoordinates.java

/** Builds a PVCoordinates triplet with zero acceleration.
 * <p>Acceleration is set to zero</p>
 * @param position the position vector (m)
 * @param velocity the velocity vector (m/s)
 *///from  w  w  w  . j  a  v  a 2  s  .  co  m
public PVCoordinates(final Vector3D position, final Vector3D velocity) {
    this.position = position;
    this.velocity = velocity;
    this.acceleration = Vector3D.ZERO;
}

From source file:org.orekit.utils.PVCoordinates.java

/** Builds a PVCoordinates triplet from  a {@link FieldVector3D}&lt;{@link DerivativeStructure}&gt;.
 * <p>// w w  w.j a  va 2  s . c o m
 * The vector components must have time as their only derivation parameter and
 * have consistent derivation orders.
 * </p>
 * @param p vector with time-derivatives embedded within the coordinates
 */
public PVCoordinates(final FieldVector3D<DerivativeStructure> p) {
    position = new Vector3D(p.getX().getReal(), p.getY().getReal(), p.getZ().getReal());
    if (p.getX().getOrder() >= 1) {
        velocity = new Vector3D(p.getX().getPartialDerivative(1), p.getY().getPartialDerivative(1),
                p.getZ().getPartialDerivative(1));
        if (p.getX().getOrder() >= 2) {
            acceleration = new Vector3D(p.getX().getPartialDerivative(2), p.getY().getPartialDerivative(2),
                    p.getZ().getPartialDerivative(2));
        } else {
            acceleration = Vector3D.ZERO;
        }
    } else {
        velocity = Vector3D.ZERO;
        acceleration = Vector3D.ZERO;
    }
}

From source file:org.orekit.utils.PVCoordinatesTest.java

@Test
public void testToDerivativeStructureVector0() throws OrekitException {
    FieldVector3D<DerivativeStructure> fv = new PVCoordinates(new Vector3D(1, 0.1, 10),
            new Vector3D(-1, -0.1, -10), new Vector3D(10, -1.0, -100)).toDerivativeStructureVector(0);
    Assert.assertEquals(1, fv.getX().getFreeParameters());
    Assert.assertEquals(0, fv.getX().getOrder());
    Assert.assertEquals(1.0, fv.getX().getReal(), 1.0e-10);
    Assert.assertEquals(0.1, fv.getY().getReal(), 1.0e-10);
    Assert.assertEquals(10.0, fv.getZ().getReal(), 1.0e-10);
    checkPV(new PVCoordinates(new Vector3D(1, 0.1, 10), Vector3D.ZERO, Vector3D.ZERO), new PVCoordinates(fv),
            1.0e-15);//from ww  w  .j  av a 2s. c  o  m
}