org.orekit.orbits
Class EquinoctialOrbit

java.lang.Object
  extended by org.orekit.orbits.Orbit
      extended by org.orekit.orbits.EquinoctialOrbit
All Implemented Interfaces:
Serializable, TimeInterpolable<Orbit>, TimeShiftable<Orbit>, TimeStamped, PVCoordinatesProvider

public final class EquinoctialOrbit
extends Orbit

This class handles equinoctial orbital parameters, which can support both circular and equatorial orbits.

The parameters used internally are the equinoctial elements (see EquinoctialParameters for more information.

The instance EquinoctialOrbit is guaranteed to be immutable.

Author:
Mathieu Roméro, Luc Maisonobe, Guylaine Prat, Fabien Maussion, Véronique Pommier-Maurussane
See Also:
Orbit, KeplerianOrbit, CircularOrbit, CartesianOrbit, Serialized Form

Field Summary
static int ECCENTRIC_LATITUDE_ARGUMENT
          Deprecated. as of 6.0 replaced by PositionAngle
static int MEAN_LATITUDE_ARGUMENT
          Deprecated. as of 6.0 replaced by PositionAngle
static int TRUE_LATITUDE_ARGUMENT
          Deprecated. as of 6.0 replaced by PositionAngle
 
Constructor Summary
EquinoctialOrbit(double a, double ex, double ey, double hx, double hy, double l, int type, Frame frame, AbsoluteDate date, double mu)
          Deprecated. as of 6.0 replaced by EquinoctialOrbit(double, double, double, double, double, double, PositionAngle, Frame, AbsoluteDate, double)
EquinoctialOrbit(double a, double ex, double ey, double hx, double hy, double l, PositionAngle type, Frame frame, AbsoluteDate date, double mu)
          Creates a new instance.
EquinoctialOrbit(IOrbitalParameters parameters, Frame frame, AbsoluteDate date)
          Creates a new instance.
EquinoctialOrbit(Orbit op)
          Constructor from any kind of orbital parameters.
EquinoctialOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu)
          Constructor from cartesian parameters.
 
Method Summary
protected  double[][] computeJacobianCartesianWrtTrue()
          Compute the Jacobian of the Cartesian parameters with respect to the orbital parameters with true angle.
protected  double[][] computeJacobianEccentricWrtCartesian()
          Compute the Jacobian of the orbital parameters with eccentric angle with respect to the Cartesian parameters.
protected  double[][] computeJacobianMeanWrtCartesian()
          Compute the Jacobian of the orbital parameters with mean angle with respect to the Cartesian parameters.
protected  double[][] computeJacobianTrueWrtCartesian()
          Compute the Jacobian of the orbital parameters with true angle with respect to the Cartesian parameters.
 double getA()
          Get the semi-major axis.
 double getE()
          Get the eccentricity.
 double getEquinoctialEx()
          Get the first component of the eccentricity vector.
 double getEquinoctialEy()
          Get the second component of the eccentricity vector.
 EquinoctialParameters getEquinoctialParameters()
          Getter for underlying equinoctial parameters.
 double getHx()
          Get the first component of the inclination vector.
 double getHy()
          Get the second component of the inclination vector.
 double getI()
          Get the inclination.
 void getJacobianWrtParameters(PositionAngle type, double[][] jacobian)
          Compute the Jacobian of the Cartesian parameters with respect to the orbital parameters.
 double getL(PositionAngle type)
          Get the longitude argument.
 double getLE()
          Get the eccentric longitude argument.
 double getLM()
          Get the mean longitude argument.
 double getLv()
          Get the true longitude argument.
 IOrbitalParameters getParameters()
          Get underlying orbital parameters.
 OrbitType getType()
          Get the orbit type.
protected  PVCoordinates initPVCoordinates()
          Compute the position/velocity coordinates from the canonical parameters.
 EquinoctialOrbit interpolate(AbsoluteDate date, Collection<Orbit> sample)
          Get an interpolated instance.
protected  void orbitAddKeplerContribution(PositionAngle type, double gm, double[] pDot)
          Add the contribution of the Keplerian motion to parameters derivatives
protected  EquinoctialOrbit orbitShiftedBy(double dt)
          Get a time-shifted orbit.
 String toString()
          Returns a string representation of this equinoctial parameters object.
 
Methods inherited from class org.orekit.orbits.Orbit
addKeplerContribution, createInverseJacobian, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, getDate, getFrame, getJacobian, getJacobianWrtCartesian, getJacobianWrtParametersEccentric, getJacobianWrtParametersMean, getJacobianWrtParametersTrue, getKeplerianMeanMotion, getKeplerianPeriod, getKeplerianTransitionMatrix, getMu, getPVCoordinates, getPVCoordinates, getPVCoordinates, isPositiveDefinite, setJacobianWrtParametersEccentric, setJacobianWrtParametersMean, setJacobianWrtParametersTrue, shiftedBy
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MEAN_LATITUDE_ARGUMENT

@Deprecated
public static final int MEAN_LATITUDE_ARGUMENT
Deprecated. as of 6.0 replaced by PositionAngle
Identifier for mean longitude argument.

See Also:
Constant Field Values

ECCENTRIC_LATITUDE_ARGUMENT

@Deprecated
public static final int ECCENTRIC_LATITUDE_ARGUMENT
Deprecated. as of 6.0 replaced by PositionAngle
Identifier for eccentric longitude argument.

See Also:
Constant Field Values

TRUE_LATITUDE_ARGUMENT

@Deprecated
public static final int TRUE_LATITUDE_ARGUMENT
Deprecated. as of 6.0 replaced by PositionAngle
Identifier for true longitude argument.

See Also:
Constant Field Values
Constructor Detail

EquinoctialOrbit

public EquinoctialOrbit(IOrbitalParameters parameters,
                        Frame frame,
                        AbsoluteDate date)
Creates a new instance.

Parameters:
parameters - orbital parameters
frame - the frame in which the parameters are defined (must be a pseudo-inertial frame)
date - date of the orbital parameters

EquinoctialOrbit

public EquinoctialOrbit(double a,
                        double ex,
                        double ey,
                        double hx,
                        double hy,
                        double l,
                        PositionAngle type,
                        Frame frame,
                        AbsoluteDate date,
                        double mu)
                 throws IllegalArgumentException
Creates a new instance.

Parameters:
a - semi-major axis (m)
ex - e cos(ω + Ω), first component of eccentricity vector
ey - e sin(ω + Ω), second component of eccentricity vector
hx - tan(i/2) cos(Ω), first component of inclination vector
hy - tan(i/2) sin(Ω), second component of inclination vector
l - (M or E or v) + ω + Ω, mean, eccentric or true longitude argument (rad)
type - type of longitude argument, must be one of MEAN_LATITUDE_ARGUMENT, ECCENTRIC_LATITUDE_ARGUMENT or TRUE_LATITUDE_ARGUMENT
frame - the frame in which the parameters are defined
date - date of the orbital parameters
mu - central attraction coefficient (m3/s2)
Throws:
IllegalArgumentException - if eccentricity is equal to 1 or larger

EquinoctialOrbit

@Deprecated
public EquinoctialOrbit(double a,
                                   double ex,
                                   double ey,
                                   double hx,
                                   double hy,
                                   double l,
                                   int type,
                                   Frame frame,
                                   AbsoluteDate date,
                                   double mu)
                 throws IllegalArgumentException
Deprecated. as of 6.0 replaced by EquinoctialOrbit(double, double, double, double, double, double, PositionAngle, Frame, AbsoluteDate, double)

Creates a new instance.

Parameters:
a - semi-major axis (m)
ex - e cos(ω + Ω), first component of eccentricity vector
ey - e sin(ω + Ω), second component of eccentricity vector
hx - tan(i/2) cos(Ω), first component of inclination vector
hy - tan(i/2) sin(Ω), second component of inclination vector
l - (M or E or v) + ω + Ω, mean, eccentric or true longitude argument (rad)
type - type of longitude argument, must be one of MEAN_LATITUDE_ARGUMENT, ECCENTRIC_LATITUDE_ARGUMENT or TRUE_LATITUDE_ARGUMENT
frame - the frame in which the parameters are defined
date - date of the orbital parameters
mu - central attraction coefficient (m3/s2)
Throws:
IllegalArgumentException - if eccentricity is equal to 1 or larger or if the longitude argument type is not one of MEAN_LATITUDE_ARGUMENT, ECCENTRIC_LATITUDE_ARGUMENT or TRUE_LATITUDE_ARGUMENT
See Also:
MEAN_LATITUDE_ARGUMENT, ECCENTRIC_LATITUDE_ARGUMENT, TRUE_LATITUDE_ARGUMENT

EquinoctialOrbit

public EquinoctialOrbit(PVCoordinates pvCoordinates,
                        Frame frame,
                        AbsoluteDate date,
                        double mu)
                 throws IllegalArgumentException
Constructor from cartesian parameters.

Parameters:
pvCoordinates - the position end velocity
frame - the frame in which are defined the PVCoordinates
date - date of the orbital parameters
mu - central attraction coefficient (m3/s2)
Throws:
IllegalArgumentException - if eccentricity is equal to 1 or larger

EquinoctialOrbit

public EquinoctialOrbit(Orbit op)
Constructor from any kind of orbital parameters.

Parameters:
op - orbital parameters to copy
Method Detail

getParameters

public IOrbitalParameters getParameters()
Get underlying orbital parameters.

Specified by:
getParameters in class Orbit
Returns:
orbital parameters

getEquinoctialParameters

public EquinoctialParameters getEquinoctialParameters()
Getter for underlying equinoctial parameters.

Returns:
equinoctial parameters

getType

public OrbitType getType()
Get the orbit type.

Specified by:
getType in class Orbit
Returns:
orbit type

getA

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

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

getEquinoctialEx

public double getEquinoctialEx()
Get the first component of the eccentricity vector.

Specified by:
getEquinoctialEx in class Orbit
Returns:
e cos(ω + Ω), first component of the eccentricity vector

getEquinoctialEy

public double getEquinoctialEy()
Get the second component of the eccentricity vector.

Specified by:
getEquinoctialEy in class Orbit
Returns:
e sin(ω + Ω), second component of the eccentricity vector

getHx

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

Specified by:
getHx in class Orbit
Returns:
tan(i/2) cos(Ω), first component of the inclination vector

getHy

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

Specified by:
getHy in class Orbit
Returns:
tan(i/2) sin(Ω), second component of the inclination vector

getL

public double getL(PositionAngle type)
Get the longitude argument.

Parameters:
type - type of the angle
Returns:
longitude argument (rad)

getLv

public double getLv()
Get the true longitude argument.

Specified by:
getLv in class Orbit
Returns:
v + ω + Ω true longitude argument (rad)

getLE

public double getLE()
Get the eccentric longitude argument.

Specified by:
getLE in class Orbit
Returns:
E + ω + Ω eccentric longitude argument (rad)

getLM

public double getLM()
Get the mean longitude argument.

Specified by:
getLM in class Orbit
Returns:
M + ω + Ω mean longitude argument (rad)

getE

public double getE()
Get the eccentricity.

Specified by:
getE in class Orbit
Returns:
eccentricity

getI

public double getI()
Get the inclination.

Specified by:
getI in class Orbit
Returns:
inclination (rad)

initPVCoordinates

protected PVCoordinates initPVCoordinates()
Compute the position/velocity coordinates from the canonical parameters.

Specified by:
initPVCoordinates in class Orbit
Returns:
computed position/velocity coordinates

orbitShiftedBy

protected EquinoctialOrbit orbitShiftedBy(double dt)
Get a time-shifted orbit.

The orbit can be slightly shifted to close dates. This shift is based on a simple keplerian model. It is not intended as a replacement for proper orbit and attitude propagation but should be sufficient for small time shifts or coarse accuracy.

Specified by:
orbitShiftedBy in class Orbit
Parameters:
dt - time shift in seconds
Returns:
a new orbit, shifted with respect to the instance (which is immutable)

interpolate

public EquinoctialOrbit interpolate(AbsoluteDate date,
                                    Collection<Orbit> sample)
Get an interpolated instance.

Note that the state of the current instance may not be used in the interpolation process, only its type and non interpolable fields are used (for example central attraction coefficient or frame when interpolating orbits). The interpolable fields taken into account are taken only from the states of the sample points. So if the state of the instance must be used, the instance should be included in the sample points.

The interpolated instance is created by polynomial Hermite interpolation on equinoctial elements, without derivatives (which means the interpolation falls back to Lagrange interpolation only).

Parameters:
date - interpolation date
sample - sample points on which interpolation should be done
Returns:
a new instance, interpolated at specified date

computeJacobianMeanWrtCartesian

protected double[][] computeJacobianMeanWrtCartesian()
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.

Specified by:
computeJacobianMeanWrtCartesian in class Orbit
Returns:
6x6 Jacobian matrix
See Also:
Orbit.computeJacobianEccentricWrtCartesian(), Orbit.computeJacobianTrueWrtCartesian()

computeJacobianEccentricWrtCartesian

protected double[][] computeJacobianEccentricWrtCartesian()
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.

Specified by:
computeJacobianEccentricWrtCartesian in class Orbit
Returns:
6x6 Jacobian matrix
See Also:
Orbit.computeJacobianMeanWrtCartesian(), Orbit.computeJacobianTrueWrtCartesian()

computeJacobianTrueWrtCartesian

protected double[][] computeJacobianTrueWrtCartesian()
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.

Specified by:
computeJacobianTrueWrtCartesian in class Orbit
Returns:
6x6 Jacobian matrix
See Also:
Orbit.computeJacobianMeanWrtCartesian(), Orbit.computeJacobianEccentricWrtCartesian()

getJacobianWrtParameters

public void getJacobianWrtParameters(PositionAngle type,
                                     double[][] jacobian)
Compute the Jacobian of the Cartesian parameters with respect to the orbital 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.

Overrides:
getJacobianWrtParameters in class Orbit
Parameters:
type - type of the position angle to use
jacobian - placeholder 6x6 (or larger) matrix to be filled with the Jacobian, if matrix is larger than 6x6, only the 6x6 upper left corner will be modified

computeJacobianCartesianWrtTrue

protected double[][] computeJacobianCartesianWrtTrue()
Compute the Jacobian of the Cartesian parameters with respect to the orbital parameters with true angle.

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

Returns:
6x6 Jacobian matrix
See Also:
computeJacobianMeanWrtCartesian(), computeJacobianEccentricWrtCartesian()

orbitAddKeplerContribution

protected void orbitAddKeplerContribution(PositionAngle type,
                                          double gm,
                                          double[] pDot)
Add the contribution of the Keplerian motion to parameters derivatives

This method is used by numerical propagators to evaluate the part of Keplerrian motion to evolution of the orbital state.

Specified by:
orbitAddKeplerContribution 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 equinoctial parameters object.

Overrides:
toString in class Object
Returns:
a string representation of this object


Copyright © 2017 CNES. All Rights Reserved.