Skip to content

Instantly share code, notes, and snippets.

@jvcleave
Last active September 15, 2022 17:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jvcleave/6f41eb03737c92ef102f783ebee885fa to your computer and use it in GitHub Desktop.
Save jvcleave/6f41eb03737c92ef102f783ebee885fa to your computer and use it in GitHub Desktop.
ofMap implementations
float ofMap(float value, float inputMin, float inputMax, float outputMin, float outputMax, bool clamp) {
if (fabs(inputMin - inputMax) < FLT_EPSILON){
return outputMin;
} else {
float outVal = ((value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin);
if( clamp ){
if(outputMax < outputMin){
if( outVal < outputMax )outVal = outputMax;
else if( outVal > outputMin )outVal = outputMin;
}else{
if( outVal > outputMax )outVal = outputMax;
else if( outVal < outputMin )outVal = outputMin;
}
}
return outVal;
}
}
fun ofMap( value:Float, inputMin:Float, inputMax:Float, outputMin:Float, outputMax:Float, clamp:Boolean) :Float
{
if (Math.abs(inputMin - inputMax) < 0.00000001){
return outputMin;
} else {
var outVal = ((value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin);
if( clamp ){
if(outputMax < outputMin){
if( outVal < outputMax )outVal = outputMax;
else if( outVal > outputMin )outVal = outputMin;
}else{
if( outVal > outputMax )outVal = outputMax;
else if( outVal < outputMin )outVal = outputMin;
}
}
return outVal;
}
}
public func ofMap(value:Float, inputMin:Float, inputMax:Float, outputMin:Float, outputMax:Float, clamp:Bool = false) -> Float
{
var result:Float = 0.0;
if(abs(inputMin - inputMax) < Float.ulpOfOne)
{
result = outputMin;
}else
{
result = ((value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin)
}
if( clamp ){
if(outputMax < outputMin){
if ( result < outputMax )
{
result = outputMax;
}
else if( result > outputMin )
{
result = outputMin;
}
}else{
if( result > outputMax )
{
result = outputMax;
}
else if( result < outputMin )
{
result = outputMin;
}
}
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment