Как найти точку существует в области любого многоугольника или нет? - PullRequest
1 голос
/ 29 июня 2010

привет, я использую c #, и я хочу найти, если мне дан полигон (в основном треугольник), и мне нужно найти, существует ли заданная точка в данном полигоне, или нет, я хочу знать, есть ли какая-либо функция в C #, который может сделать это для меня или любого эффективного алгоритма, чтобы сделать это ??

полигоны представлены в 2D плоскости точками XY, данная точка также представлена ​​точками XY

Спасибо заранее.

Ответы [ 3 ]

1 голос
/ 29 июня 2010

Вам необходимо использовать Graphics.IsVisible (Point p) . Указывает, содержится ли точка, заданная парой координат, в видимой области клипа этого графического объекта.

Образец из MSDN:

public void IsVisiblePoint(PaintEventArgs e)
{
   // Set clip region.
   Region clipRegion = new Region(new Rectangle(50, 50, 100, 100));
   e.Graphics.SetClip(clipRegion, CombineMode.Replace);
   // Set up coordinates of points.
   int x1 = 100;
   int y1 = 100;
   int x2 = 200;
   int y2 = 200;
   Point point1 = new Point(x1, y1);
   Point point2 = new Point(x2, y2);
   // If point is visible, fill ellipse that represents it.
   if (e.Graphics.IsVisible(point1))
   e.Graphics.FillEllipse(new SolidBrush(Color.Red), x1, y1, 10, 10);
   if (e.Graphics.IsVisible(point2))
   e.Graphics.FillEllipse(new SolidBrush(Color.Blue), x2, y2, 10, 10);
}
0 голосов
/ 29 июня 2010

См. http://en.wikipedia.org/wiki/Point_in_polygon для первого обращения. Как я уже упоминал в своем комментарии, треугольники были бы намного проще.

0 голосов
/ 29 июня 2010

Для этого есть несколько техник - та же побочная и барицентрическая.Проверьте эту ссылку , которая объясняет оба достаточно подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...