tiny_game_framework/utils/
math.rs

1use std::ops::Add;
2use glam::{vec2, vec3, vec4, Vec2, Vec3, Vec4};
3use rand::prelude::*;
4
5pub fn distance(a: f32, b: f32) -> f32{
6    return f32::sqrt(a*a + b*b);
7}
8
9pub fn lerp(min: f32, max: f32, t: f32) -> f32{
10    return min + (max - min) * t;
11}
12
13// generates a random value T between n1: T and n2: T
14pub fn rand_betw
15<
16    T: std::cmp::PartialOrd +
17    rand::distributions::uniform::SampleUniform,
18>
19(
20    n1: T, 
21    n2: T
22) -> T {
23    let mut r = thread_rng();
24    r.gen_range(n1..n2)
25}
26
27pub fn rand_vec2() -> Vec2 {
28    vec2(rand_betw(0.0, 1.0), rand_betw(0.0, 1.0))
29}
30
31pub fn rand_vec3() -> Vec3 {
32    vec3(rand_betw(0.0, 1.0), rand_betw(0.0, 1.0), rand_betw(0.0, 1.0))
33}
34
35pub fn rand_vec4() -> Vec4 {
36    vec4(rand_betw(0.0, 1.0), rand_betw(0.0, 1.0), rand_betw(0.0, 1.0), rand_betw(0.0, 1.0))
37}
38
39struct SecondOrderDynamics {
40
41}
42/* 
43impl Add<f32> for i32 {
44    type Output = i32;
45
46    fn add(self, rhs: f32) -> Self::Output {
47        return self as f32 + rhs;
48    }
49}
50*/