[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pygame] 1.2 on the horizon



> ...
> if pygame.draw.lines accepted an offset
> to start drawing from. This would mean
> that I could have a vector shape class
> that could move about the screen without
> having to rewrite the points array for
> simple translation. Rotation would be
> nice as well, but that would just be
> pushing it ;)


try using Numeric arrays to store your point coordinates.
then it becomes very easy to transform your points around.
(in fact, Numeric comes with some matrix transform tools
so you should be able to do rotations pretty easy with
that (although i've never tried that really))

anyways, instead of a python list or tuple to store your
points, we use a Numeric array. but if you want to just
keep your points in a list and addon a quicky transform
you can. Numeric functions can accept lists (although 
they'll never be as quick as using Numeric arrays)


import Numeric
import math

def drawlinesoffset(points, offset):
    newpts = Numeric.add(points, offset)
    pygame.draw.lines(newpts)

def buildrotatematrix(angle):
    "warning, poor math off the top of pete's head"
    s, c = sin(angle), cos(angle)
    return Numeric.array(((s,c),(c,s)))

def drawlinesrotated(points, angle):
    rot = buildrotatematrix(angle)
    newpts = Numeric.matrixmultiply(points, rot)
    pygame.draw.lines(newpts)



tada. that should all work for you, assuming my early morning
logic hasn't failed me on the rotation matrix :]

also, just so you know, you are free to pass floating point
numbers into the draw functions. they just get truncated to
integers.



____________________________________
pygame mailing list
pygame-users@seul.org
http://pygame.seul.org