use num_traits::{Float, FloatConst};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct Hz;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct RadPerSec;
pub trait FrequencyUnit: Clone + Copy + std::fmt::Debug {
fn to_rad_per_sec<T: Float + FloatConst>(frequency: T) -> T;
}
impl FrequencyUnit for Hz {
fn to_rad_per_sec<T: Float + FloatConst>(frequency: T) -> T {
T::from(2.0).unwrap() * T::PI() * frequency
}
}
impl FrequencyUnit for RadPerSec {
fn to_rad_per_sec<T: Float + FloatConst>(frequency: T) -> T {
frequency
}
}