この質問にはすでに回答があります:
Point in Polygon aka hit test
C# Point in polygon
デカルト座標系の N 線式で定式化されたランダムな多角形が与えられた場合、点 (x,y) のメンバーシップを確認するために使用される標準的な式はありますか?
簡単な解決策は、すべての線の数式を取得し、点 X がこの線の下にあるか、その線の上にあり、他の線の右にあるかなどを確認することです。しかし、これはおそらく面倒です。
多角形は、任意の数の辺を持つ任意の形状にすることができ、凹状または凸状にすることができることに注意してください。
便宜上、これらのユーティリティ関数を既に追加しています。
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);
}