change math funcs to templates

This commit is contained in:
Matthew 2026-01-17 12:07:59 +11:00
parent 246e7006f5
commit fc824c4191

19
math.d
View File

@ -952,22 +952,22 @@ Transform(Vec3* vec, Mat4* mat, f32 last = 1.0)
*vec = tvec.xyz;
}
pragma(inline) f32
Lerp(f32 x, f32 y, f32 a)
pragma(inline) T
Lerp(T)(T x, T y, T a)
{
return x * (1 - a) + y * a;
}
pragma(inline) f32
InverseLerp(f32 v, f32 min, f32 max)
pragma(inline) T
InverseLerp(T)(T v, T min, T max)
{
return (v - min) / (max - min);
}
pragma(inline) f32
Remap(f32 v, f32 in_min, f32 in_max, f32 out_min, f32 out_max)
pragma(inline) T
Remap(T)(T v, T in_min, T in_max, T out_min, T out_max)
{
f32 t = InverseLerp(v, in_min, in_max);
T t = InverseLerp(v, in_min, in_max);
return Lerp(out_min, out_max, t);
}
@ -1217,5 +1217,10 @@ version(DLIB_TEST) unittest
assert(Mix(m0, m1, 1.0) == m1);
assert(Mix(m0, m1, 0.5) == Vec4(5.0));
assert(Mix(m0, m1, 0.75) == Vec4(7.5));
void TestModify(Vec4 v)
{
v.r = 55;
}
}
}