Python: comprobar si el punto está dentro de un polígono
Tengo una clase que describe un Punto (tiene 2 coordenadas x e y) y una clase que describe un Polígono que tiene una lista de Puntos que corresponden a las esquinas (yo.corners) Necesito verificar si un Punto está en un Polígono
Aquí está la función que se supone que debe verificar si el punto está en el polígono. Estoy usando el Método Ray Casting
def in_me(self, point):
result = False
n = len(self.corners)
p1x = int(self.corners[0].x)
p1y = int(self.corners[0].y)
for i in range(n+1):
p2x = int(self.corners[i % n].x)
p2y = int(self.corners[i % n].y)
if point.y > min(p1y,p2y):
if point.x <= max(p1x,p2x):
if p1y != p2y:
xinters = (point.y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
print xinters
if p1x == p2x or point.x <= xinters:
result = not result
p1x,p1y = p2x,p2y
return result
Realizo una prueba con la siguiente forma y punto:
PG1 = (0,0), (0,2), (2,2), (2,0)
point = (1,1)
El script felizmente devuelve False aunque el punto está dentro de la línea. Soy incapaz de encontrar el error