hexagon_map/point/
convert.rs

1use super::*;
2use crate::HPoint;
3
4impl From<CubicPoint> for AxialPoint {
5    // h -> r
6    // p -> -s
7    // q -> q
8    fn from(point: CubicPoint) -> Self {
9        AxialPoint::new(point.q, point.p - point.q)
10    }
11}
12
13impl HexPoint for CubicPoint {
14    fn as_cubic_point(&self) -> CubicPoint {
15        *self
16    }
17    fn as_axial_point(&self) -> AxialPoint {
18        AxialPoint::from(*self)
19    }
20}
21
22impl From<AxialPoint> for CubicPoint {
23    // r -> h
24    // q -> q
25    // s -> -p
26    fn from(point: AxialPoint) -> Self {
27        CubicPoint::new(point.q + point.r, point.q)
28    }
29}
30
31impl HexPoint for AxialPoint {
32    fn as_cubic_point(&self) -> CubicPoint {
33        CubicPoint::from(*self)
34    }
35
36    fn as_axial_point(&self) -> AxialPoint {
37        *self
38    }
39}
40
41impl From<CubicPoint> for HPoint {
42    fn from(point: CubicPoint) -> Self {
43        HPoint::new(point.p, point.q)
44    }
45}
46
47impl Into<CubicPoint> for HPoint {
48    fn into(self) -> CubicPoint {
49        CubicPoint::new(self.x, self.y)
50    }
51}