浅学计算几何

极角排序

精度差较大的做法:使用 atan2(y,x)(直接返回向量 a(x,y)0 的夹角大小) 的大小排序。

面对整数不会丢失精度的做法:

我们知道对于同一半平面的向量 a,bsin<a,b>=a×b|a||b|,由于保证了 <a,b>∈[0,π],我们珂以直接判断 sin 正负性就珂以判断 a,b 的大小(正就是 a 要逆时针翻到 b,即极角较小,否则相反)。

直接计算叉乘正负性就珂以了,因为分母不影响。

例题:CF598C

解法:极角排序完后,现欲比较角的大小。

我们将两个角旋回到 x(0,+) 上,这样右边成了向量极角比较。

考虑一组角向量 <a,b> 旋转到 x(0,+) 上变成了 <|a|cosθ,|a|sinθ>=<ab|b|,a×b|b|>,放缩 |b| 后就消除了分数。

本文作者:127_127_127

本文链接:https://www.cnblogs.com/sizeof127/p/16553514.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   127_127_127  阅读(55)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起