use num_traits::Float;
pub mod sizes;
#[doc(alias = "mix")]
pub fn lerp<T: Float>(a: T, b: T, t: T) -> T {
(T::one() - t) * a + t * b
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub enum Angle<T: Float> {
Deg(T),
Rad(T),
}
impl<T: Float> Angle<T> {
pub fn degrees(self) -> T {
match self {
Self::Deg(d) => d,
Self::Rad(r) => r.to_degrees(),
}
}
pub fn radians(self) -> T {
match self {
Self::Deg(d) => d.to_radians(),
Self::Rad(r) => r,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_lerp() {
assert_eq!(lerp(0., 100., 0.25), 25.0);
assert_eq!(lerp(0., 100., 1.435), 143.5);
}
}