// 'double' precision variants for some of Unity's Mathf functions.
using System.Runtime.CompilerServices;
namespace Mirror
{
public static class Mathd
{
/// Linearly interpolates between a and b by t with no limit to t.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double LerpUnclamped(double a, double b, double t) =>
a + (b - a) * t;
/// Clamps value between 0 and 1 and returns value.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double Clamp01(double value)
{
if (value < 0.0)
return 0;
return value > 1 ? 1 : value;
}
/// Calculates the linear parameter t that produces the interpolant value within the range [a, b].
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double InverseLerp(double a, double b, double value) =>
a != b ? Clamp01((value - a) / (b - a)) : 0;
}
}