1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::GeoNum;
#[derive(Debug, Clone, Copy, PartialOrd, PartialEq)]
pub enum Quadrant {
NE,
NW,
SW,
SE,
}
impl Quadrant {
pub fn new<F: GeoNum>(dx: F, dy: F) -> Option<Quadrant> {
if dx.is_zero() && dy.is_zero() {
return None;
}
match (dy >= F::zero(), dx >= F::zero()) {
(true, true) => Quadrant::NE,
(true, false) => Quadrant::NW,
(false, false) => Quadrant::SW,
(false, true) => Quadrant::SE,
}
.into()
}
}