Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачка

20.05.25 22:23
Re: Задачка
 
AlexNek патриот
AlexNek
в ответ alex445 20.05.25 22:15
Почему выражение "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.

Таким образом, модуль в числителе убрал бы информацию о направлении движения, а текущая формула всё решает сама, без лишних операций.


Это всё копилот под виндой, ставьте и играйтесь.

 

Перейти на