From aa2f9224ce6707c511ca39c5f91723d4b91db3be Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Tue, 16 Jul 2013 07:14:10 +1000 Subject: [PATCH] Re-organise matrix constants --- src/math/mat.rs | 80 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 24 deletions(-) diff --git a/src/math/mat.rs b/src/math/mat.rs index 01c28f8..5739cd6 100644 --- a/src/math/mat.rs +++ b/src/math/mat.rs @@ -178,18 +178,26 @@ impl ToMat4 for Mat2 { } } +impl Mat2 { + #[inline] + pub fn identity() -> Mat2 { + Mat2::from_cols(Vec2::unit_x(), + Vec2::unit_y()) + } + + #[inline] + pub fn zero() -> Mat2 { + Mat2::from_cols(Vec2::zero(), + Vec2::zero()) + } +} + impl Mat2 { #[inline] pub fn from_value(value: T) -> Mat2 { Mat2::new(value.clone(), zero!(T), zero!(T), value.clone()) } - - #[inline] - pub fn identity() -> Mat2 { Mat2::from_value(one!(T)) } - - #[inline] - pub fn zero() -> Mat2 { Mat2::from_value(zero!(T)) } } impl NumMat,[Vec2,..2]> for Mat2 { @@ -558,6 +566,13 @@ impl Mat3 { c2: Vec3) -> Mat3 { Mat3 { x: c0, y: c1, z: c2 } } + + #[inline] + pub fn from_axes(x: Vec3, + y: Vec3, + z: Vec3) -> Mat3 { + Mat3 { x: x, y: y, z: z } + } } impl Mat,[Vec3,..3]> for Mat3 { @@ -643,6 +658,22 @@ impl ToMat4 for Mat3 { } } +impl Mat3 { + #[inline] + pub fn identity() -> Mat3 { + Mat3::from_cols(Vec3::unit_x(), + Vec3::unit_y(), + Vec3::unit_z()) + } + + #[inline] + pub fn zero() -> Mat3 { + Mat3::from_cols(Vec3::zero(), + Vec3::zero(), + Vec3::zero()) + } +} + impl Mat3 { #[inline] pub fn from_value(value: T) -> Mat3 { @@ -650,12 +681,6 @@ impl Mat3 { zero!(T), value.clone(), zero!(T), zero!(T), zero!(T), value.clone()) } - - #[inline] - pub fn identity() -> Mat3 { Mat3::from_value(one!(T)) } - - #[inline] - pub fn zero() -> Mat3 { Mat3::from_value(zero!(T)) } } impl NumMat,[Vec3,..3]> for Mat3 { @@ -757,12 +782,7 @@ impl Neg> for Mat3 { } } -impl Mat3 { - #[inline] - pub fn from_axes(x: Vec3, y: Vec3, z: Vec3) -> Mat3 { - Mat3::from_cols(x, y, z) - } - +impl Mat3 { pub fn look_at(dir: &Vec3, up: &Vec3) -> Mat3 { let dir_ = dir.normalize(); let side = dir_.cross(&up.normalize()); @@ -1225,6 +1245,24 @@ impl Mat,[Vec4,..4]> for Mat4 { } } +impl Mat4 { + #[inline] + pub fn identity() -> Mat4 { + Mat4::from_cols(Vec4::unit_x(), + Vec4::unit_y(), + Vec4::unit_z(), + Vec4::unit_w()) + } + + #[inline] + pub fn zero() -> Mat4 { + Mat4::from_cols(Vec4::zero(), + Vec4::zero(), + Vec4::zero(), + Vec4::zero()) + } +} + impl Mat4 { #[inline] pub fn from_value(value: T) -> Mat4 { @@ -1233,12 +1271,6 @@ impl Mat4 { zero!(T), zero!(T), value.clone(), zero!(T), zero!(T), zero!(T), zero!(T), value.clone()) } - - #[inline] - pub fn identity() -> Mat4 { Mat4::from_value(one!(T)) } - - #[inline] - pub fn zero() -> Mat4 { Mat4::from_value(zero!(T)) } } impl NumMat,[Vec4,..4]> for Mat4 {