c语言算法实现 求大神

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

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

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

直接贴程序:
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; }