LinearInterpolator — wiki
import Numeric
def linear_interpolate(start, stop, seconds, fps=30):
"""
Given a start and stop vector (2 or 3 element tuple), and a time period
at a default 30 fps, yield a sequence of vectors which interpolate
between stop and start.
"""
start = Numeric.array(start, Numeric.Float)
stop = Numeric.array(stop, Numeric.Float)
diff = stop - start
inc = 1.0 / fps
step = diff * inc
current = Numeric.array(start)
stop_second = inc * 2
while seconds > stop_second:
seconds -= inc
current += step
yield tuple(current)
yield tuple(stop)
Comments
After playing around with this a little bit I noticed that there are several things needing improvement. The first is on line 13, which should read:
step = diff * inc / seconds
-- 23 April 2007 Duoas
page migrated to new wiki