欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

新发现判断一个点在多边形的最高效率算法 推荐******

发布时间:2025/1/21 编程问答 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 新发现判断一个点在多边形的最高效率算法 推荐****** 小编觉得挺不错的,现在分享给大家,帮大家做个参考.


//计算点是否在多边形内
int msIntersectPointPolygon(pointObj *point, shapeObj *poly)
{//主函数1-在 0-不在
 int i;
 int status=MS_FALSE;
 for(i=0; i<poly->numlines; i++)
 {
   if(msPointInPolygon(point, &poly->line[i]) == MS_TRUE) /* ok, the point is in a line */
      status = !status;
  }
  return(status);
}

int msPointInPolygon(pointObj *p, lineObj *c)
{//算法非常奇怪!!!
 int i, j, status = MS_FALSE;
 for (i = 0, j = c->numpoints-1; i < c->numpoints; j = i++)
{ if ((((c->point[i].y<=p->y) && (p->y<c->point[j].y)) || ((c->point[j].y<=p->y) && (p->y<c->point[i].y))) && (p->x < (c->point[j].x - c->point[i].x) * (p->y - c->point[i].y) /(c->point[j].y - c->point[i].y) + c->point[i].x))
      status = !status; 
}
 return status;
}

总结

以上是生活随笔为你收集整理的新发现判断一个点在多边形的最高效率算法 推荐******的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。