| 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 |