Example usage for org.apache.commons.math3.geometry.euclidean.threed FieldVector3D distance

List of usage examples for org.apache.commons.math3.geometry.euclidean.threed FieldVector3D distance

Introduction

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

Prototype

public static <T extends RealFieldElement<T>> T distance(final Vector3D v1, final FieldVector3D<T> v2) 

Source Link

Document

Compute the distance between two vectors according to the L2 norm.

Usage

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

@Test
public void testToAC() {
    Random random = new Random(0xc9b4cf6c371108e0l);
    for (int i = 0; i < 100; ++i) {
        FieldRotation<DerivativeStructure> r = randomRotation(random);
        FieldVector3D<DerivativeStructure> o = randomVector(random, 1.0e-3);
        FieldVector3D<DerivativeStructure> a = randomVector(random, 1.0e-3);
        FieldAngularCoordinates<DerivativeStructure> acds = new FieldAngularCoordinates<DerivativeStructure>(r,
                o, a);/*from  ww  w. ja v a2  s.c  o m*/
        AngularCoordinates ac = acds.toAngularCoordinates();
        Assert.assertEquals(0, Rotation.distance(r.toRotation(), ac.getRotation()), 1.0e-15);
        Assert.assertEquals(0, FieldVector3D.distance(o, ac.getRotationRate()).getReal(), 1.0e-15);
    }
}

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

@Test
public void testRoundTripNoOp() {
    Random random = new Random(0x1e610cfe89306669l);
    for (int i = 0; i < 100; ++i) {

        FieldRotation<DerivativeStructure> r1 = randomRotation(random);
        FieldVector3D<DerivativeStructure> o1 = randomVector(random, 1.0e-2);
        FieldVector3D<DerivativeStructure> a1 = randomVector(random, 1.0e-2);
        FieldAngularCoordinates<DerivativeStructure> ac1 = new FieldAngularCoordinates<DerivativeStructure>(r1,
                o1, a1);/*from ww w . j  a  v  a 2s .co m*/

        FieldRotation<DerivativeStructure> r2 = randomRotation(random);
        FieldVector3D<DerivativeStructure> o2 = randomVector(random, 1.0e-2);
        FieldVector3D<DerivativeStructure> a2 = randomVector(random, 1.0e-2);
        FieldAngularCoordinates<DerivativeStructure> ac2 = new FieldAngularCoordinates<DerivativeStructure>(r2,
                o2, a2);

        FieldAngularCoordinates<DerivativeStructure> roundTripSA = ac1.subtractOffset(ac2).addOffset(ac2);
        Assert.assertEquals(0.0, FieldRotation.distance(ac1.getRotation(), roundTripSA.getRotation()).getReal(),
                1.0e-15);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(ac1.getRotationRate(), roundTripSA.getRotationRate()).getReal(),
                2.0e-17);
        Assert.assertEquals(0.0, FieldVector3D
                .distance(ac1.getRotationAcceleration(), roundTripSA.getRotationAcceleration()).getReal(),
                2.0e-17);

        FieldAngularCoordinates<DerivativeStructure> roundTripAS = ac1.addOffset(ac2).subtractOffset(ac2);
        Assert.assertEquals(0.0, FieldRotation.distance(ac1.getRotation(), roundTripAS.getRotation()).getReal(),
                1.0e-15);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(ac1.getRotationRate(), roundTripAS.getRotationRate()).getReal(),
                2.0e-17);
        Assert.assertEquals(0.0, FieldVector3D
                .distance(ac1.getRotationAcceleration(), roundTripAS.getRotationAcceleration()).getReal(),
                2.0e-17);

    }
}

From source file:org.orekit.utils.FieldAngularCoordinatesTest.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;
    FieldAngularCoordinates<DerivativeStructure> reference = new FieldAngularCoordinates<DerivativeStructure>(
            createRotation(createVector(0, 0, 1, 4), alpha0),
            new FieldVector3D<DerivativeStructure>(omega, createVector(0, 0, -1, 4)), createVector(0, 0, 0, 4));

    List<Pair<AbsoluteDate, FieldAngularCoordinates<DerivativeStructure>>> sample = new ArrayList<Pair<AbsoluteDate, FieldAngularCoordinates<DerivativeStructure>>>();
    for (double dt : new double[] { 0.0, 0.5, 1.0 }) {
        sample.add(new Pair<AbsoluteDate, FieldAngularCoordinates<DerivativeStructure>>(date.shiftedBy(dt),
                reference.shiftedBy(dt)));
    }//  w w  w  . jav  a 2s  .  co  m

    for (double dt = 0; dt < 1.0; dt += 0.001) {
        FieldAngularCoordinates<DerivativeStructure> interpolated = FieldAngularCoordinates
                .interpolate(date.shiftedBy(dt), true, sample);
        FieldRotation<DerivativeStructure> r = interpolated.getRotation();
        FieldVector3D<DerivativeStructure> rate = interpolated.getRotationRate();
        FieldVector3D<DerivativeStructure> acceleration = interpolated.getRotationAcceleration();
        Assert.assertEquals(0.0, FieldRotation
                .distance(createRotation(createVector(0, 0, 1, 4), alpha0 + omega * dt), r).getReal(), 1.1e-15);
        Assert.assertEquals(0.0, FieldVector3D.distance(createVector(0, 0, -omega, 4), rate).getReal(),
                4.0e-15);
        Assert.assertEquals(0.0, FieldVector3D.distance(createVector(0, 0, 0, 4), acceleration).getReal(),
                3.2e-14);
    }

}

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

@Test
public void testGetters() {
    FieldVector3D<DerivativeStructure> p = createVector(1, 0.1, 10, 6);
    FieldVector3D<DerivativeStructure> v = createVector(-0.1, 1, 0, 6);
    FieldPVCoordinates<DerivativeStructure> pv = new FieldPVCoordinates<DerivativeStructure>(p, v);
    Assert.assertEquals(0, FieldVector3D.distance(p, pv.getPosition()).getValue(), 1.0e-15);
    Assert.assertEquals(0, FieldVector3D.distance(v, pv.getVelocity()).getValue(), 1.0e-15);
    Assert.assertEquals(0, FieldVector3D.distance(createVector(-10, -1, 1.01, 6), pv.getMomentum()).getValue(),
            1.0e-15);// w ww . j  av  a  2  s. c  o  m

    FieldPVCoordinates<DerivativeStructure> pvn = pv.negate();
    Assert.assertEquals(0, FieldVector3D.distance(createVector(-1, -0.1, -10, 6), pvn.getPosition()).getValue(),
            1.0e-15);
    Assert.assertEquals(0, FieldVector3D.distance(createVector(0.1, -1, 0, 6), pvn.getVelocity()).getValue(),
            1.0e-15);
    Assert.assertEquals(0, FieldVector3D.distance(createVector(-10, -1, 1.01, 6), pvn.getMomentum()).getValue(),
            1.0e-15);
}

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

@Test
public void testToAC() {
    Random random = new Random(0xc9b4cf6c371108e0l);
    for (int i = 0; i < 100; ++i) {
        FieldRotation<DerivativeStructure> r = randomRotation(random);
        FieldVector3D<DerivativeStructure> o = randomVector(random, 1.0e-3);
        FieldVector3D<DerivativeStructure> a = randomVector(random, 1.0e-3);
        TimeStampedFieldAngularCoordinates<DerivativeStructure> acds = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
                AbsoluteDate.J2000_EPOCH, r, o, a);
        AngularCoordinates ac = acds.toAngularCoordinates();
        Assert.assertEquals(0, Rotation.distance(r.toRotation(), ac.getRotation()), 1.0e-15);
        Assert.assertEquals(0, FieldVector3D.distance(o, ac.getRotationRate()).getReal(), 1.0e-15);
        Assert.assertEquals(0, FieldVector3D.distance(a, ac.getRotationAcceleration()).getReal(), 1.0e-15);
    }/*from  www .j a v a2s.  co m*/
}

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

@Test
public void testRoundTripNoOp() {
    Random random = new Random(0x1e610cfe89306669l);
    for (int i = 0; i < 100; ++i) {

        FieldRotation<DerivativeStructure> r1 = randomRotation(random);
        FieldVector3D<DerivativeStructure> o1 = randomVector(random, 1.0e-2);
        FieldVector3D<DerivativeStructure> a1 = randomVector(random, 1.0e-2);
        TimeStampedFieldAngularCoordinates<DerivativeStructure> ac1 = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
                AbsoluteDate.J2000_EPOCH, r1, o1, a1);
        FieldRotation<DerivativeStructure> r2 = randomRotation(random);
        FieldVector3D<DerivativeStructure> o2 = randomVector(random, 1.0e-2);
        FieldVector3D<DerivativeStructure> a2 = randomVector(random, 1.0e-2);

        TimeStampedFieldAngularCoordinates<DerivativeStructure> ac2 = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
                AbsoluteDate.J2000_EPOCH, r2, o2, a2);
        TimeStampedFieldAngularCoordinates<DerivativeStructure> roundTripSA = ac1.subtractOffset(ac2)
                .addOffset(ac2);/*from  w w  w.j a  v  a  2  s.co  m*/
        Assert.assertEquals(0.0, FieldRotation.distance(ac1.getRotation(), roundTripSA.getRotation()).getReal(),
                4.0e-16);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(ac1.getRotationRate(), roundTripSA.getRotationRate()).getReal(),
                2.0e-17);
        Assert.assertEquals(0.0, FieldVector3D
                .distance(ac1.getRotationAcceleration(), roundTripSA.getRotationAcceleration()).getReal(),
                1.0e-17);

        TimeStampedFieldAngularCoordinates<DerivativeStructure> roundTripAS = ac1.addOffset(ac2)
                .subtractOffset(ac2);
        Assert.assertEquals(0.0, FieldRotation.distance(ac1.getRotation(), roundTripAS.getRotation()).getReal(),
                6.0e-16);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(ac1.getRotationRate(), roundTripAS.getRotationRate()).getReal(),
                2.0e-17);
        Assert.assertEquals(0.0, FieldVector3D
                .distance(ac1.getRotationAcceleration(), roundTripAS.getRotationAcceleration()).getReal(),
                2.0e-17);

    }
}

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

@Test
public void testRodriguesSymmetry()
        throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {

    // use reflection to test the private static methods
    Method getter = TimeStampedFieldAngularCoordinates.class.getDeclaredMethod("getModifiedRodrigues",
            new Class<?>[] { TimeStampedFieldAngularCoordinates.class, double[].class, double.class });
    getter.setAccessible(true);//from ww  w .  ja  v  a2s .c o m
    Method factory = TimeStampedFieldAngularCoordinates.class.getDeclaredMethod("createFromModifiedRodrigues",
            new Class<?>[] { RealFieldElement[][].class, TimeStampedFieldAngularCoordinates.class });
    factory.setAccessible(true);

    // check the two-way conversion result in identity
    Random random = new Random(0xb1e615aaa8236b52l);
    double[] previous = new double[] { 1.0, 0.0, 0.0, 0.0 };
    for (int i = 0; i < 1000; ++i) {
        FieldRotation<DerivativeStructure> offsetRotation = randomRotation(random);
        FieldVector3D<DerivativeStructure> offsetRate = randomVector(random, 0.01);
        TimeStampedFieldAngularCoordinates<DerivativeStructure> offset = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
                AbsoluteDate.J2000_EPOCH, offsetRotation, offsetRate, createVector(0, 0, 0, 4));
        FieldRotation<DerivativeStructure> rotation = randomRotation(random);
        FieldVector3D<DerivativeStructure> rotationRate = randomVector(random, 0.01);
        FieldVector3D<DerivativeStructure> rotationAcceleration = randomVector(random, 0.01);
        TimeStampedFieldAngularCoordinates<DerivativeStructure> ac = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
                AbsoluteDate.J2000_EPOCH, rotation, rotationRate, rotationAcceleration);
        double dt = 10.0 * random.nextDouble();
        DerivativeStructure[][] rodrigues = (DerivativeStructure[][]) getter.invoke(null,
                ac.subtractOffset(offset.shiftedBy(dt)), previous, -0.9999);
        @SuppressWarnings("unchecked")
        TimeStampedFieldAngularCoordinates<DerivativeStructure> rebuilt = (TimeStampedFieldAngularCoordinates<DerivativeStructure>) factory
                .invoke(null, rodrigues, offset.shiftedBy(dt));
        Assert.assertEquals(0.0, FieldRotation.distance(rotation, rebuilt.getRotation()).getReal(), 1.0e-14);
        Assert.assertEquals(0.0, FieldVector3D.distance(rotationRate, rebuilt.getRotationRate()).getReal(),
                1.0e-15);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(rotationAcceleration, rebuilt.getRotationAcceleration()).getReal(),
                1.0e-15);
    }

}

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

@Test
public void testInterpolationNeedOffsetWrongRate() throws OrekitException {
    AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH;
    double omega = 2.0 * FastMath.PI;
    TimeStampedFieldAngularCoordinates<DerivativeStructure> reference = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
            date, createRotation(1, 0, 0, 0, false), createVector(0, 0, -omega, 4), createVector(0, 0, 0, 4));

    List<TimeStampedFieldAngularCoordinates<DerivativeStructure>> sample = new ArrayList<TimeStampedFieldAngularCoordinates<DerivativeStructure>>();
    for (double dt : new double[] { 0.0, 0.25, 0.5, 0.75, 1.0 }) {
        TimeStampedFieldAngularCoordinates<DerivativeStructure> shifted = reference.shiftedBy(dt);
        sample.add(new TimeStampedFieldAngularCoordinates<DerivativeStructure>(shifted.getDate(),
                shifted.getRotation(), createVector(0, 0, 0, 4), createVector(0, 0, 0, 4)));
    }/*from w w  w.  j  a  v  a  2s . c  o m*/

    for (TimeStampedFieldAngularCoordinates<DerivativeStructure> s : sample) {
        TimeStampedFieldAngularCoordinates<DerivativeStructure> interpolated = TimeStampedFieldAngularCoordinates
                .interpolate(s.getDate(), AngularDerivativesFilter.USE_RR, sample);
        FieldRotation<DerivativeStructure> r = interpolated.getRotation();
        FieldVector3D<DerivativeStructure> rate = interpolated.getRotationRate();
        Assert.assertEquals(0.0, FieldRotation.distance(s.getRotation(), r).getReal(), 2.0e-14);
        Assert.assertEquals(0.0, FieldVector3D.distance(s.getRotationRate(), rate).getReal(), 2.0e-13);
    }

}

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

@Test
public void testInterpolationRotationOnly() throws OrekitException {
    AbsoluteDate date = AbsoluteDate.GALILEO_EPOCH;
    double alpha0 = 0.5 * FastMath.PI;
    double omega = 0.5 * FastMath.PI;
    TimeStampedFieldAngularCoordinates<DerivativeStructure> reference = new TimeStampedFieldAngularCoordinates<DerivativeStructure>(
            date, createRotation(createVector(0, 0, 1, 4), alpha0),
            new FieldVector3D<DerivativeStructure>(omega, createVector(0, 0, -1, 4)), createVector(0, 0, 0, 4));

    List<TimeStampedFieldAngularCoordinates<DerivativeStructure>> sample = new ArrayList<TimeStampedFieldAngularCoordinates<DerivativeStructure>>();
    for (double dt : new double[] { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 }) {
        FieldRotation<DerivativeStructure> r = reference.shiftedBy(dt).getRotation();
        sample.add(new TimeStampedFieldAngularCoordinates<DerivativeStructure>(date.shiftedBy(dt), r,
                createVector(0, 0, 0, 4), createVector(0, 0, 0, 4)));
    }/*w ww.  j a  v a2 s .  c o m*/

    for (double dt = 0; dt < 1.0; dt += 0.001) {
        TimeStampedFieldAngularCoordinates<DerivativeStructure> interpolated = TimeStampedFieldAngularCoordinates
                .interpolate(date.shiftedBy(dt), AngularDerivativesFilter.USE_R, sample);
        FieldRotation<DerivativeStructure> r = interpolated.getRotation();
        FieldVector3D<DerivativeStructure> rate = interpolated.getRotationRate();
        FieldVector3D<DerivativeStructure> acceleration = interpolated.getRotationAcceleration();
        Assert.assertEquals(0.0, FieldRotation.distance(reference.shiftedBy(dt).getRotation(), r).getReal(),
                3.0e-4);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(reference.shiftedBy(dt).getRotationRate(), rate).getReal(), 1.0e-2);
        Assert.assertEquals(0.0, FieldVector3D
                .distance(reference.shiftedBy(dt).getRotationAcceleration(), acceleration).getReal(), 1.0e-2);
    }

}

From source file:org.orekit.utils.TimeStampedFieldAngularCoordinatesTest.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<TimeStampedFieldAngularCoordinates<DerivativeStructure>> sample = new ArrayList<TimeStampedFieldAngularCoordinates<DerivativeStructure>>();
    for (double[] row : params) {
        AbsoluteDate t = t0.shiftedBy(row[0] * 3600.0);
        FieldRotation<DerivativeStructure> r = createRotation(row[1], 0.0, 0.0, row[2], false);
        FieldVector3D<DerivativeStructure> o = new FieldVector3D<DerivativeStructure>(row[3],
                createVector(0, 0, 1, 4));
        sample.add(//  ww  w.j av a 2s. co m
                new TimeStampedFieldAngularCoordinates<DerivativeStructure>(t, r, o, createVector(0, 0, 0, 4)));
    }
    for (double dt = 0; dt < 29000; dt += 120) {
        TimeStampedFieldAngularCoordinates<DerivativeStructure> shifted = sample.get(0).shiftedBy(dt);
        TimeStampedFieldAngularCoordinates<DerivativeStructure> interpolated = TimeStampedFieldAngularCoordinates
                .interpolate(t0.shiftedBy(dt), AngularDerivativesFilter.USE_RR, sample);
        Assert.assertEquals(0.0,
                FieldRotation.distance(shifted.getRotation(), interpolated.getRotation()).getReal(), 1.3e-7);
        Assert.assertEquals(0.0,
                FieldVector3D.distance(shifted.getRotationRate(), interpolated.getRotationRate()).getReal(),
                1.0e-11);
    }

}