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

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

Introduction

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

Prototype

public FieldVector3D(final double a1, final FieldVector3D<T> u1, final double a2, final FieldVector3D<T> u2,
        final double a3, final FieldVector3D<T> u3, final double a4, final FieldVector3D<T> u4) 

Source Link

Document

Linear constructor Build a vector from four other ones and corresponding scale factors.

Usage

From source file:org.orekit.frames.Transform.java

/** Transform {@link FieldPVCoordinates} including kinematic effects.
 * @param pv position-velocity to transform.
 * @param <T> type of the field elements
 * @return transformed position-velocity
 *//*from ww  w .  j  ava2 s . c om*/
public <T extends RealFieldElement<T>> FieldPVCoordinates<T> transformPVCoordinates(
        final FieldPVCoordinates<T> pv) {

    // apply translation
    final FieldVector3D<T> intermediateP = pv.getPosition().add(cartesian.getPosition());
    final FieldVector3D<T> intermediateV = pv.getVelocity().add(cartesian.getVelocity());
    final FieldVector3D<T> intermediateA = pv.getAcceleration().add(cartesian.getAcceleration());

    // apply rotation
    final FieldVector3D<T> transformedP = FieldRotation.applyTo(angular.getRotation(), intermediateP);
    final FieldVector3D<T> crossP = FieldVector3D.crossProduct(angular.getRotationRate(), transformedP);
    final FieldVector3D<T> transformedV = FieldRotation.applyTo(angular.getRotation(), intermediateV)
            .subtract(crossP);
    final FieldVector3D<T> crossV = FieldVector3D.crossProduct(angular.getRotationRate(), transformedV);
    final FieldVector3D<T> crossCrossP = FieldVector3D.crossProduct(angular.getRotationRate(), crossP);
    final FieldVector3D<T> crossDotP = FieldVector3D.crossProduct(angular.getRotationAcceleration(),
            transformedP);
    final FieldVector3D<T> transformedA = new FieldVector3D<T>(1,
            FieldRotation.applyTo(angular.getRotation(), intermediateA), -2, crossV, -1, crossCrossP, -1,
            crossDotP);

    // build transformed object
    return new FieldPVCoordinates<T>(transformedP, transformedV, transformedA);

}

From source file:org.orekit.frames.Transform.java

/** Transform {@link TimeStampedFieldPVCoordinates} including kinematic effects.
 * <p>//from  ww w. j ava 2s .c o m
 * In order to allow the user more flexibility, this method does <em>not</em> check for
 * consistency between the transform {@link #getDate() date} and the time-stamped
 * position-velocity {@link TimeStampedFieldPVCoordinates#getDate() date}. The returned
 * value will always have the same {@link TimeStampedFieldPVCoordinates#getDate() date} as
 * the input argument, regardless of the instance {@link #getDate() date}.
 * </p>
 * @param pv time-stamped position-velocity to transform.
 * @param <T> type of the field elements
 * @return transformed time-stamped position-velocity
 * @since 7.0
 */
public <T extends RealFieldElement<T>> TimeStampedFieldPVCoordinates<T> transformPVCoordinates(
        final TimeStampedFieldPVCoordinates<T> pv) {

    // apply translation
    final FieldVector3D<T> intermediateP = pv.getPosition().add(cartesian.getPosition());
    final FieldVector3D<T> intermediateV = pv.getVelocity().add(cartesian.getVelocity());
    final FieldVector3D<T> intermediateA = pv.getAcceleration().add(cartesian.getAcceleration());

    // apply rotation
    final FieldVector3D<T> transformedP = FieldRotation.applyTo(angular.getRotation(), intermediateP);
    final FieldVector3D<T> crossP = FieldVector3D.crossProduct(angular.getRotationRate(), transformedP);
    final FieldVector3D<T> transformedV = FieldRotation.applyTo(angular.getRotation(), intermediateV)
            .subtract(crossP);
    final FieldVector3D<T> crossV = FieldVector3D.crossProduct(angular.getRotationRate(), transformedV);
    final FieldVector3D<T> crossCrossP = FieldVector3D.crossProduct(angular.getRotationRate(), crossP);
    final FieldVector3D<T> crossDotP = FieldVector3D.crossProduct(angular.getRotationAcceleration(),
            transformedP);
    final FieldVector3D<T> transformedA = new FieldVector3D<T>(1,
            FieldRotation.applyTo(angular.getRotation(), intermediateA), -2, crossV, -1, crossCrossP, -1,
            crossDotP);

    // build transformed object
    return new TimeStampedFieldPVCoordinates<T>(pv.getDate(), transformedP, transformedV, transformedA);

}

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

/** Linear constructor
 * <p>Build a PVCoordinates from four other ones and corresponding scale factors.</p>
 * <p>The PVCoordinates built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4</p>
 * @param a1 first scale factor/*from   ww  w.j  a  v a 2s . c  om*/
 * @param pv1 first base (unscaled) PVCoordinates
 * @param a2 second scale factor
 * @param pv2 second base (unscaled) PVCoordinates
 * @param a3 third scale factor
 * @param pv3 third base (unscaled) PVCoordinates
 * @param a4 fourth scale factor
 * @param pv4 fourth base (unscaled) PVCoordinates
 */
public FieldPVCoordinates(final double a1, final FieldPVCoordinates<T> pv1, final double a2,
        final FieldPVCoordinates<T> pv2, final double a3, final FieldPVCoordinates<T> pv3, final double a4,
        final FieldPVCoordinates<T> pv4) {
    position = new FieldVector3D<T>(a1, pv1.position, a2, pv2.position, a3, pv3.position, a4, pv4.position);
    velocity = new FieldVector3D<T>(a1, pv1.velocity, a2, pv2.velocity, a3, pv3.velocity, a4, pv4.velocity);
    acceleration = new FieldVector3D<T>(a1, pv1.acceleration, a2, pv2.acceleration, a3, pv3.acceleration, a4,
            pv4.acceleration);
}

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

/** Linear constructor
 * <p>Build a PVCoordinates from four other ones and corresponding scale factors.</p>
 * <p>The PVCoordinates built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4</p>
 * @param a1 first scale factor// ww  w . j a  v a2 s. c o  m
 * @param pv1 first base (unscaled) PVCoordinates
 * @param a2 second scale factor
 * @param pv2 second base (unscaled) PVCoordinates
 * @param a3 third scale factor
 * @param pv3 third base (unscaled) PVCoordinates
 * @param a4 fourth scale factor
 * @param pv4 fourth base (unscaled) PVCoordinates
 */
public FieldPVCoordinates(final T a1, final FieldPVCoordinates<T> pv1, final T a2,
        final FieldPVCoordinates<T> pv2, final T a3, final FieldPVCoordinates<T> pv3, final T a4,
        final FieldPVCoordinates<T> pv4) {
    position = new FieldVector3D<T>(a1, pv1.position, a2, pv2.position, a3, pv3.position, a4, pv4.position);
    velocity = new FieldVector3D<T>(a1, pv1.velocity, a2, pv2.velocity, a3, pv3.velocity, a4, pv4.velocity);
    acceleration = new FieldVector3D<T>(a1, pv1.acceleration, a2, pv2.acceleration, a3, pv3.acceleration, a4,
            pv4.acceleration);
}

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

/** Linear constructor
 * <p>Build a PVCoordinates from four other ones and corresponding scale factors.</p>
 * <p>The PVCoordinates built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4</p>
 * @param a1 first scale factor//from   w ww  .j ava  2 s  . c  o m
 * @param pv1 first base (unscaled) PVCoordinates
 * @param a2 second scale factor
 * @param pv2 second base (unscaled) PVCoordinates
 * @param a3 third scale factor
 * @param pv3 third base (unscaled) PVCoordinates
 * @param a4 fourth scale factor
 * @param pv4 fourth base (unscaled) PVCoordinates
 */
public FieldPVCoordinates(final T a1, final PVCoordinates pv1, final T a2, final PVCoordinates pv2, final T a3,
        final PVCoordinates pv3, final T a4, final PVCoordinates pv4) {
    position = new FieldVector3D<T>(a1, pv1.getPosition(), a2, pv2.getPosition(), a3, pv3.getPosition(), a4,
            pv4.getPosition());
    velocity = new FieldVector3D<T>(a1, pv1.getVelocity(), a2, pv2.getVelocity(), a3, pv3.getVelocity(), a4,
            pv4.getVelocity());
    acceleration = new FieldVector3D<T>(a1, pv1.getAcceleration(), a2, pv2.getAcceleration(), a3,
            pv3.getAcceleration(), a4, pv4.getAcceleration());
}

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

/** Linear constructor
 * <p>Build a PVCoordinates from four other ones and corresponding scale factors.</p>
 * <p>The PVCoordinates built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4</p>
 * @param date date of the built coordinates
 * @param a1 first scale factor/* w  ww  . j  a v  a 2 s  .c o  m*/
 * @param pv1 first base (unscaled) PVCoordinates
 * @param a2 second scale factor
 * @param pv2 second base (unscaled) PVCoordinates
 * @param a3 third scale factor
 * @param pv3 third base (unscaled) PVCoordinates
 * @param a4 fourth scale factor
 * @param pv4 fourth base (unscaled) PVCoordinates
 */
public TimeStampedFieldPVCoordinates(final AbsoluteDate date, final double a1, final FieldPVCoordinates<T> pv1,
        final double a2, final FieldPVCoordinates<T> pv2, final double a3, final FieldPVCoordinates<T> pv3,
        final double a4, final FieldPVCoordinates<T> pv4) {
    super(new FieldVector3D<T>(a1, pv1.getPosition(), a2, pv2.getPosition(), a3, pv3.getPosition(), a4,
            pv4.getPosition()),
            new FieldVector3D<T>(a1, pv1.getVelocity(), a2, pv2.getVelocity(), a3, pv3.getVelocity(), a4,
                    pv4.getVelocity()),
            new FieldVector3D<T>(a1, pv1.getAcceleration(), a2, pv2.getAcceleration(), a3,
                    pv3.getAcceleration(), a4, pv4.getAcceleration()));
    this.date = date;
}

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

/** Linear constructor
 * <p>Build a PVCoordinates from four other ones and corresponding scale factors.</p>
 * <p>The PVCoordinates built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4</p>
 * @param date date of the built coordinates
 * @param a1 first scale factor/*from   ww w  . j av a 2 s  .c o  m*/
 * @param pv1 first base (unscaled) PVCoordinates
 * @param a2 second scale factor
 * @param pv2 second base (unscaled) PVCoordinates
 * @param a3 third scale factor
 * @param pv3 third base (unscaled) PVCoordinates
 * @param a4 fourth scale factor
 * @param pv4 fourth base (unscaled) PVCoordinates
 */
public TimeStampedFieldPVCoordinates(final AbsoluteDate date, final T a1, final FieldPVCoordinates<T> pv1,
        final T a2, final FieldPVCoordinates<T> pv2, final T a3, final FieldPVCoordinates<T> pv3, final T a4,
        final FieldPVCoordinates<T> pv4) {
    super(new FieldVector3D<T>(a1, pv1.getPosition(), a2, pv2.getPosition(), a3, pv3.getPosition(), a4,
            pv4.getPosition()),
            new FieldVector3D<T>(a1, pv1.getVelocity(), a2, pv2.getVelocity(), a3, pv3.getVelocity(), a4,
                    pv4.getVelocity()),
            new FieldVector3D<T>(a1, pv1.getAcceleration(), a2, pv2.getAcceleration(), a3,
                    pv3.getAcceleration(), a4, pv4.getAcceleration()));
    this.date = date;
}

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

/** Linear constructor
 * <p>Build a PVCoordinates from four other ones and corresponding scale factors.</p>
 * <p>The PVCoordinates built will be a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4</p>
 * @param date date of the built coordinates
 * @param a1 first scale factor//  w ww .  j  a v  a 2 s. c  o m
 * @param pv1 first base (unscaled) PVCoordinates
 * @param a2 second scale factor
 * @param pv2 second base (unscaled) PVCoordinates
 * @param a3 third scale factor
 * @param pv3 third base (unscaled) PVCoordinates
 * @param a4 fourth scale factor
 * @param pv4 fourth base (unscaled) PVCoordinates
 */
public TimeStampedFieldPVCoordinates(final AbsoluteDate date, final T a1, final PVCoordinates pv1, final T a2,
        final PVCoordinates pv2, final T a3, final PVCoordinates pv3, final T a4, final PVCoordinates pv4) {
    super(new FieldVector3D<T>(a1, pv1.getPosition(), a2, pv2.getPosition(), a3, pv3.getPosition(), a4,
            pv4.getPosition()),
            new FieldVector3D<T>(a1, pv1.getVelocity(), a2, pv2.getVelocity(), a3, pv3.getVelocity(), a4,
                    pv4.getVelocity()),
            new FieldVector3D<T>(a1, pv1.getAcceleration(), a2, pv2.getAcceleration(), a3,
                    pv3.getAcceleration(), a4, pv4.getAcceleration()));
    this.date = date;
}