bracket_geometry/
angle.rs

1/// Convenience type: you can define an angle in Degrees and it is convertible to Radians
2/// (and vice versa)
3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4#[derive(Copy, Clone, Debug)]
5pub struct Degrees(pub f32);
6
7/// Convenience type: you can define an angle in Radians and it is convertible to Degrees
8/// (and vice versa)
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10#[derive(Copy, Clone, Debug)]
11pub struct Radians(pub f32);
12
13impl Degrees {
14    /// Creates a new angle in degrees.
15    /// 
16    /// # Arguments
17    /// 
18    /// * `angle` - the angle to represent, in degrees.
19    pub fn new(angle: f32) -> Self {
20        Self(angle)
21    }
22}
23
24impl Radians {
25    /// Creates a new angle in radians.
26    /// 
27    /// # Arguments
28    /// 
29    /// * `angle` - the angle to represent, in radians.
30    pub fn new(angle: f32) -> Self {
31        Self(angle)
32    }
33}
34
35impl From<Radians> for Degrees {
36    fn from(item: Radians) -> Self {
37        Self(item.0 * 57.2958)
38    }
39}
40
41impl From<Degrees> for Radians {
42    fn from(item: Degrees) -> Self {
43        Self(item.0 * 0.017_453_3)
44    }
45}