Add angle unit conversions

This commit is contained in:
Brendan Zabarauskas 2012-11-04 18:11:32 +10:00
parent 8a3a28481e
commit 3dc5e26126

View file

@ -222,3 +222,17 @@ pub impl<T: NumCast> T: Trig {
#[inline(always)] pure fn tanh() -> T { f64::tanh(self.cast()).cast() }
#[inline(always)] pure fn atan2(n: T) -> T { f64::atan2(self.cast(), move n.cast()).cast() }
}
pub trait AngleUnits {
pure fn to_radians() -> self;
pure fn to_degrees() -> self;
}
#[inline(always)] pub pure fn radians<T:AngleUnits>(degrees: T) -> T { degrees.to_radians() }
#[inline(always)] pub pure fn degrees<T:AngleUnits>(radians: T) -> T { radians.to_degrees() }
pub impl<T:Num NumCast> T: AngleUnits {
#[inline(always)] pure fn to_radians() -> T { self * cast(f64::consts::pi / 180f64) }
#[inline(always)] pure fn to_degrees() -> T { self * cast(180f64 / f64::consts::pi) }
}