c语言算法实现 求大神

求大神解答 给定n个点的坐标,这n个点依次围成一闭合多边形 再给一点(x,y),判断它是否在多边形中???

c++

3个回答

直接贴程序:
boolean pointInPolygon() {
int i, j=0 ;
boolean oddNODES=FALSE ;
for (i=0; i j++; if (j==polySides) j=0;
if (polyY[i]=y
|| polyY[j]=y) {
if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x) {
oddNODES=!oddNODES; }}}
return oddNODES; }

qq_34979931
qq_34979931 不对啊
大约 4 年之前 回复

最简单的方法是使用射线法,因为它能适用于所有类型的多边形,不用考虑特殊的情况而且速度也比较快。该算法的思想很简单:在多边形外面任意一点画一条虚拟的射线到p(x,y)然后计算该射线与多边形上的边相交的次数。如果该次数是偶数,说明p(x,y)在多边形外,如果是奇数,则在多边形内。
http://blog.csdn.net/luyuncsd123/article/details/27528519

你可以看看射线法,目标点向外延伸射线,有基数个交点就是在内部,有偶数个交点就是在外部。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问