Точка C # в многоугольнике

Я пытаюсь определить, находится ли точка внутри многоугольника. Многоугольник определяется массивом объектов Point. Я могу легко определить, находится ли точка внутри ограниченного прямоугольника многоугольника, но я не уверен, как определить, находится ли она внутри фактического многоугольника или нет. Если возможно, я бы хотел использовать только C # и WinForms. Я бы предпочел не использовать OpenGL или что-то еще для выполнения этой простой задачи.

Вот ' s код, который у меня есть:

private void CalculateOuterBounds()
{
    //m_aptVertices is a Point[] which holds the vertices of the polygon.
    // and X/Y min/max are just ints
    Xmin = Xmax = m_aptVertices[0].X;
    Ymin = Ymax = m_aptVertices[0].Y;

    foreach(Point pt in m_aptVertices)
    {
        if(Xmin > pt.X)
            Xmin = pt.X;

        if(Xmax < pt.X)
            Xmax = pt.X;

        if(Ymin > pt.Y)
            Ymin = pt.Y;

        if(Ymax < pt.Y)
            Ymax = pt.Y;
    }
}

public bool Contains(Point pt)
{
    bool bContains = true; //obviously wrong at the moment :)

    if(pt.X < Xmin || pt.X > Xmax || pt.Y < Ymin || pt.Y > Ymax)
        bContains = false;
    else
    {
        //figure out if the point is in the polygon
    }

    return bContains;
}
35
задан Stephen Kennedy 22 March 2018 в 17:35
поделиться