Метод удаления невидимых граней выпуклых тел
В отличие от универсальных алгоритмов узкоспециализированный алгоритм удаления невидимых граней выпуклых тел позволяет производить вычисления гораздо быстрее. Он работает для центральной перспективной проекции. Рассмотрим работу этого алгоритма на примере как изображено на рис. 39.
Пусть наблюдатель находится в точке A. Выберем точку B, которая заведомо является внутренней для выпуклой фигуры, в данном случае призмы. Выберем некоторую грань, про которую мы хотим узнать видима она из точки A, или не видима. Построим плоскость, в которой лежит выбранная грань. Найдем точку пересечения плоскости и прямой, которая образована отрезком AB. Если точка пересечения прямой и плоскости лежит внутри отрезка AB, то делаем вывод, что данная грань видима. Если точка пересечения находится вне отрезка AB, то грань не видима. В случае, когда прямая и плоскость параллельны, считаем что грань не видима.
Глава 7. Модели расчета освещенности граней трехмерных объектов
Цветовой куб RGB
Основной характеристикой света в компьютерной графике является яркость. Поскольку яркость является субъективным понятием, основанным на человеческом восприятии света, то для численных расчетов применяется термин интенсивность, что соответствует яркости и является энергетической характеристикой световой волны. В расчетах интенсивность обычно принимает значения от 0 до 1. При этом интенсивность равна нулю при полном отсутствии света, а значение 1 соответствует максимальной яркости.
В компьютерной графике для расчета освещенности граней объектов зачастую применяется трехкомпонентная цветовая модель “Красный, Зеленый, Синий”, что в английском варианте записывается RGB (Red, Green, Blue). Эта модель позволяет задавать любой цвет в виде трех компонент интенсивностей базовых цветов: красного, зеленого и синего. Интенсивность отраженного света точек пространственных объектов вычисляют отдельно для каждой их трех составляющих цветовых компонент, а затем объединяют в результирующую тройку цветов. Далее будем считать, что примеры расчета интенсивностей отраженного света применяются к каждому их трех базовых цветов.
Наглядное представление цветовой модели RGB возможно с помощью так называемого цветового куба. По осям трехмерной декартовой системы координат откладываются значения интенсивностей компонент красной, зеленой и синей составляющих в диапазоне от 0 до 1. Весь диапазон цветов представляется как множество векторов в пределах единичного куба в пространстве (R,G,B). Главная диагональ этого куба состоит из векторов, которые соответствуют всевозможным градациям серого цвета от черного до белого. Черному цвету соответствует вектор (0,0,0), белому цвету соответствует вектор (1,1,1).
Вершины цветового куба RGB представляют собой цвета максимальной чистоты. Все они имеют свои названия. Первые три, красный, зеленый и синий, называются основными цветами. Остальные три вершины куба, за исключением черного и белого цветов, получаются за счет сложения пар основных цветов. Эти цвета формируют тройку дополнительных цветов CMY или Cyan-Magenta-Yellow, Бирюзовый или цвет морской волны, лиловый и желтый. Система цветов RGB называется аддитивной, за счет того что произвольный цвет в ней формируется как сумма трех основных компонент. Цветовая модель CMY также называется субтрактивной, (от английского Subtraction – вычитание), за счет того что цветовая точка получается в ней вычитанием значений интенсивностей цветовых компонент из белого цвета, то есть из вектора (1,1,1) в системе RGB.
Субтрактивная модель находит широкое применение в полиграфии, только там она называется CMYK и состоит из четырех цветов. Буква K в этой аббревиатуре соответствует черному цвету. По-английски черный пишется как “Black”. Поскольку буква B уже используется для обозначения синего цвета, то для обозначения черного используется последняя буква в английском варианте написания слова. Черный цвет добавляется из соображений удобства применения технологии. Лист бумаги обычно имеет белый цвет, именно поэтому субтрактивная модель CMYK нашла столь широкое применение в книгопечатании.
По координатам (r,g,b) вектора из цветового куба можно определить другую тройку цветовых параметров из пространства тон-яркость-насыщенность или HVS (Hue–Value–Saturation, англ.). Яркость цвета вычисляется как расстояние от начала координат до точки пересечения перпендикуляра, опущенного из точки с координатами (r,g,b) на главную диагональ цветового куба. Насыщенность цвета характеризует его чистоту, удаленность от ближайшей градации серого цвета. Таким образом, насыщенность цвета соответствует длине перпендикуляра, опущенного из точки (r,g,b) на главную диагональ цветового куба. Цветовой тон в цветовом кубе определяется в соответствии с близостью к одному из основных или дополнительных цветов. Цветовой тон соответствует обще используемому понятию цвета. Например, при сравнении цвета листьев различных пород деревьев, мы говорим, что все они “зеленые”, хотя некоторые из них могут иметь более темную или светлую окраску. То есть цвета листьев могут и не совпадать в точности, а лишь иметь общий цветовой тон, хотя мы им приписываем один и тот же цвет.