极角产生于极坐标。
极坐标:
点O,为极点。对于长度为ρ的OM,点M的极坐标为(ρ,)。
所以,为极角。
对于极角排序,由于本人为笨蛋,
所以只介绍最简单,且不会像tan的方法出现精度问题:利用叉积,极角排序。
若有两个向量A,B,如下图:
若向量A,B叉积(x1*y2-x2*y1):
<0,向量A在B的下面;
>0,向量A在B的上面;
=0,向量A和向量B共线。
对于这样的规律,在写sort快速排序的cmp时:
若:
bool cmp(node a,node b){
if(a.x*b.y-a.y*b.x==0)return a.x<b.x;//如果向量共线,按照x坐标排序[具体根据题意选择]
return a.x*b.y-a.y*b.x;//按照逆时针排序
}
例如:
若:
bool cmpde(node a,node b){
return a.x*b.y-a.y*b.x>0;//按照顺时针排序
}