Какое общее название для отображения одного диапазона чисел сопоставляется с другим диапазоном чисел? - PullRequest
0 голосов
/ 21 сентября 2018

Я почти уверен, что это обычный шаблон, но я ищу название шаблона, в котором вы сопоставляете один диапазон чисел с другим диапазоном чисел.Нечто подобное, например:

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, но я уверен, что если я знаю название шаблона, я смогу его найти.

enter image description here

1 Ответ

0 голосов
/ 21 сентября 2018

Ах, не берите в голову - я нашел это в учебнике по 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;
    }
}
...