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 to properly factor in the desired timeframe. The second is the handling of seconds and stop_second. The latter is actually completely unnecessary and can be replaced with inc.

-- 23 April 2007 Duoas



page migrated to new wiki