Skip to content

Instantly share code, notes, and snippets.

@fguillen
Created March 23, 2021 18:39
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 fguillen/d9343ed93e67d7a1cf13371255331e09 to your computer and use it in GitHub Desktop.
Save fguillen/d9343ed93e67d7a1cf13371255331e09 to your computer and use it in GitHub Desktop.
/*
Convert from one magnitude to another.
Example:
LinearProportionConverter collisionToVolume = new LinearProportionConverter(soundVolumeLimits.x, soundVolumeLimits.y, collisionMagnitudeLimits.x, collisionMagnitudeLimits.y);
float volume = collisionToVolume.CalculateDimension1Value(collisionMagnitude);
audioSource.PlayOneShot(clip, volume);
*/
public class LinearProportionConverter
{
float dimension1Min;
float dimension1Max;
float dimension2Min;
float dimension2Max;
public LinearProportionConverter(float dimension1Min, float dimension1Max, float dimension2Min, float dimension2Max)
{
this.dimension1Min = dimension1Min;
this.dimension1Max = dimension1Max;
this.dimension2Min = dimension2Min;
this.dimension2Max = dimension2Max;
}
public float CalculateDimension1Value(float dimension2Value)
{
var a = dimension2Min;
var b = dimension2Max;
var c = dimension1Min;
var d = dimension1Max;
var e = dimension2Value;
var result = c + (((e - a) * (d - c)) / (b - a));
return result;
}
public float CalculateDimension2Value(float dimension1Value)
{
var a = dimension1Min;
var b = dimension1Max;
var c = dimension2Min;
var d = dimension2Max;
var e = dimension1Value;
var result = c + (((e - a) * (d - c)) / (b - a));
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment