PNPOLY
PNPOLY (Point Inclusion in Polygon) - удобный классичский алгоритм проверки лежит ли точка внутри заданного 2d многоугольника (любого, выпуклого или нет)
Более подробно смотри на сайте автора
public static bool pnpoly(Vector2d[] verts, double testx, double testy)
{
int nvert = verts.Length;
int i, j;
bool c = false;
for (i = 0, j = nvert - 1; i < nvert; j = i++)
{
if (((verts[i].Y > testy) != (verts[j].Y > testy)) &&
(testx < (verts[j].X - verts[i].X) * (testy - verts[i].Y) / (verts[j].Y - verts[i].Y) + verts[i].X))
c = !c;
}
return c;
}