计算几何模板——凸包

来源:互联网 发布:淘宝网店运营策划书 编辑:程序博客网 时间:2024/06/10 01:05
bool cmp_x(const point &a,const point &b){    if(a.x!=b.x)        return a.x<b.x;    return a.y<b.y;}vector<point> ps;vector<point> convex_hull(){    int n=(int)ps.size();    sort(ps.begin(),ps.end(),cmp_x);    int k=0;    vector<point> qs(n*2);    for(int i=0;i<n;i++){        while(k>1&&cmp(det(qs[k-1]-qs[k-2],ps[i]-qs[k-1]))<=0){            k--;        }        qs[k++]=ps[i];    }    for(int i=n-2,t=k;i>=0;i--){        while(k>t&&cmp(det(qs[k-1]-qs[k-2],ps[i]-qs[k-1]))<=0){            k--;        }        qs[k++]=ps[i];    }    qs.resize(k-1);    return qs;}

原创粉丝点击