Punto en el algoritmo de polígono dando resultados incorrectos a veces [cerrado]

Vi en StackOverflow un algoritmo de trazado de rayos de "punto en el polígono" que implementé en mi código PHP. La mayoría de las veces, funciona bien, pero en algunos casos complicados, con polígonos complejos y puntos viciosos, falla y dice que no está en el polígono cuando está.

Por ejemplo:
Usted encontraráaquí Mis clases Polygon y Point: el método pointInPolygon está en la clase Polygon. Al final del archivo, hay dos puntos que se supone que están dentro del polígono dado (Verdadero en Google Earth). El segundo funciona bien, pero el primero tiene errores :(.

Puedes verificar fácilmente el polígono en Google Earth usandoeste archivo KML.

Respuestas a la pregunta(1)

Su respuesta a la pregunta