tl; dr: нормализованные векторы упрощают вашу математику.Они также уменьшают количество очень трудно диагностируемых визуальных артефактов на ваших изображениях.
Нормализованный вектор в одном направлении с единицей длины 1?Так что мне неясно, когда это необходимо?
Вы почти всегда хотите, чтобы все векторы в трассировщике лучей были нормализованы.
Простейший пример - это тест пересечения: гдепопадает ли прыгающий луч на другой объект.
Рассмотрим луч, где:
p(t) = p_0 + v * t
В этом случае точка в любом месте вдоль этого луча p(t)
определяется как смещение от исходной точки.p_0
и смещение вдоль определенного направления v
.Для каждого приращения параметра t
результирующее p(t)
будет перемещать еще одно приращение длины, равное длине вектора v
.
Помните, вы знаете p_0
и v
.Когда вы пытаетесь найти точку, где этот луч в следующий раз попадает на другой объект, вы должны решить для этого t
.Очевидно, что удобнее, если не всегда очевидно, использовать в этом представлении нормализованный вектор v
.
Однако этот же вектор v
используется в расчетах освещения.Представьте, что у нас есть другой вектор направления u
, который указывает на источник освещения.Для очень простой модели затенения мы можем определить источник света в определенной точке как произведение точек между этими двумя векторами:
L(p) = v * u
По общему признанию, это очень неинтересная модель отраженияно он фиксирует основные моменты обсуждения.Пятно на поверхности является ярким, если отражение направлено на свет, и тусклым, если нет.
Теперь, помните, что другой способ написания этого точечного произведения - произведение величин векторов на косинусугла между ними:
L(p) = ||v|| ||u|| cos(theta)
Если u
и v
имеют единицу длины (нормализовано), тогда уравнение будет оцениваться как пропорциональное углу между двумя векторами.Однако, если v
не имеет единицы длины, скажем, из-за того, что вы не удосужились нормализоваться после отражения вектора в модели луча выше, теперь у вашей модели освещения есть проблема.Пятна на поверхности с использованием большего v
будут намного ярче, чем пятна, которые этого не делают.