Filling in Degrees in a Circle (Astronomy)
Maric Michaud
maric at aristote.info
Fri Aug 22 20:17:47 EDT 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