判断点与多边形位置关系的算法

该算法用于判断一个点是否位于多边形内部、外部或边界上。通过计算点与多边形边的叉积,结合点的垂直投影位置,确定点的位置关系。当点在多边形外部时返回0,内部返回-1,边界返回1。
摘要由CSDN通过智能技术生成
  //判断点与多边形的位置关系
  //若点在多变形内部,返回 -1;若点在多变形边界上,返回 0;若点在多变形外部,返回 1;
  //该算法不仅和射线算法有相同的效率,而且对射线算法中特殊情况的处理近乎完美,也很好的避开了对转角算法中arccos值的计算,
  //该算法为《地理信息系统算法基础》(张宏等,科学出版社)中转角算法的改进版本。

  private int CheckInPloy(Point[] pts, int n, Point pt) //pts为多边形的顶点数组,n为多边形顶点数,pt为将要被判断的点
  {
   int i,j,k,wn=0;
   for(i=n-1, j=0; j<n; i=j, j++)
   {
    k = (pt.X - pts[i].X) * (pts[j].Y - pts[i].Y) - (pts[j].X - pts[i].X) * (pt.Y - pts[i].Y);
    if((pt.Y >= pts[i].Y && pt.Y <= pts[j].Y)||(pt.Y <= pts[i].Y && pt.Y >= pts[j].Y))
 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值