Convert from LVLH to ECEF and vice versa

is there any existing function to convert from a LVLH to ECEF and vice versa?

I checked some information and they states that, it’s not quite possible to directly convert from a LVLH to a ECEF, there must be an inertial (ECI or EME2000 ) coordinate frames as the mediate? so it is like LVLH -> EME2000 -> ECEF or ECEF -> EME2000 -> LVLH.
may i know whether it is correct?

thanks

Hi @wendy welcome

Yes, this is correct for two different reasons.

The first reason is that for most frames pairs, there are no direct conversion between them, as frames are only connected to its parent frame, which itself is connected to its parent frame and so on until a root frame (GCRF for Orekit) is found. So frames are organized in a dynamical tree rooted at GCRF. This means that we can always convert from any frame to any other frame, but internally this is done by walking the tree, finding the closest common ancestor of origin and destination frames. This is what origin.getTransformTo(destination, date) does. So using an intermediate frame is not really a problem, it is common practice.

The second reason is that in Orekit Local Orbital Frames implement the LOF interface and are mostly implemented in the LOFType enumerate (plus a couple other specialized implementations), but they do not belong to the Frame hierarchy and are not inserted in the dynamical frames tree. The root reason for this is a separation between propagator (local orbital frames depend on a propagation model) and frames which should be available at any date. This is also the reason why there is no SpacecraftFrame per se (it existed long ago and was removed in 2014 because binding Frame and Propagator together wreak havoc). This was replaced by SpacecraftState having a toTransform() method and LOF having various transformFromLOF methods. So for these specific classes, you have to combine the transforms by yourself instead of having the frame tree walked for you automatically.

2 Likes

thanks @luc for this clarification and that’s very helpful ! :slight_smile: