[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Re: Hexagonal collision detection?



 As used in my project http://www.pygame.org/project/649/.
    def pointtest(self,point):
        #drawpoints is a list containing points defining your polygon
        #point is the mouse position
        #if it doesn't work, list them in opposite order.
        #works for arbitrary convex geometry
        x = point[0]
        y = point[1]
        Lines = []
        index = 0
        for index in xrange(len(drawpoints)):
            p0 = drawpoints[index]
            try: p1 = drawpoints[index+1]
            except: p1 = drawpoints[0]
            Lines.append([p0,p1])
        for l in Lines:
            p0 = l[0]
            p1 = l[1]
            x0 = p0[0]; y0 = p0[1]
            x1 = p1[0]; y1 = p1[1]
            test = (y - y0)*(x1 - x0) - (x - x0)*(y1 - y0)
            if test < 0: return False
        return True
Ian