Club 15CC

Algorithms ~ 15CC Code

Task Code
Algorithms C Function to wrap a value between values M…N »
const float MM_Wrap(float inVal, float min, float max)
{
    const float range = max - min;
    
    // Optimisations
    if (inVal >= min) {
        if (inVal <= max)   return inVal;                       // within range
        else if (inVal < max + range) return inVal - range;     // within one range above
    } else if (inVal >= min - range) return inVal + range;      // within one range below
    
    // General case
    return fmod(inVal - min, range) + min;
}
Algorithms Linearly scale/project a value in one range onto another range »
// Scale a value, r1Min <= inVal <= r1Max to it's proportional equivalent
// on range 2 r2Min <= outVal <= r2Max
outVal = (r2Max - r2Min) * inVal / (r1Max - r1Min) + r2Min