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

chuchuzinnia 2008-04-07 07:53:49
判断点是否在多边形中?谁能给出C语言的代码??谢谢拉.............
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
等待牛人来答.
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
  • 打赏
  • 举报
回复
首先要记录下多边形的所有边的端点,然后就通过比较这个点和多边形顶点集合的上下左右临界值。这个属于图形学的内容了

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧