mapValue-Funktion:
float mapValue( float inVal, float inFrom, float inTo, float outFrom, float outTo )
{
float inScale = (inFrom != inTo)
? ( ( inVal - inFrom ) / ( inTo - inFrom ) )
: 0.0f;
float outVal = outFrom + ( inScale * ( outTo - outFrom ) );
outVal = (outFrom < outTo )
? clamp( outVal, outFrom, outTo )
: clamp( outVal, outTo, outFrom );
return outVal;
}
Es nimmt einen Wert an, konvertiert ihn in eine Proportion innerhalb eines Bereichs und skaliert ihn dann relativ zu einem anderen Bereich. Wie ein Doppelgänger.
Sie können es verwenden, um Dinge zu normalisieren:
float minDamage = 0.0f; float maxDamage = 300.0f;
float normalisedDamage = mapValue(damange, minDamage, maxDamage, 0.0f, 1.0f);
Oder Sie können von einem Bereich in einen anderen konvertieren:
float brakeStrength = mapValue(timeToCollision,
0.0f, 10.0f, // seconds
1.0f, 0.2f // brake values
);
Beachten Sie im zweiten Beispiel, dass der Out-Bereich eine andere Reihenfolge als der In-Bereich hat.
Es sieht nicht nach viel aus, aber ich benutze diesen kleinen Kerl überall.