diff --git a/src/angle.rs b/src/angle.rs index 748ba0b..fd79fdc 100644 --- a/src/angle.rs +++ b/src/angle.rs @@ -1,5 +1,6 @@ use core::cmp::{Eq, Ord}; use core::f64::consts::pi; + use funs::triganomic::{cos, sin}; use mat::{Mat3, Mat4}; use num::cast::{NumCast, cast}; @@ -100,6 +101,10 @@ pub impl Radians: Ord { #[inline(always)] pure fn gt(&self, other: &Radians) -> bool { **self > **other } } +pub impl Radians: ToStr { + pure fn to_str() -> ~str { fmt!("%? rad", *self) } +} + @@ -174,6 +179,10 @@ pub impl Degrees: Ord { #[inline(always)] pure fn gt(&self, other: &Degrees) -> bool { **self > **other } } +pub impl Degrees: ToStr { + pure fn to_str() -> ~str { fmt!("%?\xB0", *self) } +} + diff --git a/src/test/test_angle.rs b/src/test/test_angle.rs index 3f61c0c..918b247 100644 --- a/src/test/test_angle.rs +++ b/src/test/test_angle.rs @@ -31,6 +31,8 @@ fn test_radians() { assert *(Radians(pi) / 2.0) == *Radians(pi / 2.0); assert *(Radians(3.0 * pi) % (2.0 * pi)) == *Radians(pi); assert *(-Radians(pi)) == *Radians(-pi); + + assert fmt!("%s", Radians(1).to_str()) == ~"1 rad"; } #[test] @@ -60,6 +62,8 @@ fn test_degrees() { assert (Degrees(180.0) / 2.0) == Degrees(90.0); assert (Degrees(540.0) % (360.0)) == Degrees(180.0); assert (-Degrees(180.0)) == Degrees(-180.0); + + assert fmt!("%s", Degrees(180.0).to_str()) == ~"180°"; }