如何找到任何多边形区域中存在的点?

时间:2010-06-29 11:09:08

标签: c# algorithm

你好我正在使用c#而我想找到if一个多边形(主要是一个三角形)给我,我必须找到一个给定的点存在于给定的多边形中我想知道那是否有任何函数在c#中,我可以为此做任何有效的算法吗?

多边形通过XY点在2D平面中表示,给定点也由XY点

表示

提前完成。

3 个答案:

答案 0 :(得分:1)

您需要使用Graphics.IsVisible(Point p)。 它指示由一对坐标指定的点是否包含在此Graphics对象的可见剪辑区域内。

来自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);
}

答案 1 :(得分:0)

有几种技术可以做到这一点 - 相同的技术和重心技术。查看此link,其中详细解释了这两个。

答案 2 :(得分:0)

请参阅http://en.wikipedia.org/wiki/Point_in_polygon以获取第一个参考。正如我在评论中提到的,三角形会更简单。