极角排序:
给定一个原点, 然后其余的点就是要排序的点,排序的规则,就是与这个原点的 正方向的夹角,按照这个结果进行排序。
步骤:
1. 遍历所有点找到 , 将原点记做 即
2.定义比较函数 int cmp(Point a,Point b)
比较函数:
1.按照斜率排序,如果斜率相同,按照x大小进行排序
//从下面往上面
bool cmp(Point a,Point b){
vector v1=a-w,v2=b-w;//需要先转换成向量
double t1=atan2(v1.y,v1.x),t2=atan2(v2.y,v2.x);
if(t1!=t2)
return t1<t2;
return a.x<b.x;
}
2.按照差积排序,
//从下面往上面
bool cmp(Point a,Point b){
Vector v1=a-w,v2=b-w;
if(cross(v1,v2)!=0)
return cross(v1,v2)>0;
return a.x<b.x;
}