Esta cuestión ya tiene una respuesta aquí:
Point in Polygon aka hit test
C# Point in polygon¿Cómo verificar si un punto (x, y) está dentro de un polígono en el sistema de coordenadas cartesianas?
Dado un polígono aleatorio formulado con N ecuaciones de línea en el sistema de coordenadas cartesianas, hay alguna fórmula estándar que es utilizado para verificar la membresía de un punto (x, y)?
La solución simple es obtener todas las fórmulas de línea y verificar si el punto X está debajo de esta línea, encima de esa línea ya la derecha de la otra línea, etc. Pero esto probablemente sea tedioso.
Debo notar que el polígono puede tener cualquier forma con cualquier número de lados y puede ser cóncavo o convexo.
Por conveniencia ya han añadido estas funciones de utilidad:
float slope(CGPoint p1, CGPoint p2)
{
return (p2.y - p1.y)/(p2.x - p1.x);
}
CGPoint pointOnLineWithY(CGPoint p, float m, float y)
{
float x = (y - p.y)/m + p.x;
return CGPointMake(x,y);
}
CGPoint pointOnLineWithX(CGPoint p, float m, float x)
{
float y = m*(x - p.x) + p.y;
return CGPointMake(x, y);
}
Esto ya se discutió en longitud aquí, vea http://stackoverflow.com/questions/217578/point-in-polygon-aka-hit-test –
¡ah, cerca! – TheOne