Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Закраска фигуры по Фонгу. Вуалирование граней




 

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

На рис. 25.2 (а также на рис. 25.3) изображены четыре плоскости, спроецированные на экран монитора. Горизонтальная штрих-линия представляет собой горизонтальный ряд пикселов, который строится лучом ЭЛТ.

 

Рассмотрим метод Фонга, суть которого состоит в аппроксимации нормалей, на примере.

1. Пусть нам известны уравнения плоскостей для трех многоугольников, и сходятся они в одной вершине. Три плоскости собираются в вершине V. Усредняем нормаль в ней:

nv = (a1 + a2 + a3)i + (b1 + b2 + b3)j + (c1 + c2 + c3)k

P0: z - 1 = 0;

P1: -y + z - 2 = 0;

P2: -x + z - 2 = 0.

nv = -i - j + 3k - усредненная нормаль в точке n (используется для вычисления интенсивности пиксела).

|n| = ((-1)2 + (-1)2 + 32)0.5 = 110.5 - абсолютная величина нормали.

е = nv / |n| = -0.3i - 0.3j + 0.9k - единичная (нормированная) нормаль.

2. Вычисляем нормаль в каждом пикселе строки. Для закраски необходимы векторы нормали в точках A, B и C. Аппроксимируем их усреднением нормалей к окружающим плоскостям. Для того, чтобы изобразить объект методом построчного сканирования, нужно в соответствии с моделью освещения рассчитывать интенсивность каждого пиксела вдоль сканирующей строки. Сначала определяется интенсивность вершин многоугольника (A, B и C), а затем с помощью интерполяции вычисляется интенсивность каждого пиксела на сканирующей строке.

 

Нормаль в точке Q находится линейной интерполяцией между А и В:

nQ = U * nA + (1 - U) * nB; 0 <= U <= 1; U = AQ/AB.

Нормаль в точке R находится линейной интерполяцией между B и C:

nR = Δ * nB + (1 - Δ) * nC; Δ = BR/BC.

Нормаль в точке P находится линейной интерполяцией между Q и R:

nP = t * nQ + (1 - t) * nR; 0 <= t <= 1; t = QP/QR.

 

Модели цвета

 

Объект кажется нам цветным, если он отражает и пропускает свет в узком диапазоне длин волн и поглощает все остальные длины волн. Параметры цвета: тон, насыщенность, светлость.

Тон определяет различие цветов и связан с длиной волны λ (рис. 26.1).

 

Насыщенность есть степень ослабленности данного цвета белым цветом (рис. 26.2).

Системы смешения цветов

 

RGB (красный, зеленый, синий - основные цвета) - аддитивная система (рис. 26.3), используется в излучающих поверхностях (светящиеся материалы, экраны мониторов). Белый цвет в этой системе является "абсолютно грязным цветом", так как он получается смешением красного, зеленого и синего цветов.

 

При смешении основных цветов системы RGB могут получаться дополнительные, например: зеленый + синий = голубой, зеленый + красный = желтый... Также нужно иметь в виду, что, например, полученный голубой цвет будет дополнительным к основному красному, и при этом голубой + красный = белый. Отсюда вытекает общая формула: <дополнительный цвет> + <основной цвет> = белый (справедливо и такое равенство: белый - <дополнительный цвет> = <основной цвет>).

CMY (голубой, пурпурный, желтый) - субтрактивная система, используется в отражающих поверхностях. Дополнительный цвет из субтрактивной системы есть основной цвет из аддитивной системы и наоборот.

 

Две системы взаимнооднозначны: голубой - красный, желтый - синий, пурпурный - зеленый. Цвета каждой пары взаимно дополняют друг друга. Это означает, что, скажем, пурпурный фильтр пропустит все цвета, кроме зеленого, желтый фильтр пропустит любой цвет, кроме синего и т. д. Как и в RGB-системе, справедлива формула: <дополнительный цвет> + <основной цвет> = белый.

Основные цвета и аддитивной, и субтрактивной системы можно получить, имея соответствующий набор светофильтров (рис. 26.5).

Любой цвет можно представить тройками чисел вида: (r, g, b); r, g и b характеризуют относительное количество потоков красного, зеленого и синего цветов и могут принимать любое значение в диапазоне от нуля до единицы.

На графике тройки чисел (r, g, b) являются координатами вектора, проведенного из начала координат:

 

Проецируя единичную плоскость, мы получим цветовой график (рис. 26.7). r' = r/(r + g + b), g' = g/(r + g + b), b' = b/(r + g + b), где r', g', b' - относительные веса компонент RGB. Следовательно, r' + g' + b' = 1 и b' = 1 - r' - g'; таким образом, с учетом двумерности и неодинаковой чувствительности в координатах XY, компоненту b' можно трактовать как яркость (интенсивность).

На рис. 26.8 изображен график МКО (МКО - Международная комиссия по освещению), на котором любой цвет, видимый глазом, кодируется как точка, лежащая внутри контура (100% чистые цвета лежат на контуре). Хотя этот график имеет необычную форму, им очень удобно пользоваться при практических расчетах.

Числа x и y дают относительное количество трех основных цветов, а третьей координатой дополнительно может быть задана интенсивность (см. формулы выше). D - это опорный белый цвет для экрана монитора. Стопроцентно чистые цвета лежат на контуре графика. Опорный белый цвет имеет 0% чистоты, то есть полностью разбавлен. Найти чистоту цветов означает найти отношение а/(а + b), где а - расстояние от белого до цвета, b - от цвета до контура.

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

 

Смешение цветов

 

Пусть имеется два цвета: c1(x1, y1, Y1) и c2(x2, y2, Y2), где x1, y1 - координаты первого цвета на графике МКО, x2, y2 - координаты второго цвета на графике МКО, Y1, Y2 - интенсивность. Требуется смешать c1 и c2 и получить цвет c12(x12, y12, Y12). С этой целью используются следующие формулы:

x12 = (x1 * Y1/y1 + x2 * Y2/y2)/(Y1/y1 + Y2/y2),

y12 = (y1 * Y1/y1 + y2 * Y2/y2)/(Y1/y1 + Y2/y2),

Y12 = Y1 + Y2.

Пример: необходимо смешать три цвета c1(0.1, 0.3, 10), c2(0.35, 0.2, 10) и c3(0.2, 0.5, 10) (рис. 26.9).

Вначале смешиваем c1 и c2: с помощью формул находим x12, y12, Y12 - получаем c12(0.25, 0.24, 20). Далее смешиваем c12 и c3 и получаем окончательно цвет c123(0.24, 0.29, 30).

 

На рис. 26.10 представлены характеристики некоторых светоматериалов (фотопленка, видеопленка и т. д.). Из этого рисунка хорошо видно, что разного рода технические средства искажают (срезают) видимую часть спектра.





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 538 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Большинство людей упускают появившуюся возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © Томас Эдисон
==> читать все изречения...

2628 - | 2284 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.