
方法$1:$
利用$atan2()$函数按极角从小到大排序。
$atan2(double~y,double~x)$其中$y$代表已知点的$Y$坐标,同理$x$ ,返回值见下图,它的值域相应的也就是$-pisim pi$了


$atan2$转换到$left[0,2piright)$表示的是与$x$轴正方向的逆时针夹角,这样转换的好处是便于计算两条线之间的夹角。
第二种转换是用于对直线进行极角排序的。
1 |
|
方法$2:$
利用叉积。
1 |
friend double operator ^(Point a,Point b){ |
若叉积$>0$,则向量$a$在向量$b$的顺时针方向,叉积$<0$,则向量$a$在向量$b$的逆时针方向
1 |
bool (point a,point b) { |
排序效果同单个$atan2()$
方法比较
一般情况下用叉积(精度高),但是$atan2()$更加灵活。




近期评论