mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-02-14 20:25:01 +00:00
feat: add types to maprange
This commit is contained in:
@@ -78,6 +78,24 @@ namespace ICD.Common.Utils
|
|||||||
return outputStart + slope * (value - inputStart);
|
return outputStart + slope * (value - inputStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the value after the input range has been mapped to a new range
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inputStart">Input start.</param>
|
||||||
|
/// <param name="inputEnd">Input end.</param>
|
||||||
|
/// <param name="outputStart">Output start.</param>
|
||||||
|
/// <param name="outputEnd">Output end.</param>
|
||||||
|
/// <param name="value">Value.</param>
|
||||||
|
/// <returns>The newly mapped value</returns>
|
||||||
|
public static decimal MapRange(decimal inputStart, decimal inputEnd, decimal outputStart, decimal outputEnd, decimal value)
|
||||||
|
{
|
||||||
|
if (inputStart.Equals(inputEnd))
|
||||||
|
throw new DivideByZeroException();
|
||||||
|
|
||||||
|
decimal slope = (outputEnd - outputStart) / (inputEnd - inputStart);
|
||||||
|
return outputStart + slope * (value - inputStart);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the value after the input range has been mapped to a new range
|
/// Returns the value after the input range has been mapped to a new range
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -120,6 +138,42 @@ namespace ICD.Common.Utils
|
|||||||
return (ushort)MapRange((double)inputStart, inputEnd, outputStart, outputEnd, value);
|
return (ushort)MapRange((double)inputStart, inputEnd, outputStart, outputEnd, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the value after the input range has been mapped to a new range
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inputStart">Input start.</param>
|
||||||
|
/// <param name="inputEnd">Input end.</param>
|
||||||
|
/// <param name="outputStart">Output start.</param>
|
||||||
|
/// <param name="outputEnd">Output end.</param>
|
||||||
|
/// <param name="value">Value.</param>
|
||||||
|
/// <returns>The newly mapped value</returns>
|
||||||
|
public static ulong MapRange(ulong inputStart, ulong inputEnd, ulong outputStart, ulong outputEnd, ulong value)
|
||||||
|
{
|
||||||
|
if (inputStart.Equals(inputEnd))
|
||||||
|
throw new DivideByZeroException();
|
||||||
|
|
||||||
|
ulong slope = (outputEnd - outputStart) / (inputEnd - inputStart);
|
||||||
|
return outputStart + slope * (value - inputStart);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the value after the input range has been mapped to a new range
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inputStart">Input start.</param>
|
||||||
|
/// <param name="inputEnd">Input end.</param>
|
||||||
|
/// <param name="outputStart">Output start.</param>
|
||||||
|
/// <param name="outputEnd">Output end.</param>
|
||||||
|
/// <param name="value">Value.</param>
|
||||||
|
/// <returns>The newly mapped value</returns>
|
||||||
|
public static long MapRange(long inputStart, long inputEnd, long outputStart, long outputEnd, long value)
|
||||||
|
{
|
||||||
|
if (inputStart.Equals(inputEnd))
|
||||||
|
throw new DivideByZeroException();
|
||||||
|
|
||||||
|
long slope = (outputEnd - outputStart) / (inputEnd - inputStart);
|
||||||
|
return outputStart + slope * (value - inputStart);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Maps the date in the given range to the float range 0.0f to 1.0f.
|
/// Maps the date in the given range to the float range 0.0f to 1.0f.
|
||||||
/// 0.5f - The date is half way between the end points.
|
/// 0.5f - The date is half way between the end points.
|
||||||
|
|||||||
Reference in New Issue
Block a user