Задачка
Почему выражение "current - Math.Min(a, b)" не под модулем?
Отличный вопрос! В выражении:
(current - Math.Min(a, b)) / Math.Abs(b - a)
Модуль в числителе не нужен, потому что Math.Min(a, b) уже автоматически выбирает начальную точку отсчёта. Вот почему:
🔍 1️⃣ Если a < b, то Math.Min(a, b) == a, и формула превращается в:
[ \frac{\text{current} - a}{b - a} ] Это стандартное вычисление доли.
🔄 2️⃣ Если a > b, то Math.Min(a, b) == b, и формула превращается в:
[
\frac{\text{current} - b}{a - b}
]
То есть теперь b играет роль начальной точки, а a конечной, и результат автоматически переворачивается.
💡 Почему не нужен Math.Abs(current - Math.Min(a, b))?
Если взять модуль, то всегда будет положительное число, и направление исчезнет. А нам нужно сохранить порядок расчёта, чтобы естественно получать 0...1 или 1...0 в зависимости от порядка a и b.
Таким образом, модуль в числителе убрал бы информацию о направлении движения, а текущая формула всё решает сама, без лишних операций.
Это всё копилот под виндой, ставьте и играйтесь.
Назад