Satellite look angle to observer's geographic longitude and latitude

58 Views Asked by At

Suppose a satellite is above the Earth at a given elevation (sat_elevation), hovering above a certain geographic longitude (sat_long) and latitude (sat_lat). A laser beam is pointed at an azimuth θ $\in[0^{\circ}, 360^{\circ})$ and altitude φ $\in[0^{\circ}, 90^{\circ}]$ (where $0^{\circ}$ corresponds to the nadir, i.e. directly below the satellite), like so:

Figure

The figure is simplified in 2D, but imagine a three-dimensional sphere.

My goal is to compute the geographic longitude and latitude that the laser beam hits the Earth at. In other words, the geographical coordinates the observer needs to be at, in order to see the laser beam. I'm hoping to write a Python function for this that takes everything as an input, e.g.:

def find_observer_coordinates(sat_long, sat_lat, sat_elevation, pointing_azimuth, pointing_altitude, earth_radius):
    # ...

    return observer_long, observer_lat