1818from dateutil .parser import parse
1919from datetime import datetime
2020import numpy as np
21- from numpy import sin , cos , tan , sqrt , radians , arctan2 , hypot , degrees , mod
21+ from numpy import sin , cos , tan , sqrt , radians , arctan2 , hypot , degrees
2222try :
2323 from astropy .time import Time
2424 from astropy import units as u
@@ -34,12 +34,20 @@ def __init__(self):
3434 self .b = self .a * (1 - self .f ) # semi-minor axis
3535#%% to AER (azimuth, elevation, range)
3636def ecef2aer (x , y , z , lat0 , lon0 , h0 , ell = EarthEllipsoid (), deg = True ):
37+ """
38+
39+ output: azimuth (deg), elevation (deg), slant range (m) for Obs->Point
40+ """
3741 xEast , yNorth , zUp = ecef2enu (x , y , z , lat0 , lon0 , h0 , ell , deg = deg )
3842
3943 return enu2aer (xEast , yNorth , zUp , deg = deg )
4044
4145
4246def eci2aer (eci , lat0 , lon0 , h0 , t ):
47+ """
48+
49+ output: azimuth (deg), elevation (deg), slant range (m) for Obs->Point
50+ """
4351 ecef = eci2ecef (eci , t )
4452
4553 return ecef2aer (ecef [:, 0 ], ecef [:, 1 ], ecef [:, 2 ], lat0 , lon0 , h0 )
@@ -48,25 +56,38 @@ def eci2aer(eci, lat0, lon0, h0, t):
4856def enu2aer (e , n , u , deg = True ):
4957 """
5058 input: east, north, up [m]
59+
60+ output: azimuth (deg), elevation (deg), slant range (m) for Obs->Point
5161 """
5262 r = hypot (e , n )
5363 slantRange = hypot (r , u )
5464 elev = arctan2 (u , r )
55- az = mod ( arctan2 (e , n ), 2 * arctan2 (0 , - 1 ))
65+ az = arctan2 (e , n ) % ( 2 * arctan2 (0 , - 1 ))
5666 if deg :
5767 return degrees (az ), degrees (elev ), slantRange
5868 else :
5969 return az , elev , slantRange # radians
6070
6171
6272def geodetic2aer (lat , lon , h , lat0 , lon0 , h0 , ell = EarthEllipsoid (), deg = True ):
73+ """
74+ gives az,el,range from observer looking to point.
75+
76+ input: Point(s): lat, lon, h (altitude, meters)
77+ Observer: lat0, lon0, h0 (altitude, meters)
78+
79+ output: azimuth (deg), elevation (deg), slant range (m) for Obs->Point
80+ """
6381 e , n , u = geodetic2enu (lat , lon , h , lat0 , lon0 , h0 , ell , deg = deg )
6482
6583 return enu2aer (e , n , u , deg = deg )
6684
6785
6886def ned2aer (n , e , d , deg = True ):
87+ """
6988
89+ output: azimuth (deg), elevation (deg), slant range (m) for Obs->Point
90+ """
7091 return enu2aer (e , n , - d , deg = deg )
7192
7293#%% to ECEF
0 commit comments