Если вы собираетесь масштабировать вектор путем умножения его на скалярное значение, вы должны не нормализовать. Не по соображениям эффективности; потому что результат не тот, который вы, вероятно, хотите.
Допустим, у вас есть вектор, который выглядит следующим образом:
v = (3, 4)
Его величина sqrt(3^2 + 4^2) = 5
. Итак, давайте нормализуем это:
n = (0.6, 0.8)
Этот вектор имеет величину 1; это единичный вектор.
Итак, если вы «укоротите» каждый из них в 0,5 раза, что вы получите?
shortened v = (3, 4) * 0.5 = (1.5, 2.0)
Теперь давайте нормализуем его по величине sqrt (6.25):
normalized(shortened v) = (1.5/2.5, 2/2.5) = (0.6, 0.8)
Если мы сделаем то же самое с вектором единицы измерения:
shortened(normalized v) = (0.6, 0.8) * 0.5 = (0.3, 0.4)
Это совсем не одно и то же. Ваш метод делает две вещи, и они не коммутативны.