求助!判断点是否在多边形中?谁能给出C语言的代码??

chuchuzinnia 2008-04-07 07:53:49
判断点是否在多边形中?谁能给出C语言的代码??谢谢拉.............
...全文
75 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
等待牛人来答.
回复
WuBill 2008-04-08
下面的程序是由点P向x正方向发射一个射线

bool PointInPolygon(Point p1, Point Polygon[],int PolygonNums)
{
int j=0, count = 0;
for (int i = 0; i < PolygonNums; i++)
{
j = (i == PolygonNums - 1) ? 0 : j + 1;
if ((Polygon[i].y!=Polygon[j].y)&&(((p1.y >= Polygon[i].y)
&& (p1.y < Polygon[j].y)) || ((p1.y >= Polygon[j].y)
&& (p1.y < Polygon[i].y)))
&& (p1.x < (Polygon[j].x - Polygon[i].x) * (p1.y - Polygon[i].y) / (Polygon[j].y - Polygon[i].y) + Polygon[i].x))
{
count++;
}
}
return (count%2>0)?true:false;
}
Point类/结构体你自己定义
回复
ppcat_001 2008-04-08
图形学里面的扫描线算法吧~
回复
WuBill 2008-04-08
首先,过p点垂直向上作一条射线(也可以是水平向左)
其次,判断此射线与n边形n条边的交点
最后,把所有交点相加,如果是奇数则说明在多边形内,否则在多边形外

如果射线刚好过了多边形的顶点,好象还有点问题,等我想分析下再回帖

回复
lzy340623339 2008-04-07
首先要记录下多边形的所有边的端点,然后就通过比较这个点和多边形顶点集合的上下左右临界值。这个属于图形学的内容了
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-07 07:53
社区公告
暂无公告