110,534
社区成员
发帖
与我相关
我的任务
分享
private bool pointInPolygon(float x, float y, PointF[] polygon)
{
int i;
int j = polygon.Length - 1;
bool oddNodes = false;
for (i = 0; i < polygon.Length; i++)
{
if ((polygon[i].Y < y && polygon[j].Y >= y || polygon[j].Y < y && polygon[i].Y >= y)
&& (polygon[i].X <= x || polygon[j].X <= x))
{
if (polygon[i].X + (y - polygon[i].Y) / (polygon[j].Y - polygon[i].Y) * (polygon[j].X - polygon[i].X) < x)
{
oddNodes = !oddNodes;
}
}
j = i;
}
return oddNodes;
}