## Class TorqueFree

• All Implemented Interfaces:
AttitudeProvider

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
• ### Constructor Summary

Constructors
Constructor Description
TorqueFree​(Attitude initialAttitude, Inertia inertia)
Simple constructor.
• ### Method Summary

All 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
• ### Constructor Detail

• #### TorqueFree

public TorqueFree​(Attitude initialAttitude,
Inertia inertia)
Simple constructor.
Parameters:
initialAttitude - initial attitude
inertia - spacecraft inertia
• ### 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 interface AttitudeProvider
Parameters:
pvProv - local position-velocity provider around current date
date - current date
frame - 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 interface AttitudeProvider
Type Parameters:
T - type of the field elements
Parameters:
pvProv - local position-velocity provider around current date
date - current date
frame - reference frame from which attitude is computed
Returns:
attitude on the specified date and position-velocity state