Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
А.А. Шелестов - Компьютерная графика.doc
Скачиваний:
121
Добавлен:
10.05.2015
Размер:
6.48 Mб
Скачать

3.3 Определение нормали к поверхности

В самом общем случае нормаль к поверхности представляет ее локальную кривизну, и, следовательно, направление зеркального отражения (рис. 3.5). Применительно к нашим знаниям можно сказать, что нормалью называется вектор, определяющий ориентацию грани (рис. 3.6).

Рис. 3.5 Рис. 3.6

Во многих алгоритмах удаления невидимых линий и поверхностей используются только ребра и вершины, поэтому, для того чтобы объединить их с моделью освещения, необходимо знать приближенное значение нормали на ребрах и в вершинах. Пусть заданы уравнения плоскостей полигональных граней, тогда нормаль к их общей вершине равна среднему значению нормалей ко всем многоугольникам, сходящимся к этой вершине. Например, на рис. 3.7 направление приближенной нормали в точке V1есть:

nv1 = (a0 + a1 + a4)i + (b0 + b1 + b4)j + (c0 + c1 + c4)k, (3.15)

где a0, a1, a4, b0, b1, b4, c0, c1, c4- коэффициенты уравнений плоскостей трех многоугольниковP0, P1, P4,окружающихV1. Отметим, что если требуется найти только направление нормали, то делить результат на количество граней необязательно.

Если же уравнения плоскостей не заданы, то нормаль к вершине можно определить, усредняя векторные произведения всех ребер, пересекающихся в вершине. Еще раз, рассматривая вершину V1на рис. 3.7, найдем направление приближенной нормали:

nv1 = V1V2 V1V4 +V1V5 V1V2 + V1V4 V1V5 (3.16)

Рис. 3.7 - Аппроксимация нормали к полигональной поверхности

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

Когда нормаль к поверхности используется для определения ин­тенсивности и для изображения объекта или сцены выполняется перспективное преобразование, то нормаль следует вычислять до перспективного деления. В противном случае направление нор­мали будет искажено, а это приведет к тому, что интенсивность, задаваемая моделью освещения, будет определена неправильно.

Если известно аналитическое описание плоскости (поверхности), то нормаль вычисляется непосредственно. Зная уравнение плоскости каждой грани многогранника, можно найти направление внешней нормали.

Если уравнение плоскости имеет вид:

, (3.17)

то вектор нормали к этой плоскости записывается следующим образом:

, (3.18)

где - единичные векторы осейx,y,zсоответственно.

Величина dвычисляется с помощью произвольной точки, принадлежащей плоскости, например, для точки ()

. (3.19)

Пример.Рассмотрим 4-х сторонний плоский многоугольник, описываемый 4-мя вершинами V1(1,0,0), V2(0,1,0), V3(0,0,1) и V4(1,1,1) (см. рис. 3.7).

Уравнение плоскости имеет вид:

x + y + z - 1 = 0.

Получим нормаль к этой плоскости, используя векторное произведение пары векторов, являющихся смежными ребрами к одной из вершин, например, V1:

Во многих алгоритмах удаления невидимых линий и поверхностей используются только ребра или вершины, поэтому, для того, чтобы объединить их с моделью освещения, необходимо знать приближенное значение нормали на ребрах и в вершинах.

Пусть заданы уравнения плоскостей граней многогранника, тогда нормаль к их общей вершине равна среднему значению нормалей ко всем граням, сходящимся в этой вершине.

Например, на рис.3.7 направление приближенной нормали в точке есть

,

где - коэффициенты уравнений плоскостей 3-х многоугольниковP0,P1иP4, окружающих.

Если же уравнение плоскостей не заданы, то нормаль к вершине можно определить, усредняя векторные произведения всех ребер, пересекающихся в вершине. Опять, выбирая вершину (см. рис. 3.7), найдем направление приближенной нормали:

Замечания:

  1. нам необходимы только внешние нормали;

  2. вычисление нормали осуществляется до перспективных преобразований, в противном случае направление нормали будет искажено, что приведет к неправильной модели освещения.