You may also find this function useful, which I've pulled out of one of my games-in-progress (take a look at http://pen.svn.sourceforge.net/viewvc/pen/data/parts/cannon.py?revision=31&view=markup for an example):

def rotate_point( pt, rect, angle ):
        """Maps coordinates from a given rectangle into a rotated rectangle.

        For example, the following should be approximately equivalent:
          pygame.draw.circle( surface, pt, ... )
          result = pygame.transform.rotate( surface, angle )

          result = pygame.transform.rotate( surface, angle )
          pygame.draw.circle( result, rotate_point( pt, rect, angle )
        """

        # move the center to the origin, and find the corners
        translated = rect.move( -pt[0], -pt[1] )
        corners    = [translated.topleft, translated.topright, 
translated.bottomleft, translated.bottomright]

        # rotate the corners
        theta = math.radians( angle )
        c, s  = math.cos( theta ), math.sin( theta )
        xcoords = []
        ycoords = []
        for x,y in corners:
                xcoords.append( c*x + s*y )
                ycoords.append( c*y - s*x )

        # return the leftmost point and the topmost point
        return (- min( xcoords ), - min( ycoords ))


--Mike




Ian Mallett wrote:
Opps.
Hadn't found:
http://archives.seul.org/pygame/users/Jun-2006/msg00236.html
Everyone look at that.  Very nice.  Thanks.
Ian

Reply via email to