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;
}