В настоящее время я изучаю освещение в OpenGL, которое использует функцию в GLSL, называемую normalize. Согласно документам OpenGL, он говорит, что он "вычисляет нормированное произведение двух векторов". Однако он все еще не объясняет, что означает "нормализованный". Я пробовал искать, какой нормализованный продукт находится в Google, однако я не могу найти ничего об этом. Может ли кто-нибудь объяснить, что нормализует средства и предоставить несколько примеров нормализованного значения?
Что значит нормализовать значение?
Ответ 1
Это математический термин и эта ссылка объясняет его смысл довольно простыми словами:
Операции в 2D и 3D компьютерной графике часто выполняются с использованием копий векторов, которые были нормализованы, т.е. преобразованные в единичные векторы... Нормализация вектора включает в себя два шага:
- вычислить его длину, затем
- разделите каждую из своих (
xy
илиxyz
) компонентов по своей длине...
Ответ 2
Я думаю, что путаница исходит из идеи нормализации "ценности", а не "вектора"; если вы просто думаете о единственном числе в качестве значения, нормализация не имеет никакого смысла. Нормализация применима только при применении к вектору.
Вектор - последовательность чисел; в трехмерной графике обычно это координата, выраженная как v = <x,y,z>
.
Каждый вектор имеет величину или длину, которые можно найти с помощью теоремы Пифагора: |v| = sqrt(x^2 + y^2 + z^2)
Это в основном длина линии от начала <0,0,0>
до точки, выраженной вектором.
Вектор нормален, если его длина равна 1. То, что это!
Чтобы нормализовать вектор, нужно изменить его так, чтобы он указывал в одном направлении (подумайте об этой строке от начала координат), но его длина равна единице.
Основная причина, по которой мы используем нормальные векторы, - представлять направление; например, если вы моделируете источник света, который находится на бесконечном расстоянии, вы не можете дать ему точные координаты. Но вы можете указать, где его найти из определенной точки, используя обычный вектор.