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

Respuestas a la pregunta(3)

Su respuesta a la pregunta