T
- type of the field elementspublic class FieldSpacecraftState<T extends org.hipparchus.CalculusFieldElement<T>> extends Object implements FieldTimeStamped<T>, FieldTimeShiftable<FieldSpacecraftState<T>,T>
It contains an FieldOrbit
, or a FieldAbsolutePVCoordinates
if there
is no definite central body, plus the current mass and attitude at the intrinsic
FieldAbsoluteDate
. Quantities are guaranteed to be consistent in terms
of date and reference frame. The spacecraft state may also contain additional
states, which are simply named double arrays which can hold any user-defined
data.
The state can be slightly shifted to close dates. This actual shift varies
between FieldOrbit
and FieldAbsolutePVCoordinates
.
For attitude it is a linear extrapolation taking the spin rate into account
and no mass change. It is not intended as a replacement for proper
orbit and attitude propagation but should be sufficient for either small
time shifts or coarse accuracy.
The instance FieldSpacecraftState
is guaranteed to be immutable.
NumericalPropagator
,
SpacecraftState
Constructor and Description |
---|
FieldSpacecraftState(org.hipparchus.Field<T> field,
SpacecraftState state)
Convert a
FieldSpacecraftState . |
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva)
Build a spacecraft state from orbit only.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
FieldArrayDictionary<T> additional)
Build a spacecraft state from orbit only.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
FieldAttitude<T> attitude)
Build a spacecraft state from orbit and attitude.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
FieldAttitude<T> attitude,
FieldArrayDictionary<T> additional)
Build a spacecraft state from orbit and attitude.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
FieldAttitude<T> attitude,
T mass)
Build a spacecraft state from orbit, attitude and mass.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
FieldAttitude<T> attitude,
T mass,
FieldArrayDictionary<T> additional)
Build a spacecraft state from orbit, attitude and mass.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
FieldAttitude<T> attitude,
T mass,
FieldArrayDictionary<T> additional,
FieldArrayDictionary<T> additionalDot)
Build a spacecraft state from orbit, attitude and mass.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
T mass)
Create a new instance from orbit and mass.
|
FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva,
T mass,
FieldArrayDictionary<T> additional)
Create a new instance from orbit and mass.
|
FieldSpacecraftState(FieldOrbit<T> orbit)
Build a spacecraft state from orbit only.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
FieldArrayDictionary<T> additional)
Build a spacecraft state from orbit and additional states.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
FieldAttitude<T> attitude)
Build a spacecraft state from orbit and attitude.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
FieldAttitude<T> attitude,
FieldArrayDictionary<T> additional)
Build a spacecraft state from orbit attitude and additional states.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
FieldAttitude<T> attitude,
T mass)
Build a spacecraft state from orbit, attitude and mass.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
FieldAttitude<T> attitude,
T mass,
FieldArrayDictionary<T> additional)
Build a spacecraft state from orbit, attitude, mass and additional states.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
FieldAttitude<T> attitude,
T mass,
FieldArrayDictionary<T> additional,
FieldArrayDictionary<T> additionalDot)
Build a spacecraft state from orbit, attitude, mass, additional states and derivatives.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
T mass)
Create a new instance from orbit and mass.
|
FieldSpacecraftState(FieldOrbit<T> orbit,
T mass,
FieldArrayDictionary<T> additional)
Create a new instance from orbit, mass and additional states.
|
Modifier and Type | Method and Description |
---|---|
FieldSpacecraftState<T> |
addAdditionalState(String name,
T... value)
Add an additional state.
|
FieldSpacecraftState<T> |
addAdditionalStateDerivative(String name,
T... value)
Add an additional state derivative.
|
void |
ensureCompatibleAdditionalStates(FieldSpacecraftState<T> state)
Check if two instances have the same set of additional states available.
|
T |
getA()
Get the semi-major axis.
|
FieldAbsolutePVCoordinates<T> |
getAbsPVA()
Get the absolute position-velocity-acceleration.
|
T[] |
getAdditionalState(String name)
Get an additional state.
|
T[] |
getAdditionalStateDerivative(String name)
Get an additional state derivative.
|
FieldArrayDictionary<T> |
getAdditionalStatesDerivatives()
Get an unmodifiable map of additional states derivatives.
|
FieldArrayDictionary<T> |
getAdditionalStatesValues()
Get an unmodifiable map of additional states.
|
FieldAttitude<T> |
getAttitude()
Get the attitude.
|
FieldAbsoluteDate<T> |
getDate()
Get the date.
|
T |
getE()
Get the eccentricity.
|
T |
getEquinoctialEx()
Get the first component of the eccentricity vector (as per equinoctial parameters).
|
T |
getEquinoctialEy()
Get the second component of the eccentricity vector (as per equinoctial parameters).
|
Frame |
getFrame()
Get the defining frame.
|
T |
getHx()
Get the first component of the inclination vector (as per equinoctial parameters).
|
T |
getHy()
Get the second component of the inclination vector (as per equinoctial parameters).
|
T |
getI()
Get the inclination.
|
T |
getKeplerianMeanMotion()
Get the Keplerian mean motion.
|
T |
getKeplerianPeriod()
Get the Keplerian period.
|
T |
getLE()
Get the eccentric latitude argument (as per equinoctial parameters).
|
T |
getLM()
Get the mean longitude argument (as per equinoctial parameters).
|
T |
getLv()
Get the true latitude argument (as per equinoctial parameters).
|
T |
getMass()
Gets the current mass.
|
T |
getMu()
Get the central attraction coefficient.
|
FieldOrbit<T> |
getOrbit()
Get the current orbit.
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getPosition()
Get the position in orbit definition frame.
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getPosition(Frame outputFrame)
Get the position in given output frame.
|
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates()
Get the
TimeStampedFieldPVCoordinates in orbit definition frame. |
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates(Frame outputFrame)
Get the
TimeStampedFieldPVCoordinates in given output frame. |
boolean |
hasAdditionalState(String name)
Check if an additional state is available.
|
boolean |
hasAdditionalStateDerivative(String name)
Check if an additional state derivative is available.
|
boolean |
isOrbitDefined()
Check if the state contains an orbit part.
|
FieldSpacecraftState<T> |
shiftedBy(double dt)
Get a time-shifted state.
|
FieldSpacecraftState<T> |
shiftedBy(T dt)
Get a time-shifted state.
|
SpacecraftState |
toSpacecraftState()
To convert a FieldSpacecraftState instance into a SpacecraftState instance.
|
FieldStaticTransform<T> |
toStaticTransform()
Compute the static transform from state defining frame to spacecraft frame.
|
String |
toString() |
FieldTransform<T> |
toTransform()
Compute the transform from state defining frame to spacecraft frame.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
durationFrom
public FieldSpacecraftState(FieldOrbit<T> orbit)
FieldAttitude and mass are set to unspecified non-null arbitrary values.
orbit
- the orbitpublic FieldSpacecraftState(FieldOrbit<T> orbit, FieldAttitude<T> attitude) throws IllegalArgumentException
Mass is set to an unspecified non-null arbitrary value.
orbit
- the orbitattitude
- attitudeIllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(FieldOrbit<T> orbit, T mass)
FieldAttitude law is set to an unspecified default attitude.
orbit
- the orbitmass
- the mass (kg)public FieldSpacecraftState(FieldOrbit<T> orbit, FieldAttitude<T> attitude, T mass) throws IllegalArgumentException
orbit
- the orbitattitude
- attitudemass
- the mass (kg)IllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(FieldOrbit<T> orbit, FieldArrayDictionary<T> additional)
FieldAttitude and mass are set to unspecified non-null arbitrary values.
orbit
- the orbitadditional
- additional statespublic FieldSpacecraftState(FieldOrbit<T> orbit, FieldAttitude<T> attitude, FieldArrayDictionary<T> additional) throws IllegalArgumentException
Mass is set to an unspecified non-null arbitrary value.
orbit
- the orbitattitude
- attitudeadditional
- additional statesIllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(FieldOrbit<T> orbit, T mass, FieldArrayDictionary<T> additional)
FieldAttitude law is set to an unspecified default attitude.
orbit
- the orbitmass
- the mass (kg)additional
- additional statespublic FieldSpacecraftState(FieldOrbit<T> orbit, FieldAttitude<T> attitude, T mass, FieldArrayDictionary<T> additional)
orbit
- the orbitattitude
- attitudemass
- the mass (kg)additional
- additional states (may be null if no additional states are available)public FieldSpacecraftState(FieldOrbit<T> orbit, FieldAttitude<T> attitude, T mass, FieldArrayDictionary<T> additional, FieldArrayDictionary<T> additionalDot) throws IllegalArgumentException
orbit
- the orbitattitude
- attitudemass
- the mass (kg)additional
- additional states (may be null if no additional states are available)additionalDot
- additional states derivatives(may be null if no additional states derivative sare available)IllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(org.hipparchus.Field<T> field, SpacecraftState state)
FieldSpacecraftState
.field
- field to which the elements belongstate
- state to convertpublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva)
Attitude and mass are set to unspecified non-null arbitrary values.
absPva
- position-velocity-accelerationpublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, FieldAttitude<T> attitude) throws IllegalArgumentException
Mass is set to an unspecified non-null arbitrary value.
absPva
- position-velocity-accelerationattitude
- attitudeIllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, T mass)
Attitude law is set to an unspecified default attitude.
absPva
- position-velocity-accelerationmass
- the mass (kg)public FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, FieldAttitude<T> attitude, T mass) throws IllegalArgumentException
absPva
- position-velocity-accelerationattitude
- attitudemass
- the mass (kg)IllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, FieldArrayDictionary<T> additional)
Attitude and mass are set to unspecified non-null arbitrary values.
absPva
- position-velocity-accelerationadditional
- additional statespublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, FieldAttitude<T> attitude, FieldArrayDictionary<T> additional) throws IllegalArgumentException
Mass is set to an unspecified non-null arbitrary value.
absPva
- position-velocity-accelerationattitude
- attitudeadditional
- additional statesIllegalArgumentException
- if orbit and attitude dates
or frames are not equalpublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, T mass, FieldArrayDictionary<T> additional)
Attitude law is set to an unspecified default attitude.
absPva
- position-velocity-accelerationmass
- the mass (kg)additional
- additional statespublic FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, FieldAttitude<T> attitude, T mass, FieldArrayDictionary<T> additional)
absPva
- position-velocity-accelerationattitude
- attitudemass
- the mass (kg)additional
- additional states (may be null if no additional states are available)public FieldSpacecraftState(FieldAbsolutePVCoordinates<T> absPva, FieldAttitude<T> attitude, T mass, FieldArrayDictionary<T> additional, FieldArrayDictionary<T> additionalDot) throws IllegalArgumentException
absPva
- position-velocity-accelerationattitude
- attitudemass
- the mass (kg)additional
- additional states (may be null if no additional states are available)additionalDot
- additional states derivatives(may be null if no additional states derivatives are available)IllegalArgumentException
- if orbit and attitude dates
or frames are not equal@SafeVarargs public final FieldSpacecraftState<T> addAdditionalState(String name, T... value)
SpacecraftState
instances are immutable,
so this method does not change the instance, but rather
creates a new instance, which has the same orbit, attitude, mass
and additional states as the original instance, except it also
has the specified state. If the original instance already had an
additional state with the same name, it will be overridden. If it
did not have any additional state with that name, the new instance
will have one more additional state than the original instance.
name
- name of the additional statevalue
- value of the additional statehasAdditionalState(String)
,
getAdditionalState(String)
,
getAdditionalStatesValues()
@SafeVarargs public final FieldSpacecraftState<T> addAdditionalStateDerivative(String name, T... value)
FieldSpacecraftState
instances are immutable,
so this method does not change the instance, but rather
creates a new instance, which has the same components as the original
instance, except it also has the specified state derivative. If the
original instance already had an additional state derivative with the
same name, it will be overridden. If it did not have any additional
state derivative with that name, the new instance will have one more
additional state derivative than the original instance.name
- name of the additional state derivativevalue
- value of the additional state derivativehasAdditionalStateDerivative(String)
,
getAdditionalStateDerivative(String)
,
getAdditionalStatesDerivatives()
public boolean isOrbitDefined()
A state contains either an absolute
position-velocity-acceleration
or an orbit
.
getOrbit()
will not throw an exception), or false if the state contains an
absolut position-velocity-acceleration (in which case getAbsPVA()
will not throw an exception)public FieldSpacecraftState<T> shiftedBy(double dt)
The state can be slightly shifted to close dates. This shift is based on a simple Keplerian model for orbit, a linear extrapolation for attitude taking the spin rate into account and neither mass nor additional states changes. It is not intended as a replacement for proper orbit and attitude propagation but should be sufficient for small time shifts or coarse accuracy.
As a rough order of magnitude, the following table shows the extrapolation
errors obtained between this simple shift method and an numerical
propagator
for a low Earth Sun Synchronous Orbit, with a 20x20 gravity field,
Sun and Moon third bodies attractions, drag and solar radiation pressure.
Beware that these results will be different for other orbits.
interpolation time (s) | position error without derivatives (m) | position error with derivatives (m) |
---|---|---|
60 | 18 | 1.1 |
120 | 72 | 9.1 |
300 | 447 | 140 |
600 | 1601 | 1067 |
900 | 3141 | 3307 |
shiftedBy
in interface TimeShiftable<FieldSpacecraftState<T extends org.hipparchus.CalculusFieldElement<T>>>
dt
- time shift in secondspublic FieldSpacecraftState<T> shiftedBy(T dt)
The state can be slightly shifted to close dates. This shift is based on a simple Keplerian model for orbit, a linear extrapolation for attitude taking the spin rate into account and neither mass nor additional states changes. It is not intended as a replacement for proper orbit and attitude propagation but should be sufficient for small time shifts or coarse accuracy.
As a rough order of magnitude, the following table shows the extrapolation
errors obtained between this simple shift method and an numerical
propagator
for a low Earth Sun Synchronous Orbit, with a 20x20 gravity field,
Sun and Moon third bodies attractions, drag and solar radiation pressure.
Beware that these results will be different for other orbits.
interpolation time (s) | position error without derivatives (m) | position error with derivatives (m) |
---|---|---|
60 | 18 | 1.1 |
120 | 72 | 9.1 |
300 | 447 | 140 |
600 | 1601 | 1067 |
900 | 3141 | 3307 |
shiftedBy
in interface FieldTimeShiftable<FieldSpacecraftState<T extends org.hipparchus.CalculusFieldElement<T>>,T extends org.hipparchus.CalculusFieldElement<T>>
dt
- time shift in secondspublic FieldAbsolutePVCoordinates<T> getAbsPVA() throws OrekitIllegalStateException
A state contains either an absolute
position-velocity-acceleration
or an orbit
. Which
one is present can be checked using isOrbitDefined()
.
OrekitIllegalStateException
- if position-velocity-acceleration is null,
which mean the state rather contains an FieldOrbit
isOrbitDefined()
,
getOrbit()
public FieldOrbit<T> getOrbit() throws OrekitIllegalStateException
A state contains either an absolute
position-velocity-acceleration
or an orbit
. Which
one is present can be checked using isOrbitDefined()
.
OrekitIllegalStateException
- if orbit is null,
which means the state rather contains an absolute
position-velocity-acceleration
isOrbitDefined()
,
getAbsPVA()
public FieldAbsoluteDate<T> getDate()
getDate
in interface FieldTimeStamped<T extends org.hipparchus.CalculusFieldElement<T>>
public Frame getFrame()
public boolean hasAdditionalState(String name)
name
- name of the additional stateaddAdditionalState(String, CalculusFieldElement...)
,
getAdditionalState(String)
,
getAdditionalStatesValues()
public boolean hasAdditionalStateDerivative(String name)
name
- name of the additional state derivativeaddAdditionalStateDerivative(String, CalculusFieldElement...)
,
getAdditionalStateDerivative(String)
,
getAdditionalStatesDerivatives()
public void ensureCompatibleAdditionalStates(FieldSpacecraftState<T> state) throws org.hipparchus.exception.MathIllegalArgumentException
Only the names and dimensions of the additional states are compared, not their values.
state
- state to compare to instanceorg.hipparchus.exception.MathIllegalArgumentException
- if an additional state does not have
the same dimension in both statespublic T[] getAdditionalState(String name)
name
- name of the additional stateaddAdditionalState(String, CalculusFieldElement...)
,
hasAdditionalState(String)
,
getAdditionalStatesValues()
public T[] getAdditionalStateDerivative(String name)
name
- name of the additional state derivativeaddAdditionalStateDerivative(String, CalculusFieldElement...)
,
hasAdditionalStateDerivative(String)
,
getAdditionalStatesDerivatives()
public FieldArrayDictionary<T> getAdditionalStatesValues()
addAdditionalState(String, CalculusFieldElement...)
,
hasAdditionalState(String)
,
getAdditionalState(String)
public FieldArrayDictionary<T> getAdditionalStatesDerivatives()
addAdditionalStateDerivative(String, CalculusFieldElement...)
,
hasAdditionalStateDerivative(String)
,
getAdditionalStateDerivative(String)
public FieldTransform<T> toTransform()
The spacecraft frame origin is at the point defined by the orbit, and its orientation is defined by the attitude.
public FieldStaticTransform<T> toStaticTransform()
toTransform()
public T getMu()
public T getKeplerianPeriod()
The Keplerian period is computed directly from semi major axis and central acceleration constant.
public T getKeplerianMeanMotion()
The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
public T getA()
public T getEquinoctialEx()
getE()
public T getEquinoctialEy()
getE()
public T getHx()
getI()
public T getHy()
getI()
public T getLv()
public T getLE()
public T getLM()
public T getE()
getEquinoctialEx()
,
getEquinoctialEy()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getPosition()
public TimeStampedFieldPVCoordinates<T> getPVCoordinates()
TimeStampedFieldPVCoordinates
in orbit definition frame.
Compute the position and velocity of the satellite. This method caches its
results, and recompute them only when the method is called with a new value
for mu. The result is provided as a reference to the internally cached
TimeStampedFieldPVCoordinates
, so the caller is responsible to copy it in a separate
TimeStampedFieldPVCoordinates
if it needs to keep the value for a while.
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getPosition(Frame outputFrame)
outputFrame
- frame in which position should be definedgetPVCoordinates(Frame)
public TimeStampedFieldPVCoordinates<T> getPVCoordinates(Frame outputFrame)
TimeStampedFieldPVCoordinates
in given output frame.
Compute the position and velocity of the satellite. This method caches its
results, and recompute them only when the method is called with a new value
for mu. The result is provided as a reference to the internally cached
TimeStampedFieldPVCoordinates
, so the caller is responsible to copy it in a separate
TimeStampedFieldPVCoordinates
if it needs to keep the value for a while.
outputFrame
- frame in which coordinates should be definedpublic FieldAttitude<T> getAttitude()
public T getMass()
public SpacecraftState toSpacecraftState()
Copyright © 2002-2023 CS GROUP. All rights reserved.