Class CartesianOrbit

java.lang.Object
org.orekit.orbits.Orbit
org.orekit.orbits.CartesianOrbit
All Implemented Interfaces:
TimeShiftable<ShiftablePVCoordinatesHolder<Orbit>>, TimeStamped, PVCoordinatesProvider, ShiftablePVCoordinatesHolder<Orbit>

public class CartesianOrbit extends Orbit
This class holds Cartesian orbital parameters.

The parameters used internally are the Cartesian coordinates:

  • x
  • y
  • z
  • xDot
  • yDot
  • zDot
contained in PVCoordinates.

Note that the implementation of this class delegates all non-Cartesian related computations (getA(), getEquinoctialEx(), ...) to an underlying instance of the EquinoctialOrbit class. This implies that using this class only for analytical computations which are always based on non-Cartesian parameters is perfectly possible but somewhat sub-optimal.

The instance CartesianOrbit is guaranteed to be immutable.

Author:
Luc Maisonobe, Guylaine Prat, Fabien Maussion, Véronique Pommier-Maurussane, Andrew Goetz
See Also:
  • Constructor Details

  • Method Details

    • getType

      public OrbitType getType()
      Get the orbit type.
      Specified by:
      getType in class Orbit
      Returns:
      orbit type
    • nonKeplerianAcceleration

      protected Vector3D nonKeplerianAcceleration()
      Compute non-Keplerian part of the acceleration from first time derivatives.
      Overrides:
      nonKeplerianAcceleration in class Orbit
      Returns:
      non-Keplerian part of the acceleration
    • getA

      public double getA()
      Get the semi-major axis.

      Note that the semi-major axis is considered negative for hyperbolic orbits.

      Specified by:
      getA in class Orbit
      Returns:
      semi-major axis (m)
    • getADot

      public double getADot()
      Get the semi-major axis derivative.

      Note that the semi-major axis is considered negative for hyperbolic orbits.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getADot in class Orbit
      Returns:
      semi-major axis derivative (m/s)
    • getE

      public double getE()
      Get the eccentricity.
      Specified by:
      getE in class Orbit
      Returns:
      eccentricity
    • getEDot

      public double getEDot()
      Get the eccentricity derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getEDot in class Orbit
      Returns:
      eccentricity derivative
    • getI

      public double getI()
      Get the inclination.
      Specified by:
      getI in class Orbit
      Returns:
      inclination (rad)
    • getIDot

      public double getIDot()
      Get the inclination derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getIDot in class Orbit
      Returns:
      inclination derivative (rad/s)
    • getEquinoctialEx

      public double getEquinoctialEx()
      Get the first component of the equinoctial eccentricity vector.
      Specified by:
      getEquinoctialEx in class Orbit
      Returns:
      first component of the equinoctial eccentricity vector
    • getEquinoctialExDot

      public double getEquinoctialExDot()
      Get the first component of the equinoctial eccentricity vector derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getEquinoctialExDot in class Orbit
      Returns:
      first component of the equinoctial eccentricity vector derivative
    • getEquinoctialEy

      public double getEquinoctialEy()
      Get the second component of the equinoctial eccentricity vector.
      Specified by:
      getEquinoctialEy in class Orbit
      Returns:
      second component of the equinoctial eccentricity vector
    • getEquinoctialEyDot

      public double getEquinoctialEyDot()
      Get the second component of the equinoctial eccentricity vector derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getEquinoctialEyDot in class Orbit
      Returns:
      second component of the equinoctial eccentricity vector derivative
    • getHx

      public double getHx()
      Get the first component of the inclination vector.
      Specified by:
      getHx in class Orbit
      Returns:
      first component of the inclination vector
    • getHxDot

      public double getHxDot()
      Get the first component of the inclination vector derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getHxDot in class Orbit
      Returns:
      first component of the inclination vector derivative
    • getHy

      public double getHy()
      Get the second component of the inclination vector.
      Specified by:
      getHy in class Orbit
      Returns:
      second component of the inclination vector
    • getHyDot

      public double getHyDot()
      Get the second component of the inclination vector derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getHyDot in class Orbit
      Returns:
      second component of the inclination vector derivative
    • getLv

      public double getLv()
      Get the true longitude argument.
      Specified by:
      getLv in class Orbit
      Returns:
      v + ω + Ω true longitude argument (rad)
    • getLvDot

      public double getLvDot()
      Get the true longitude argument derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getLvDot in class Orbit
      Returns:
      d(v + ω + Ω)/dt true longitude argument derivative (rad/s)
    • getLE

      public double getLE()
      Get the eccentric longitude argument.
      Specified by:
      getLE in class Orbit
      Returns:
      E + ω + Ω eccentric longitude argument (rad)
    • getLEDot

      public double getLEDot()
      Get the eccentric longitude argument derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getLEDot in class Orbit
      Returns:
      d(E + ω + Ω)/dt eccentric longitude argument derivative (rad/s)
    • getLM

      public double getLM()
      Get the mean longitude argument.
      Specified by:
      getLM in class Orbit
      Returns:
      M + ω + Ω mean longitude argument (rad)
    • getLMDot

      public double getLMDot()
      Get the mean longitude argument derivative.

      If the orbit was created without derivatives, the value returned is Double.NaN.

      Specified by:
      getLMDot in class Orbit
      Returns:
      d(M + ω + Ω)/dt mean longitude argument derivative (rad/s)
    • hasNonKeplerianAcceleration

      public boolean hasNonKeplerianAcceleration()
      Check if orbit includes non-Keplerian rates.
      Overrides:
      hasNonKeplerianAcceleration in class Orbit
      Returns:
      true if orbit includes non-Keplerian derivatives
      See Also:
    • initPosition

      protected Vector3D initPosition()
      Compute the position coordinates from the canonical parameters.
      Specified by:
      initPosition in class Orbit
      Returns:
      computed position coordinates
    • initPVCoordinates

      protected TimeStampedPVCoordinates initPVCoordinates()
      Compute the position/velocity coordinates from the canonical parameters.
      Specified by:
      initPVCoordinates in class Orbit
      Returns:
      computed position/velocity coordinates
    • inFrame

      public CartesianOrbit inFrame(Frame inertialFrame)
      Create a new object representing the same physical orbital state, but attached to a different reference frame. If the new frame is not inertial, an exception will be thrown.
      Specified by:
      inFrame in class Orbit
      Parameters:
      inertialFrame - reference frame of output orbit
      Returns:
      orbit with different frame
    • shiftedBy

      public CartesianOrbit shiftedBy(double dt)
      Get a time-shifted orbit.

      The orbit can be slightly shifted to close dates. The shifting model is a Keplerian one if no derivatives are available in the orbit, or Keplerian plus quadratic effect of the non-Keplerian acceleration if derivatives are available. Shifting is not intended as a replacement for proper orbit propagation but should be sufficient for small time shifts or coarse accuracy.

      Specified by:
      shiftedBy in interface TimeShiftable<ShiftablePVCoordinatesHolder<Orbit>>
      Specified by:
      shiftedBy in class Orbit
      Parameters:
      dt - time shift in seconds
      Returns:
      a new orbit, shifted with respect to the instance (which is immutable)
    • shiftedBy

      public CartesianOrbit shiftedBy(TimeOffset dt)
      Get a time-shifted orbit.

      The orbit can be slightly shifted to close dates. The shifting model is a Keplerian one if no derivatives are available in the orbit, or Keplerian plus quadratic effect of the non-Keplerian acceleration if derivatives are available. Shifting is not intended as a replacement for proper orbit propagation but should be sufficient for small time shifts or coarse accuracy.

      Specified by:
      shiftedBy in interface TimeShiftable<ShiftablePVCoordinatesHolder<Orbit>>
      Specified by:
      shiftedBy in class Orbit
      Parameters:
      dt - time shift
      Returns:
      a new orbit, shifted with respect to the instance (which is immutable)
    • computeJacobianMeanWrtCartesian

      protected double[][] computeJacobianMeanWrtCartesian()
      Description copied from class: Orbit
      Compute the Jacobian of the orbital parameters with mean angle with respect to the Cartesian parameters.

      Element jacobian[i][j] is the derivative of parameter i of the orbit with respect to Cartesian coordinate j. This means each row correspond to one orbital parameter whereas columns 0 to 5 correspond to the Cartesian coordinates x, y, z, xDot, yDot and zDot.

      The array returned by this method will not be modified.

      Specified by:
      computeJacobianMeanWrtCartesian in class Orbit
      Returns:
      6x6 Jacobian matrix
      See Also:
    • computeJacobianEccentricWrtCartesian

      protected double[][] computeJacobianEccentricWrtCartesian()
      Description copied from class: Orbit
      Compute the Jacobian of the orbital parameters with eccentric angle with respect to the Cartesian parameters.

      Element jacobian[i][j] is the derivative of parameter i of the orbit with respect to Cartesian coordinate j. This means each row correspond to one orbital parameter whereas columns 0 to 5 correspond to the Cartesian coordinates x, y, z, xDot, yDot and zDot.

      The array returned by this method will not be modified.

      Specified by:
      computeJacobianEccentricWrtCartesian in class Orbit
      Returns:
      6x6 Jacobian matrix
      See Also:
    • computeJacobianTrueWrtCartesian

      protected double[][] computeJacobianTrueWrtCartesian()
      Description copied from class: Orbit
      Compute the Jacobian of the orbital parameters with true angle with respect to the Cartesian parameters.

      Element jacobian[i][j] is the derivative of parameter i of the orbit with respect to Cartesian coordinate j. This means each row correspond to one orbital parameter whereas columns 0 to 5 correspond to the Cartesian coordinates x, y, z, xDot, yDot and zDot.

      The array returned by this method will not be modified.

      Specified by:
      computeJacobianTrueWrtCartesian in class Orbit
      Returns:
      6x6 Jacobian matrix
      See Also:
    • addKeplerContribution

      public void addKeplerContribution(PositionAngleType type, double gm, double[] pDot)
      Add the contribution of the Keplerian motion to parameters derivatives

      This method is used by integration-based propagators to evaluate the part of Keplerian motion to evolution of the orbital state.

      Specified by:
      addKeplerContribution in class Orbit
      Parameters:
      type - type of the position angle in the state
      gm - attraction coefficient to use
      pDot - array containing orbital state derivatives to update (the Keplerian part must be added to the array components, as the array may already contain some non-zero elements corresponding to non-Keplerian parts)
    • toString

      public String toString()
      Returns a string representation of this Orbit object.
      Overrides:
      toString in class Object
      Returns:
      a string representation of this object