moeyensj / thor

Tracklet-less Heliocentric Orbit Recovery
BSD 3-Clause "New" or "Revised" License
41 stars 14 forks source link

Fix range_and_transform for orbits interior to the observer's orbit #116

Closed moeyensj closed 1 year ago

moeyensj commented 1 year ago

Orbits entirely interior to the observer's orbit will have two possible solutions that intersect the orbit when calculating the topocentric distance.

With this PR we now select the solution closest to the test orbit's position vector.

However, when the relative observing geometry is such that the two solutions are nearly parallel (nearly perpendicular to the line of sight which is itself nearly tangential to the object's orbit) then solutions appear to be more numerically sensitive. For 2020 AV2, theta_x and theta_y are typically ~1e-5 degrees (~100 milliarcseconds), however, in this instance of observing geometry theta_x degrades to ~1e-4 degrees (~1 arcsec) while theta_y remains the same.

Orbit configuration for this corner case: test_orbit_geometry

moeyensj commented 1 year ago

Retrospective thought: The sensitivity could also come from the difficulty of generating aberrated (light-time corrected) ephemerides with PYOORB at this particular point in the observing geometry.

moeyensj commented 1 year ago

Unit tests are failing (I think) because PYOORB does not recognize "X05" as an observatory code with its default observatory code file (https://github.com/oorb/oorb/blob/master/data/OBSCODE.dat).

moeyensj commented 1 year ago

The GitHub workflows will be updated to handle an outdated observatory code file. I'm going to merge this as is since tests do pass locally.