Skip to main content

frclib_core/units/
angle.rs

1use crate::units::angular_acceleration::{
2    DegreePerSecSqr, RadianPerSecSqr, RotationPerMinSqr, RotationPerSecSqr,
3};
4use crate::units::angular_velocity::{DegreePerSec, RadianPerSec, RotationPerMin, RotationPerSec};
5use crate::units::time::{Minute, Second};
6use crate::{unit, unit_conversion, unit_dim_analysis, unit_family};
7
8unit!(Degree | Degrees | Deg | Degs: float);
9unit!(Radian | Radians | Rad | Rads: float);
10unit!(Rotation | Rotations | Rot | Rots: float);
11
12unit_conversion!(Degree(float) <-> Radian(float)   ~ |x| x.to_radians());
13unit_conversion!(Degree(float) <-> Rotation(float) ~ ratio 1.0/360.0);
14unit_conversion!(Radian(float) <-> Rotation(float) ~ |x| x / (std::f64::consts::PI * 2.0));
15
16unit_family!(Angle(Radian): Degree, Rotation);
17
18unit_dim_analysis!(DegreePerSec * Second = Degree);
19unit_dim_analysis!(RadianPerSec * Second = Radian);
20unit_dim_analysis!(RotationPerSec * Second = Rotation);
21unit_dim_analysis!(RotationPerMin * Minute = Rotation);
22
23unit_dim_analysis!(DegreePerSecSqr * Second = DegreePerSec);
24unit_dim_analysis!(RadianPerSecSqr * Second = RadianPerSec);
25unit_dim_analysis!(RotationPerSecSqr * Second = RotationPerSec);
26unit_dim_analysis!(RotationPerMinSqr * Minute = RotationPerMin);