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

[pygame] Re: Hexagonal collision detection?



Alright NEVERMIND about explaining it. I spent like the past hour
studying this and figured it out.

I gotta say, this is like the most brilliant function ever for this. I
would have never thought of this.
I understand that its something like, the relationship of area between
two squares drawn to intersect at the diagonal line between them will
make one square bigger than the other when your on a certain side of
the diagonal line at any point along the diagonal line.

Where did you get this from? Is this all your own idea or is this kind
of function described elsewhere?

I think this should really be standard in the pygame module. You ever
consider implementing it as C in the pygame source? Or mind if someone
else does?

On Sep 15, 7:35 am, Ian Mallett <geometr...@xxxxxxxxx> wrote:
>  As used in my projecthttp://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