Hi,
Where did you get this from? Is this all your own idea or is this kind
of function described elsewhere?
I think it is more or less the first method described here ("Same Side
Technique"):
http://www.blackpawn.com/texts/pointinpoly/default.html
On Sep 15, 7:35 am, Ian Mallett <[email protected]> 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
I usually use a list comprehension to generate the "Lines" variable:
Lines = [[drawpoints[idx], drawpoints[idx + 1]] for idx in xrange(-1,
len(drawpoints) - 1)]
I just love the negative indexing capabilities of python!
yours
//Lorenz