fr.cnes.sirius.patrius.stela.orbits
Class StelaEquinoctialOrbit

java.lang.Object
  extended by org.orekit.orbits.Orbit
      extended by fr.cnes.sirius.patrius.stela.orbits.StelaEquinoctialOrbit
All Implemented Interfaces:
Serializable, TimeInterpolable<Orbit>, TimeShiftable<Orbit>, TimeStamped, PVCoordinatesProvider

public final class StelaEquinoctialOrbit
extends Orbit

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

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

Since:
1.3
Version:
$Id: StelaEquinoctialOrbit.java 17584 2017-05-10 13:26:39Z bignon $
Author:
Tiziana Sabatini
See Also:
Serialized Form
Concurrency :
immutable

Constructor Summary
StelaEquinoctialOrbit(double aIn, double exIn, double eyIn, double ixIn, double iyIn, double lMIn, Frame frame, AbsoluteDate date, double mu)
          Creates a new instance.
StelaEquinoctialOrbit(double aIn, double exIn, double eyIn, double ixIn, double iyIn, double lMIn, Frame frame, AbsoluteDate date, double mu, boolean isCorrectedIn)
          Creates a new instance.
StelaEquinoctialOrbit(IOrbitalParameters params, Frame frame, AbsoluteDate date)
          Creates a new instance.
StelaEquinoctialOrbit(Orbit op)
          Constructor from any kind of orbital parameters with correction when inclination is close to 180°
StelaEquinoctialOrbit(Orbit op, boolean isCorrectedIn)
          Constructor from any kind of orbital parameters.
StelaEquinoctialOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu)
          Constructor from cartesian parameters.
 
Method Summary
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[] correctInclination(double ixIn, double iyIn)
          Deprecated. 
 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.
 StelaEquinoctialParameters 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.
 double getIx()
          Get the first component of the inclination vector.
 double getIy()
          Get the second component of the inclination vector.
 double getLE()
          Get the eccentric latitude argument.
 double getLM()
          Get the mean longitude argument.
 double getLv()
          Get the true latitude argument.
 IOrbitalParameters getParameters()
          Get underlying orbital parameters.
 PVCoordinates getPVCoordinates(AbsoluteDate otherDate, Frame otherFrame)
          Get the PVCoordinates of the body in the selected frame.
 OrbitType getType()
          Get the orbit type.
protected  PVCoordinates initPVCoordinates()
          Compute the position/velocity coordinates from the canonical parameters.
 Orbit interpolate(AbsoluteDate date, Collection<Orbit> sample)
          Get an interpolated instance.
 double kepEq(double e, double mMod)
          Implementation of a Kepler Equation Solver described by F.
 double[] mapOrbitToArray()
          Substitute for Orekit's OrbitTypes.mapOrbitToArray.
protected  void orbitAddKeplerContribution(PositionAngle type, double gm, double[] pDot)
          Add the contribution of the Keplerian motion to parameters derivatives
protected  Orbit orbitShiftedBy(double dt)
          Get a time-shifted orbit.
 
Methods inherited from class org.orekit.orbits.Orbit
addKeplerContribution, createInverseJacobian, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, getDate, getFrame, getJacobian, getJacobianWrtCartesian, getJacobianWrtParameters, getJacobianWrtParametersEccentric, getJacobianWrtParametersMean, getJacobianWrtParametersTrue, getKeplerianMeanMotion, getKeplerianPeriod, getKeplerianTransitionMatrix, getMu, getPVCoordinates, getPVCoordinates, isPositiveDefinite, setJacobianWrtParametersEccentric, setJacobianWrtParametersMean, setJacobianWrtParametersTrue, shiftedBy
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StelaEquinoctialOrbit

public StelaEquinoctialOrbit(IOrbitalParameters params,
                             Frame frame,
                             AbsoluteDate date)
Creates a new instance.

Parameters:
params - orbital parameters
frame - the frame in which the parameters are defined
date - date of the orbital parameters

StelaEquinoctialOrbit

public StelaEquinoctialOrbit(double aIn,
                             double exIn,
                             double eyIn,
                             double ixIn,
                             double iyIn,
                             double lMIn,
                             Frame frame,
                             AbsoluteDate date,
                             double mu)
Creates a new instance. Inclination is corrected when close to 180°

Parameters:
aIn - the semi-major axis (m)
exIn - the e cos(ω + Ω), first component of eccentricity vector
eyIn - the e sin(ω + Ω), second component of eccentricity vector
ixIn - the sin(i/2) cos(Ω), first component of inclination vector
iyIn - the sin(i/2) sin(Ω), second component of inclination vector
lMIn - the M + ω + Ω, mean longitude argument (rad)
frame - frame in which the parameters are defined
date - the date of the orbital parameters
mu - the central attraction coefficient (m3/s2)
Throws:
IllegalArgumentException - if eccentricity is equal to 1 or larger or

StelaEquinoctialOrbit

public StelaEquinoctialOrbit(double aIn,
                             double exIn,
                             double eyIn,
                             double ixIn,
                             double iyIn,
                             double lMIn,
                             Frame frame,
                             AbsoluteDate date,
                             double mu,
                             boolean isCorrectedIn)
Creates a new instance.

Parameters:
aIn - semi-major axis (m)
exIn - e cos(ω + Ω), first component of eccentricity vector
eyIn - e sin(ω + Ω), second component of eccentricity vector
ixIn - sin(i/2) cos(Ω), first component of inclination vector
iyIn - sin(i/2) sin(Ω), second component of inclination vector
lMIn - M + ω + Ω, mean longitude argument (rad)
frame - the frame in which the parameters are defined
date - date of the orbital parameters
mu - central attraction coefficient (m3/s2)
isCorrectedIn - Has the correction when inclination is around 180° to be done
Throws:
IllegalArgumentException - if eccentricity is equal to 1 or larger or

StelaEquinoctialOrbit

public StelaEquinoctialOrbit(PVCoordinates pvCoordinates,
                             Frame frame,
                             AbsoluteDate date,
                             double mu)
Constructor from cartesian parameters. No correction when i around 180°.

Parameters:
pvCoordinates - position and 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

StelaEquinoctialOrbit

public StelaEquinoctialOrbit(Orbit op)
Constructor from any kind of orbital parameters with correction when inclination is close to 180°

Parameters:
op - orbital parameters to copy

StelaEquinoctialOrbit

public StelaEquinoctialOrbit(Orbit op,
                             boolean isCorrectedIn)
Constructor from any kind of orbital parameters.

Parameters:
op - orbital parameters to copy
isCorrectedIn - Has the correction when inclination is around 180° to be done
Method Detail

getParameters

public IOrbitalParameters getParameters()
Get underlying orbital parameters.

Specified by:
getParameters in class Orbit
Returns:
orbital parameters

getEquinoctialParameters

public StelaEquinoctialParameters getEquinoctialParameters()
Getter for underlying equinoctial parameters.

Returns:
equinoctial parameters

interpolate

public Orbit 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.

Not implemented yet.

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

getType

public OrbitType getType()
Get the orbit type.

Not implemented yet.

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()
Description copied from class: Orbit
Get the first component of the inclination vector.

Specified by:
getHx in class Orbit
Returns:
first component of the inclination vector

getHy

public double getHy()
Description copied from class: Orbit
Get the second component of the inclination vector.

Specified by:
getHy in class Orbit
Returns:
second component of the inclination vector

getIx

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

Returns:
sin(i/2) cos(Ω), first component of the inclination vector

getIy

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

Returns:
sin(i/2) sin(Ω), second component of the inclination vector

getLE

public double getLE()
Get the eccentric latitude argument.

Not implemented yet.

Specified by:
getLE in class Orbit
Returns:
eccentric latitude argument (rad)

getLv

public double getLv()
Get the true latitude argument.

Not implemented yet.

Specified by:
getLv in class Orbit
Returns:
true latitude 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()
Description copied from class: Orbit
Get the eccentricity.

Specified by:
getE in class Orbit
Returns:
eccentricity

getI

public double getI()
Description copied from class: Orbit
Get the inclination.

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

initPVCoordinates

protected PVCoordinates initPVCoordinates()
Description copied from class: Orbit
Compute the position/velocity coordinates from the canonical parameters.

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

orbitShiftedBy

protected Orbit orbitShiftedBy(double dt)
Description copied from class: Orbit
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)

getPVCoordinates

public PVCoordinates getPVCoordinates(AbsoluteDate otherDate,
                                      Frame otherFrame)
                               throws OrekitException
Description copied from class: Orbit
Get the PVCoordinates of the body in the selected frame.

Specified by:
getPVCoordinates in interface PVCoordinatesProvider
Overrides:
getPVCoordinates in class Orbit
Parameters:
otherDate - current date
otherFrame - the frame where to define the position
Returns:
position/velocity of the body (m and m/s)
Throws:
OrekitException - if position cannot be computed in given frame

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.

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.

Not implemented yet.

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.

Not implemented yet.

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

orbitAddKeplerContribution

protected void orbitAddKeplerContribution(PositionAngle type,
                                          double gm,
                                          double[] pDot)
Description copied from class: Orbit
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)

mapOrbitToArray

public double[] mapOrbitToArray()
Substitute for Orekit's OrbitTypes.mapOrbitToArray. Warning, unlike other Orekit Orbits lm is returned in second position

Returns:
an array with the following parameters, in this order :
  • a
  • lm
  • ey
  • ix
  • iy
  • ex

kepEq

public double kepEq(double e,
                    double mMod)
Implementation of a Kepler Equation Solver described by F. Landis Markley. (without Pade correction for e>0,75 and E<45deg)

Parameters:
e - eccentricity
mMod - mean anomaly
Returns:
eccentric anomaly in [0;2π]

correctInclination

@Deprecated
public double[] correctInclination(double ixIn,
                                              double iyIn)
Deprecated. 

Inclination correction because of inclination singularity in StelaEquinoctial parameters around 180deg.
This method is deprecated, use StelaEquinoctialParameters.correctInclination(double, double) instead.

Parameters:
ixIn - first component of inclination vector
iyIn - second component of inclination vector
Returns:
corrected inclination components


Copyright © 2017 CNES. All Rights Reserved.