Я пытаюсь определить, находится ли точка внутри многоугольника. Полигон определяется массивом объектов Point. Я могу легко понять, находится ли точка внутри ограниченного поля многоугольника, но я не уверен, как определить, находится ли она внутри фактического полигона или нет. Если возможно, я бы хотел использовать только С# и WinForms. Я бы предпочел не призывать OpenGL или что-то сделать для этой простой задачи.
Вот код, который у меня есть до сих пор:
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;
}