Skip to main content

argcmp

Function argcmp 

Source
pub fn argcmp(a: Point, b: Point) -> Ordering
Expand description

原点から見た2点の偏角を比較します。

正のx軸を始点に反時計回りで比較し、同じ向きなら Ordering::Equal を返します。 原点は含めず、座標同士の積が isize に収まる範囲で使用してください。 計算量は O(1) です。 同じ向きの点同士は距離では並べ替えません。別の点を中心にする場合は、 その中心を両方の点から引いたベクトルを比較してください。

§Examples

use atcoder::geometry::{argcmp, Point};

let mut points = [Point::new(0, -1), Point::new(0, 1), Point::new(1, 0)];
points.sort_by(|&a, &b| argcmp(a, b));
assert_eq!(points, [Point::new(1, 0), Point::new(0, 1), Point::new(0, -1)]);

§参考

ngtkanaさんの整数演算による偏角ソートの記事を参考にしています。