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 -- http://mail.python.org/mailman/listinfo/python-list