Filling in Degrees in a Circle (Astronomy)

Maric Michaud maric at aristote.info
Sat Aug 23 02:17:47 CEST 2008


Le Saturday 23 August 2008 01:12:48 W. eWatson, vous avez écrit :
> The other night I surveyed a site for astronomical use by measuring the
> altitude (0-90 degrees above the horizon) and az (azimuth, 0 degrees north
> clockwise around the site to 360 degrees, almost north again) of obstacles,
> trees. My purpose was to feed this profile of obstacles (trees) to an
> astronomy program that would then account for not sighting objects below
> the trees.
>
> When I got around to entering them into the program by a file, I found it
> required the alt at 360 azimuth points in order from 0 to 360 (same as 0).
> Instead I have about 25 points, and expected the program to be able to do
> simple linear interpolation between those.
>
> Is there some simple operational device in Python that would allow me to
> create an array (vector) of 360 points from my data by interpolating
> between azimuth points when necessary? All my data I rounded to the nearest
> integer. Maybe there's an interpolation operator?
>
> As an example, supposed I had made 3 observations: (0,0) (180,45) and
> (360,0). I would want some thing like (note the slope of the line from 0 to
> 179 is 45/180 or 0.25):
> alt: 0, 0.25, 0.50, 0.75, ... 44.75, 45.0
> az : 0, 1,    2,    3,              180
>
> Of course, I don't need the az.

Not sure I got it, but is that fulfill your specs ?

>>>[20]: def interpolate(a, b) :
    slope = float(b[1] - a[1]) / (b[0] - a[0])
    return [ slope * float(i) for i in xrange(b[0]-a[0] + 1) ]
   ....:

>>>[23]: interpolate((0, 0), (180, 45))
...[23]:
[0.0,
 0.25,
 0.5,
 0.75,
....
 44.5,
 44.75,
 45.0]

>>>[29]: interpolate((80, 20), (180, 45))
[0.0,
 0.25,
 0.5,
 0.75,
 1.0,
 1.25,
...
 24.5,
 24.75,
 25.0]



-- 
_____________

Maric Michaud



More information about the Python-list mailing list