mapValue函数:
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;
}
它采用一个值,将其转换为一个范围内的比例,然后相对于另一个范围缩放比例。像双-。
您可以使用它来规范化内容:
float minDamage = 0.0f; float maxDamage = 300.0f;
float normalisedDamage = mapValue(damange, minDamage, maxDamage, 0.0f, 1.0f);
或者,您可以从一个范围转换为另一范围:
float brakeStrength = mapValue(timeToCollision,
0.0f, 10.0f, // seconds
1.0f, 0.2f // brake values
);
请注意,在第二个示例中,超出范围与进入范围的顺序不同。
看起来不多,但是我到处都用这个小家伙。