Package org.orekit.attitudes
Class TorqueFree
- java.lang.Object
-
- org.orekit.attitudes.TorqueFree
-
- All Implemented Interfaces:
AttitudeProvider
,EventDetectorsProvider
public class TorqueFree extends Object implements AttitudeProvider
This class handles torque-free motion of a general (non-symmetrical) body.This attitude model is analytical, it can be called at any arbitrary date before or after the date of the initial attitude. Despite being an analytical model, it is not an approximation. It provides the attitude exactly in O(1) time.
The equations are based on Landau and Lifchitz Course of Theoretical Physics, Mechanics vol 1, chapter 37. Some adaptations have been made to Landau and Lifchitz equations:
- inertia can be in any order
- initial conditions can be arbitrary
- signs of several equations have been fixed to work for all initial conditions
- equations have been rewritten to work in all octants
- the φ angle model is based on a precomputed quadrature over one period computed at construction (the Landau and Lifchitz equations 37.17 to 37.20 seem to be wrong)
The precomputed quadrature is performed numerically, but as it is performed only once at construction and the full integrated model over one period is saved, it can be applied analytically later on for any number of periods, hence we consider this attitude mode to be analytical.
- Since:
- 12.0
- Author:
- Luc Maisonobe, Lucas Girodet
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Constructor Description TorqueFree(Attitude initialAttitude, Inertia inertia)
Simple constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends CalculusFieldElement<T>>
FieldAttitude<T>getAttitude(FieldPVCoordinatesProvider<T> pvProv, FieldAbsoluteDate<T> date, Frame frame)
Compute the attitude corresponding to an orbital state.Attitude
getAttitude(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame)
Compute the attitude corresponding to an orbital state.Inertia
getInertia()
Get the spacecraft inertia.Attitude
getInitialAttitude()
Get the initial attitude.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.attitudes.AttitudeProvider
getAttitudeRotation, getAttitudeRotation, getEventDetectors, getFieldEventDetectors
-
Methods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getEventDetectors, getFieldEventDetectors
-
-
-
-
Method Detail
-
getInitialAttitude
public Attitude getInitialAttitude()
Get the initial attitude.- Returns:
- initial attitude
-
getInertia
public Inertia getInertia()
Get the spacecraft inertia.- Returns:
- spacecraft inertia
-
getAttitude
public Attitude getAttitude(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame)
Compute the attitude corresponding to an orbital state.- Specified by:
getAttitude
in interfaceAttitudeProvider
- Parameters:
pvProv
- local position-velocity provider around current datedate
- current dateframe
- reference frame from which attitude is computed- Returns:
- attitude on the specified date and position-velocity state
-
getAttitude
public <T extends CalculusFieldElement<T>> FieldAttitude<T> getAttitude(FieldPVCoordinatesProvider<T> pvProv, FieldAbsoluteDate<T> date, Frame frame)
Compute the attitude corresponding to an orbital state.- Specified by:
getAttitude
in interfaceAttitudeProvider
- Type Parameters:
T
- type of the field elements- Parameters:
pvProv
- local position-velocity provider around current datedate
- current dateframe
- reference frame from which attitude is computed- Returns:
- attitude on the specified date and position-velocity state
-
-