`
cjx186
  • 浏览: 265847 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

GIS 点在多边形内

    博客分类:
  • java
阅读更多
//这个算法是参考计算机图形学书上的算法得来的,可以说十分简单高效。
//calc point in ploygon or not 
bool PIP(CPoint p,const CPoint data[],int n){
    bool flag=0;
    for(int i=0;i<n;i++){
        if(p.y<data[i].y&&p.y<data[(i+1)%n].y)
            continue;
        if(data[i].x<=p.x&&data[(i+1)%n].x<=p.x)
            continue;
        int dx=data[(i+1)%n].x-data[i].x;
        int dy=data[(i+1)%n].y-data[i].y;
        float t=float(p.x-data[i].x)/dx;//求得交点的t值
         float y=t*dy+data[i].y;
        if(y<=p.y&&t>=0&&t<=1)
        flag=!flag;
    }
    return flag;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics