I think there is a problem when using direct location in Rugged with activation of light time correction and atmospheric correction.
In fact the light time correction is applied first here. in
computeWithLightTimeCorrection the spacecraft position is shifted with a deltaT, which correspond to the light time from the point on ground and the spacecraft here.
Then the atmospheric refraction is applied, ignoring this shift (the geodetic point from
computeWithLightTimeCorrection is only used to retrieve the last atmospheric layer and used as candidate to find intersection).
It can be easily observed empirically using a nadir los with only light time correction and, then with light time correction and atmospheric refraction applied. The 2 direct location will be shifted by about 1.2m.
I’m wondering how to correct that. I think it depends if the distance difference between los with atmospheric refraction (several strait lines) and without (src/main/java/org/orekit/rugged/api/Rugged.java · master · Orekit / Rugged · GitLab) can be neglected or not.
If we consider that distance are the same, then we can propagate the shifted position of the spacecraft at the end of
If not, Atmospheric refraction should be applied first. In atmospheric refraction the distance have to be calculated (by summing iteratively the distance at each layer), and the new los have to be propagated.
On the Earth, Since the atmospheric refraction (for standard wavelength), appears at low distance (src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java · master · Orekit / Rugged · GitLab) 40km. I think it can be neglected (to be confirmed by an emprical test with agile satellite like Pleiades with 45° roll/pitch).
What do you think about that ?