Компьютерная графика Векторные файлы Физическое и логическое сжатие Алгоритм художника Трехмерная графика Растровая графика

Метод Фонга

Метод Фонга аналогичен методу Гуро, но при его использовании для определения цвета в каждой точке интерполируются не интенсивности отраженного света, а векторы нормалей (рис. 30).


1.Определяются нормали к граням.

2.По нормалям к граням определяются нормали в вершинах.

3.В каждой точке закрашиваемой грани определяется интерполированный вектор нормали.

4.По направлению векторов нормали определяется цвет точек грани в соответствии с выбранной моделью отражения света.

Рассмотрим, как можно получить вектор нормали в каждой точке грани. Для интерполяции будем оперировать векторами N'a,'b и'c, исходящими из центра координат плоскости проецирования параллельными соответствующим нормалям Na, Nb Nc вершинах c.

Вектор N' параллелен вектору для нормали в точке (X, Y), поэтому его можно использовать расчета отражения света так же, как и вектор N.

Метод Фонга сложнее метода Гуро. Для каждой точки (пиксела) поверхности необходимо выполнять намного больше вычислительных операций (рис. 31). Тем не менее он дает значительно лучшие результаты, в особенности при имитации зеркальных поверхностей.


 

25. Построение поверхностей

Параметрическое задание поверхности: P (u, w) = [x(u, w), y(u, z(u, w)].

P (u, w) – вектор, полученный по известным или входным данным;

Q(u, w) – вектор конструируемой поверхности.

Билинейные поверхности

Заданы P(0, 0) 1) P(1, – угловые точки поверхности,

Q(u, w) = P(0, 0) (1 – u)(1–w) + P(0, 1) u) w P(1, u (1–w) w (1)

или Q(u, w) = [(1–u) u] P(0, 0) P(0, 1) 1–w 

P(1, 0) P(1, 1) w , u, w Є [0, 1]

 

Линейчатые поверхности

Заданы две граничные кривые: P(u, 0) и 1). Тогда линейная интерполяция между этими кривыми:

Q(u, w) = P(u, 0) (1 – + P(u, 1)w (2) 

При этом: Q(u, 0) = P(u, 0), 1) = P(u, 1).

Если предположить, что известны P(0, w) и P(1, w), то линейчатая поверхность будет:

Q(u, w) = P(0, (1 – u) + P(1, w)u (3)

При этом: Q(0, w) = P(0, w), и Q(1, w).

Линейные поверхности Кунса

Известны четыре граничные кривые: P(u, 0), 1), P(0, w) и P(1, w).

Суммируя уравнения (2) и (3) получим:

Q(u, w) = P(u, 0) (1 – + P(u, 1)w P(0, u) P(1, w)u (4)

Однако анализ показывает, что в угловых точках и на границе получаем несоответствие исходным данным, т.е. Q(0, 0) = P(0, + P(0, 0); w) = P(0, 0)(1 – 1)w .

Исследование уравнения (4) показывает, что несоответствие возникает из-за того, угловые точки просчитываются дважды. Например, P(0, 0) содержится в описании граничных кривых

P(u, 0) и P(0, w). Поэтому для правильного результата необходимо вычесть лишние угловые точки, т.е.:

Q(u, w) = P(u, 0) (1 – + P(u, 1)w P(0, u) P(1, w)u 0)(1 w)(1

– P(0, 1)(1 u)w P(1, 0)u(1 w) 1)uw (5)

В матричной форме его можно записать так:

– P(0, 0) – P(0, 1) P(0, w) 1 – w

Q(u, w) = [1–u u 1] –P(1, 0) 1) P(1, w) w (6)

P(u, 0) 1) 0 1

Функции (1 – u), u, w) называются весовыми функциями.

Участок бикубической поверхности

Используем параметрический многочлен 3-го порядка для описания граничных кривых


P(u, 0), P(u, 1), P(0, w) и P(1, w): (7)


Пусть 0 ≤ t ≤ 1. Производная от многочлена:

(8)


Полагая в (7) и (8) t=0 или t=1 получаем:


В матричной форме: 


Или P = M B. Отсюда

 

Где Подставляя (11) в (7) получаем:


Или в общем случае, считая t параметром, 

Будем строить также как билинейный участок. Сначала построим поверхность удовлетворяющую граничным условиям на краях u = 0 и затем поверхность, w = 0 получения бикубического участка объединим эти результаты. Тогда для первой линейчатой поверхности: 


При u=0 Q(u,w) = P(0,w), т.е. удовлетворяет граничным условиям. Аналогично, линейчатая кубическая поверхность, удовлетворяющая граничным условиям на краях при w = const, будет:

Таким образом, бикубический участок поверхности характеризуется четырьма кубическими весовыми функциями F, граничными кривыми, угловыми точками, восемью касательными и векторами кривизны.

Цветовое пространство LAB представляет цвет в трех каналах: один канал выделен для значений яркости (L - Lightnes) и два других для цветовой информации (А и В). Цветовые каналы соответствуют шкале, а не какому)нибудь одному цвету. Канал А представляет непрерывный спектр от зеленого к красному, в то время как канал В - от синего к желтому. Средние значения для А и В соответствуют реальным оттенкам серого.
Графические библиотеки в языках программирования