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; *vec = tvec.xyz;
} }
pragma(inline) f32 pragma(inline) T
Lerp(f32 x, f32 y, f32 a) Lerp(T)(T x, T y, T a)
{ {
return x * (1 - a) + y * a; return x * (1 - a) + y * a;
} }
pragma(inline) f32 pragma(inline) T
InverseLerp(f32 v, f32 min, f32 max) InverseLerp(T)(T v, T min, T max)
{ {
return (v - min) / (max - min); return (v - min) / (max - min);
} }
pragma(inline) f32 pragma(inline) T
Remap(f32 v, f32 in_min, f32 in_max, f32 out_min, f32 out_max) 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); 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, 1.0) == m1);
assert(Mix(m0, m1, 0.5) == Vec4(5.0)); assert(Mix(m0, m1, 0.5) == Vec4(5.0));
assert(Mix(m0, m1, 0.75) == Vec4(7.5)); assert(Mix(m0, m1, 0.75) == Vec4(7.5));
void TestModify(Vec4 v)
{
v.r = 55;
}
} }
} }