将一个数字范围映射到另一个数字范围的通用名称是什么?
What is the common name for mapping one range of numbers maps to another range of numbers?
我很确定这是一个常见的模式,但我正在寻找将一个数字范围与另一个数字范围匹配的模式的名称。类似于:
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 75); // Result: 120 (middle of from2/to2)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 30); // Result: 100 (clamped bottom)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 60); // Result: 100 (bottom)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 500); // Result: 140 (clamped to2)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 85); // Result: 133.33 (in between)
此方法的名称是什么?我专门在 Unity 中寻找解决方案,但我很确定如果我知道模式的名称,我就能找到它。
没关系 - 我在 Unreal Engine 教程中找到它:
https://www.youtube.com/watch?v=11T4UvkVYb8
此处使用的术语是 MapRangeClamped 和 MapRangeUnclamped。
这是 C# 的代码:
public static class FloatExtensions
{
public static float MapRange(this float value, float from1, float to1, float from2, float to2, bool clamp = false)
{
if ( clamp )
{
if ( value < from1 )
return from2;
if ( value > to1 )
return to2;
}
return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
}
}
我很确定这是一个常见的模式,但我正在寻找将一个数字范围与另一个数字范围匹配的模式的名称。类似于:
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 75); // Result: 120 (middle of from2/to2)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 30); // Result: 100 (clamped bottom)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 60); // Result: 100 (bottom)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 500); // Result: 140 (clamped to2)
Map(from1: 60, to1: 90, from2: 100, to2: 140, value: 85); // Result: 133.33 (in between)
此方法的名称是什么?我专门在 Unity 中寻找解决方案,但我很确定如果我知道模式的名称,我就能找到它。
没关系 - 我在 Unreal Engine 教程中找到它:
https://www.youtube.com/watch?v=11T4UvkVYb8
此处使用的术语是 MapRangeClamped 和 MapRangeUnclamped。
这是 C# 的代码:
public static class FloatExtensions
{
public static float MapRange(this float value, float from1, float to1, float from2, float to2, bool clamp = false)
{
if ( clamp )
{
if ( value < from1 )
return from2;
if ( value > to1 )
return to2;
}
return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
}
}