您的位置:首页 > 其它

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

2006-11-09 17:20 337 查看
////////////////////////////////////////////////////////////////
//计算点是否在多边形内
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐