Вообще говоря, вектор нормалей представляет направление, направленное непосредственно «наружу» от поверхности, то есть он ортогональн (под углом 90 градусов) к любому вектору, который находится в одной плоскости (в случае плоской поверхности) или касается (в случай неплоской поверхности) поверхности в данной точке.
Касательный вектор обычно рассматривается как один вектор, который существует в плоскости поверхности (для плоской поверхности) или лежит касательной к контрольной точке на криволинейной поверхности (т. Е. Если плоская плоскость была построена с такой же нормалью от контрольной точки). , касательный вектор будет копланарным с этой плоскостью).
Концепция бинормального вектора немного сложнее; в компьютерной графике он обычно относится к вектору битангенса (ссылка здесь ), который фактически является «другим» касательным вектором для поверхности, который ортогонален как вектору нормали, так и выбранному вектору тангенса.
Что касается того, как они вычисляются, это варьируется в зависимости от сложности поверхности и от того, насколько точной должна быть нормаль (в некоторых случаях, например, с помощью гладких шейдеров, более желательно вычислить нормаль для приближенной поверхности, когда фактическая информация для поверхности нет), но есть несколько обобщенных формул , приведенных здесь .
С точки зрения того, где они происходят, ответ ВЕЗДЕ . Нормальные векторы используются для позиционирования камер и объектов в трехмерном пространстве, для определения траекторий, отражений и углов в физических расчетах, для отображения скинов и текстур в трехмерных моделях, для определения смещений траекторий при программировании ИИ, для подсказок шейдерам о том, как освещать, затенять и окрашивать точки на поверхности относительно источников света, камеры и других объектов и т. д. Они, возможно, являются одной из самых полезных частей информации в 3D-среде, и они даже очень полезны в 2D-среде.