From d79d5d18c8281cce1e782892e5f85680906481dd Mon Sep 17 00:00:00 2001 From: Julian T Date: Tue, 2 Feb 2021 16:07:16 +0100 Subject: Add matrix and transform implementation --- src/core/matrix4x4.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/core/matrix4x4.rs (limited to 'src/core/matrix4x4.rs') diff --git a/src/core/matrix4x4.rs b/src/core/matrix4x4.rs new file mode 100644 index 0000000..521d7ab --- /dev/null +++ b/src/core/matrix4x4.rs @@ -0,0 +1,35 @@ +use crate::{Number, Float}; + +pub struct Matrix4x4 { + pub m: [[T; 4]; 4], +} + +pub type Matrix4x4f = Matrix4x4; + +impl Matrix4x4 { + pub fn new(v00: T, v01: T, v02: T, v03: T, + v10: T, v11: T, v12: T, v13: T, + v20: T, v21: T, v22: T, v23: T, + v30: T, v31: T, v32: T, v33: T) -> Self { + Self { + m: [ + [v00, v01, v02, v03], + [v10, v11, v12, v13], + [v20, v21, v22, v23], + [v30, v31, v32, v33], + ], + } + } +} + +impl Matrix4x4f { + pub fn new_ident(v: Float) -> Self { + let z = 0.0; + Self::new( + v, z, z, z, + z, v, z, z, + z, z, v, z, + z, z, z, v, + ) + } +} -- cgit v1.2.3