On Mon, Aug 16, 2010 at 8:43 PM, Mark Reed <[email protected]> wrote:

> I want to calculate a straight path of points between two points and
> each frame do:
>
> sprite.x, sprite.y = sprite.path[step]
> step++
>
> And have the sprite move along that line.  I've lost all basic math
> skills, and don't want to spend an hour debugging such a simple thing.
>
> Mark

Hi,

What you probably want is
lerp<http://en.wikipedia.org/wiki/Linear_interpolation>(linear
interpolation), which linearly interpolates between two 2D points.
In practice, you'll want to use time for x, so you use two lerp commands,
one for the x coordinate and one for the y coordinate:

def lerp(a,b,x):
    #Actually, this function is more complicated, but for the
    #special case of time ranging from 0.0 to 1.0, it can be written:
    return a + x*(b-a)
start_point = [#blah1,#blah2]
end_point = [#blah3,#blah4]
point = [ lerp(start_point[0],end_point[0],time),
lerp(start_point[1],end_point[1],time) ]
#Not tested, but should work.  As time goes from 0.0 to 1.0, "point" will
#be a point from "start_point" to "end_point".

If you want to be really really really specific with your sprite's movement,
there are some spline classes you can use to make your sprite be
interpolated through multiple points, with a smooth path between them.
There's probably some easily accessible ones on pygame.org--I know that
there's a Kochanek-Bartels spline class in the math section of my graphics
library.

Ian

Reply via email to