Questa domanda ha già una risposta qui:
Point in Polygon aka hit test
C# Point in polygonCome verificare se un punto (x, y) si trova all'interno di un poligono nel sistema di coordinate cartesiane?
Dato un poligono casuale formulato con equazioni linea n nel sistema di coordinate cartesiane, v'è alcuna formula standard che è usato per verificare l'appartenenza a un punto (x, y)?
La soluzione più semplice è quello di ottenere tutte le formule di linea e verificare se il punto X è al di sotto di questa linea, sopra quella linea ea destra dell'altra linea, ecc Ma questo sarà probabilmente noioso.
Devo notare che il poligono può essere di qualsiasi forma con qualsiasi numero di lati e può essere concavo o convesso.
Per comodità ho già aggiunto queste funzioni di utilità:
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);
}
Questo è stato già discusso in lunghezza qui, vedi http://stackoverflow.com/questions/217578/point-in-polygon-aka-hit-test –
ah, vicino! – TheOne