const int maxn=1005;
const double eps=1e-10;
struct point{
int x;
int y;
point(){
}
point(int xx,int yy):x(xx),y(yy){
}
bool friend operator <(const point &a,const point &b){
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
bool friend operator ==(const point &a,const point &b){
return a.x==b.x&&a.y==b.y;
}
bool friend operator !=(const point &a,const point &b){
return !(a==b);
}
point friend operator -(const point &a,const point &b){
return point(a.x-b.x,a.y-b.y);
}
}p[maxn],O,q[2*maxn+10];//p:原本的点集 O:中心点 q:凸包里的点集
bool cmp(point a,point b)//顺时针极角排序
{
return a.x*b.y>a.y*b.x;
}
double cross2(point a,point b,point c)
{
return (c.x-a.x)*(b.y-a.y)-(c.y-a.y)*(b.x-a.x);
}
凸包 极角排序
最新推荐文章于 2022-06-04 10:14:15 发布