几何模板总结(二):点在多边形内判定(转角法)

来源:互联网 发布:php权限功能模块 编辑:程序博客网 时间:2024/05/14 18:50

直接上模板吧,适用于任何类型的多边形(顺时针,逆时针,凹,凸)

//p为点,poly为多边形int isinpoly(point p,vector<point> poly){    int wn=0;    int n=poly.size();    for(int i=0;i<n;i++)    {        if(onseg(p,poly[i],poly[(i+1)%n])) return -1;   //在边界上        int k=dcmp(cross(poly[(i+1)%n]-poly[i],p-poly[i]));        int d1=dcmp(poly[i].y-p.y);        int d2=dcmp(poly[(i+1)%n].y-p.y);        if(k>0 && d1<=0 && d2>0) wn++;        if(k<0 && d2<=0 && d1>0) wn--;    }    if(wn!=0) return 1;     //内部    return 0;               //外部}


原创粉丝点击