inverse lerp function

This commit is contained in:
AzaezelX 2023-05-21 12:10:33 -05:00
parent 0d981b62cf
commit c5afb407db
2 changed files with 19 additions and 0 deletions

View file

@ -353,6 +353,17 @@ DefineEngineFunction( mLerp, F32, ( F32 v1, F32 v2, F32 time ),,
return mLerp( v1, v2, time );
}
DefineEngineFunction(mInvLerp, F32, (F32 v1, F32 v2, F32 point), ,
"Calculate the percentage of a point along a line.\n"
"@param v1 Interpolate From Input value."
"@param v2 Interpolate To Input value."
"@param point Point along range."
"@returns normalized time used to interpolate values"
"@ingroup Math")
{
return mInvLerp(v1, v2, point);
}
DefineEngineFunction( mPi, F32, (),,
"Return the value of PI (half-circle in radians).\n"
"@returns The value of PI."

View file

@ -265,6 +265,14 @@ inline T mLerp( const T &v1, const T &v2, F32 factor )
return ( v1 * ( 1.0f - factor ) ) + ( v2 * factor );
}
/// Template function for determining a percentage of interpolation between any two
/// types which implement operators for scalar multiply and addition.
template <typename T>
inline T mInvLerp(const T& v1, const T& v2, F32 point)
{
return (point - v1) / (v2 - v1);
}
inline S32 mMulDiv(S32 a, S32 b, S32 c)
{
return m_mulDivS32(a, b, c);