码迷,mamicode.com
首页 > 其他好文 > 详细

C# 判断点是否在多边形内

时间:2014-06-12 18:47:00      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:name   for   amp   c#   public   list   

/// <summary>
/// 判断点是否在多边形内
/// </summary>
/// <param name="pnt">点</param>
/// <param name="pntlist">区域的点集</param>
/// <returns></returns>
public static bool PointInFeaces(PointF pnt, List<PointF> pntlist)
{
      if (pntlist == null)
  {
    return false;
  }
      int j = 0, cnt = 0;
      for (int i = 0; i < pntlist.Count; i++)
      {
    j = (i == pntlist.Count - 1) ? 0 : j + 1;
    if ((pntlist[i].Y != pntlist[j].Y) && (((pnt.Y >= pntlist[i].Y) && (pnt.Y < pntlist[j].Y)) || ((pnt.Y >= pntlist[j].Y) && (pnt.Y < pntlist[i].Y))) && (pnt.X < (pntlist[j].X - pntlist[i].X) * (pnt.Y - pntlist[i].Y) / (pntlist[j].Y - pntlist[i].Y) + pntlist[i].X)) cnt++;
  }
  return (cnt % 2 > 0) ? true : false;
}

C# 判断点是否在多边形内,布布扣,bubuko.com

C# 判断点是否在多边形内

标签:name   for   amp   c#   public   list   

原文地址:http://www.cnblogs.com/sidely/p/3781797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!