# Rough notes and distillation prior to 24-03-26 Tudat Developer Meeting
## Ways in which orientations are defined in Tudat (especially thrust orientations)
- Issues that the current implementation has
- What we would want the (refactored) functionality to do; define any boundary conditions of the implementation
**J** (**issue**): Personally, the **issue** I have with the current setup is that **we encourage users to define orientations separately for thrust, rotational dynamics, aerodynamic guidance**, etc.
**J** (**want**): I would be in **favour** of making the user setup the body-fixed orientation separately beforehand (in most cases). This body-fixed orientation would then serve as a basis for the thrust orientation.
---
**D**: `DependentOrientationCalculator` _only available during the propagation, and not before after it?_
**D**: `DependentOrientationCalculator` requires the environment to be updated to the current time/state, and this is presently only supported inside the numerical propagation. This design could also be modified, but would take quite some work (and testing).
**D**: Depending on whether you are in the propagation or not, states would have to come from _either_ the current propagated state _or_ from the environment
**D**: `DependentOrientationCalculator` _only available during the propagation, and not before after it?
**D**: The guidance algorithm would need to 'know' which environmental properties need to be updated, and which need not be
**D**: Although I don't see any fundamental issues in changing the above, I propose that if we choose to tackle this issue, we do it separately from making the interfaces unified. One possible argument for _not_ doing this separately would be to subsume the `DependentOrientationCalculator` stuff into the `RotationalEphemeris`
**D**: Is it worth our time?
**D**: At present, there are (roughly) three distinct ways in which to define the body's orientation
- `RotationalEphemeris`, obtained from the environment during propagation, independent of propagation, exists as a function of time `f(t)`
- ODE integration of rotational dynamics. `f(x0, torque)` defined prior to simulation.
- *Users can use these results as `RotationalEphemeris` after obtaining results.* An `Interpolator` is a dependent in this optional step.
- `DependentOrientationCalculator` , Orientation can be defined by an algorithm which is dependent on the current translational state of the vehicle.
- `f(angle-of-attack, sideslip, bank)` defining trajectory <-> body-fixed
-
**J**: Reading all of this made me think that, perhaps, we should simply force users to propagate rotational dynamics every time?
**D/J:** Overkill in most cases.
**D**: I would be in favour of keeping interfaces for actually defining what is propagated different from an _a priori_ definition of the rotation. But, making the interfaces for a rotational ephemeris (fully defined _a priori_) and a 'dependent orientation calculator' (defining _a priori_ how the orientation is calculated from the state) less distinct, or even identical
> Perhaps they should stay distinct
*F*: I totally agree with this point! The important distinction is between numerical propagation of orientation _and_ prescribed orientation. Whether the prescribed orientation is set through Rotational Ephemerides or through a calculator that is used at every time step should not matter too much, in my opinion.
***D***: This is, I think, an important design driver for the new interfaces
## Compiled
(I intended on compiled boiled down points here, didn't really manage prior to the meeting)
- users define orientations separately for thrust, rotational dynamics, aerodynamic guidance.