From 33906f51b3af3b1405f0cbfba37a00f2e38e7f71 Mon Sep 17 00:00:00 2001 From: numzero Date: Sat, 28 Sep 2024 13:30:26 +0300 Subject: [PATCH] Extract make_vec and make_mat into mathx --- src/mathx.rs | 16 ++++++++++++++++ src/riemann.rs | 10 +--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/mathx.rs b/src/mathx.rs index 3b84795..e6b0389 100644 --- a/src/mathx.rs +++ b/src/mathx.rs @@ -142,6 +142,22 @@ where } } +pub fn make_vec2(f: impl Fn(usize) -> f32) -> Vec2 { + Vec2::from_array(std::array::from_fn(|i| f(i))) +} + +pub fn make_mat2(f: impl Fn(usize, usize) -> f32) -> Mat2 { + Mat2::from_cols_array_2d(&std::array::from_fn(|i| std::array::from_fn(|j| f(i, j)))) +} + +pub fn make_vec3(f: impl Fn(usize) -> f32) -> Vec3 { + Vec3::from_array(std::array::from_fn(|i| f(i))) +} + +pub fn make_mat3(f: impl Fn(usize, usize) -> f32) -> Mat3 { + Mat3::from_cols_array_2d(&std::array::from_fn(|i| std::array::from_fn(|j| f(i, j)))) +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/riemann.rs b/src/riemann.rs index a1acf1a..d51abb6 100644 --- a/src/riemann.rs +++ b/src/riemann.rs @@ -1,4 +1,4 @@ -use crate::mathx::Decomp3; +use crate::mathx::{make_mat3, Decomp3}; use glam::*; pub type Tens3 = [Mat3; 3]; @@ -86,14 +86,6 @@ pub fn contract2(t: Tens3, v: Vec3) -> Vec3 { contract(t, v) * v } -fn make_vec3(f: impl Fn(usize) -> f32) -> Vec3 { - Vec3::from_array(std::array::from_fn(|i| f(i))) -} - -fn make_mat3(f: impl Fn(usize, usize) -> f32) -> Mat3 { - Mat3::from_cols_array_2d(&std::array::from_fn(|i| std::array::from_fn(|j| f(i, j)))) -} - fn make_tens3(f: impl Fn(usize, usize, usize) -> f32) -> Tens3 { std::array::from_fn(|i| make_mat3(|j, k| f(i, j, k))) }