Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
21.05.2015
Размер:
1.3 Mб
Скачать

Вопросы по компьютерной графике ко 3-й рубежной аттестации

  1. Уравнение плоскости, проходящей через три точки. Вектор нормали к плоскости.

  2. Модели многогранников. Каркасные и сплошные модели. Платоновы тела.

    1. тетраэдр

    2. гексаэдр

    3. октаэдр

    4. икосаэдр

    5. додекаэдр

  3. Общее уравнение квадратичной поверхности, его матричное представление. Вектор нормали к поверхности в данной точке.

  4. Классификация квадратичных поверхностей. Приведенные уравнения для различных видов квадратичных поверхностей.

  5. Параметрическое описание квадратичных поверхностей. Алгоритм построения для различных видов квадратичных поверхностей:

    1. невырожденных поверхностей эллиптического типа

    2. невырожденных поверхностей гиперболического типа

    3. невырожденных поверхностей параболического типа

    4. вырожденных поверхностей

  6. Визуализация математической модели сцены. Этапы визуализации. Алгоритмы удаления невидимых элементов, их классификация.

  7. Алгоритм Робертса. Удаление невидимых граней.

  8. Алгоритм Робертса. Удаление невидимых ребер.

  9. Удаление невидимых элементов с использованием z-буфера.

  10. Моделирование эффектов освещения.

  1. Уравнение плоскости, проходящей через три точки. Вектор нормали к плоскости.

  2. Модели многогранников. Каркасные и сплошные модели. Платоновы тела.

    1. тетраэдр

    2. гексаэдр

    3. октаэдр

    4. икосаэдр

    5. додекаэдр

  3. Общее уравнение квадратичной поверхности, его матричное представление. Вектор нормали к поверхности в данной точке.

  4. Классификация квадратичных поверхностей. Приведенные уравнения для различных видов квадратичных поверхностей.

  5. Параметрическое описание квадратичных поверхностей. Алгоритм построения для различных видов квадратичных поверхностей:

    1. невырожденных поверхностей эллиптического типа

    2. невырожденных поверхностей гиперболического типа

    3. невырожденных поверхностей параболического типа

    4. вырожденных поверхностей

  6. Визуализация математической модели сцены. Этапы визуализации. Алгоритмы удаления невидимых элементов, их классификация.

  7. Алгоритм Робертса. Удаление невидимых граней.

  8. Алгоритм Робертса. Удаление невидимых ребер.

  9. Удаление невидимых элементов с использованием z-буфера.

  10. Моделирование эффектов освещения.

1. Уравнение плоскости, проходящей через три точки. Вектор нормали к плоскости.

2.Модели многогранников. Каркасные и сплошные модели. Платоновы тела.

Платоновы тела:

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

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

Формула Эйлера:

Г – Р + В = 2,

где Г – число граней, Р – число ребер, В – число вершин

Согласно Евклиду существуют следующие платоновы тела:

n = 3, m = 3 – тетраэдр;

n = 4, m = 3 – гексаэдр (куб);

n = 3, m = 4 – октаэдр;

n = 3, m = 5 – икосаэдр;

n = 5, m = 3 – додекаэдр

а) тетраэдр

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

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

Будем считать, что начало координат находится в центре куба, описанного вокруг многогранника, и что длина ребра куба равна 2.

Тетраэдр имеет 4 грани, 6 ребер и 4 вершины. Простейший способ построения тетраэдра заключается в использовании куба в качестве вспомогательного тела, как показано на рис. 5. Сначала вычерчивается куб, выбираются нужные грани, проводятся диагонали, а затем лишние линии куба стираются. При желании куб можно поворачивать на требуемый угол.

b) гексаэдр

Гексаэдр имеет 6 граней, 12 ребер и 8 вершин. Построение этого тела тривиально и не вызывает проблем.

Исходная матрица координат вершин (вершины 0, 1, 2, 3 – нижнее основание; вершины 4, 5, 6, 7 – верхнее основание).

с. октаэдр

Октаэдр имеет 8 граней, 12 ребер и 6 вершин и не может быть непосредственно вписан в куб. Однако, алгоритм его построения достаточно прост. Рассмотрим внимательно рис.6. Как видно, две вершины октаэдра расположены по обе стороны квадрата. Предположим, что стороны квадрата 1-2-3-4 имеют длину, равную 2. Точка 7 расположена в центре квадрата и также является центром октаэдра, а точка 8 находится посередине ребра 4-1. Поскольку точка 5 лежит на перпендикуляре в точке 7, то все, что нам надо знать, это расстояние h между этими двумя точками. Здесь можно использовать тот факт, что все вершины правильного многоугольника находятся на одинаковом расстоянии от центра. Следовательно, треугольник 1-5-7 является равнобедренным прямоугольным треугольником, что позволяет легко вычислить h.

d. икосаэдр

Икосаэдр – это многогранник, имеющий 20 граней, 30 ребер и 12 вершин. Для его построения необходимо выполнить следующие операции:

1) построить правильный пятиугольник на одной из граней единичного куба;

2) построить правильный пятиугольник на противоположной грани того же куба;

3) соединить вершины нижнего многоугольника с вершинами верхнего многоугольника;

4) вычислить z-координаты верхней и нижней точек икосаэдра и соединить их с вершинами верхнего и нижнего многоугольников, соответственно.

e. додекаэдр

Этот многогранник имеет 12 граней, 30 ребер, 20 вершин. Каждая из 12 граней является правильным пентагоном (пятиугольником).

Конструирование додекаэдра удобно выполнять с помощью вписанного в него куба (рис. 8) Этот метод конструирования был предложен Евклидом.

На каждой грани куба строим « четырехскатную крышу», две грани которой – треугольники и две – трапеции. Такой треугольник и трапецию получим, если построим правильный пятиугольник, у которого диагональ равна ребру куба. Стороны этого пятиугольника будут равны ребрам додекаэдра, а построенные с помощью диагонали треугольник и трапеция окажутся фрагментами «четырехскатной крыши»

3.Общее уравнение квадратичной поверхности, его матричное представление. Вектор нормали к поверхности в данной точке.

Поверхности второго порядка (квадратичные поверхности)

Из аналитической геометрии известно, что функция вида

(10)

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

Наиболее удобно с вычислительной точки зрения представлять квадратичную функцию (10) в матричном виде:

,

(11)

где

.

(12)

Нормальный вектор к квадратичной поверхности в точке  определяется по правилу

,

(13)

где

;

,

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

4.Классификация квадратичных поверхностей. Приведенные уравнения для различных видов квадратичных поверхностей.

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

Действительный эллипсоид — невырожденная центральная поверхность.

Однополостный гиперболоид — невырожденная центральная поверхность (рис. 6).

Двуполостный гиперболоид — невырожденная центральная поверхность (рис. 7).

Эллиптический конус — вырожденная центральная поверхность (рис. 8).

Гиперболический параболоид — невырожденная нецентральная поверхность (рис. 9).

Эллиптический параболоид — невырожденная нецентральная поверхность (рис. 10).

Эллиптический цилиндр — вырожденная нецентральная поверхность (рис. 11).

Параболический цилиндр — вырожденная нецентральная поверхность (рис. 12).

Гиперболический цилиндр — вырожденная нецентральная поверхность (рис. 13).

Тор — поверхность четвертого порядка (рис. 14).

5.Параметрическое описание квадратичных поверхностей. Алгоритм построения для различных видов квадратичных поверхностей:

В данном разделе представлены уравнения в параметрической форме, как функции от параметров t и τ, для тех же поверностей, что и в предыдущем разделе. Для каждого параметра указан диапазон изменения.

Действительный эллипсоид — невырожденная центральная поверхность: p(t, τ) = [a˟sin(t)sin(τ), b˟cos(t), c˟sin(t)cos(τ)], t⋲[0, π], τ⋲[0, 2π]

Однополостный гиперболоид — невырожденная центральная поверхность p(t, τ) = [a˟ch(t)sin(τ), b˟sh(t), c˟ch(t)cos(τ)], t⋲(-∞, ∞), τ⋲[0, 2π]

Двуполостный гиперболоид — невырожденная центральная поверхность p(t, τ) = [a˟sh(t)sin(τ), ±b˟ch(t), c˟sh(t)cos(τ)], t⋲[0, ∞), τ⋲[0, 2π]

Эллиптический конус — вырожденная центральная поверхность p(t, τ) = [a˟t*sin(τ), b˟t, c˟t*cos(τ)], t⋲(-∞, ∞), τ⋲[0, 2π] Гиперболический параболоид — невырожденная нецентральная поверхность p(t, τ) = [a˟t*sin(τ), b˟t2*cos(2τ), c˟t*cos(τ)], t⋲[0, ∞), τ⋲[0, 2π]

Эллиптический параболоид — невырожденная нецентральная поверхность p(t, τ) = [a˟t*sin(τ), b˟t2, c˟t*cos(τ)], t⋲[0, ∞), τ⋲[0, 2π]

Эллиптический цилиндр — вырожденная нецентральная поверхность p(t, τ) = [a˟sin(τ), b˟t, c˟cos(τ)], t⋲(-∞, ∞), τ⋲[0, 2π] Параболический цилиндр — вырожденная нецентральная поверхность p(t, τ) = [a˟τ, b˟t, c˟τ2], t⋲(∞, ∞), τ⋲(-∞, ∞)

6.Визуализация математической модели сцены. Этапы визуализации. Алгоритмы удаления невидимых элементов, их классификация.

Основной задачей компьютерной графики является построение изображения различного рода объектов на основе их математических моделей. До сих пор основное внимание уделялось нами построению таких моделей, включая методы описания: линий и фигур на плоскости; линий, поверхностей и многогранников в 3D-пространстве; геометрических преобразований, связанных с перемещением, вращением и деформацией объектов; способов проецирования трехмерных объектов на плоскость изображения.

После построения математической модели объекта или сцены, содержащей набор таких объектов необходимо выполнить второй этап построения изображения – его визуализацию, т.е. построение реалистичного изображения объемной сцены на плоском экране дисплея. Первый этап состоит в решении геометрических задач – отсечения элементов, не попавших в область отображения сцены и удаления элементов, экранированных другими элементами и поэтому невидимых наблюдателю. Второй подэтап включает ряд задач по передаче различного рода оптических эффектов, воспринимаемых нашими органами зрения. Большинство алгоритмов удаления невидимых линий (поверхностей) включают в себя сортировку. Главная сортировка ведется по геометрическому расстоянию от тела, поверхности, ребра или точки до точки наблюдения. После определения расстояний или приоритетов по глубине остается провести сортировку по горизонтали и по вертикали, чтобы выяснить, будет ли рассматриваемый объект действительно заслонен объектом, расположенным ближе к точке наблюдения. Эффективность любого алгоритма удаления невидимых линий или поверхностей в большой мере зависит от эффективности процесса сортировки. Алгоритмы удаления невидимых линий или поверхностей можно классифицировать по способу выбора системы координат или пространства, в котором они работают. Выделяют три класса алгоритмов: алгоритмы, работающие в объектном пространстве; алгоритмы, работающие в пространстве экрана; гибридные алгоритмы, формирующие список приоритетов. Алгоритмы, работающие в объектном пространстве, имеют дело с физической системой координат, в которой описаны эти объекты Модельные расчеты производятся в объектных координатах с машинной точностью. Затем производится пересчет объектных координат в экранные координаты. Полученные изображения можно свободно масштабировать, увеличивая или уменьшая во много раз. Объектные алгоритмы обеспечивают высокую точность результатов, однако отличаются достаточной сложностью. Алгоритмы же, работающие в пространстве экрана, имеют дело с системой координат того экрана, на котором объекты визуализируются. При этом точность вычислений ограничена разрешающей способностью экрана wh пикселей. Экранным алгоритмам свойственны ошибки дискретизации, которые особенно проявляются при масштабном увеличении изображения. Гибридные алгоритмы работают попеременно в обеих упомянутых системах координат, объединяя преимущества двух других классов алгоритмов, и содержат различного рода оптимизации.

7.Алгоритм Робертса. Удаление невидимых граней.

Пусть F — некоторая грань многогранника. Плоскость, несущая эту грань, разделяет пространство на два подпространства. Назовем положительным то из них, в которое смотрит внешняя нормаль к грани. Если точка наблюдения – в положительном подпространстве, то грань – лицевая, в противном случае – нелицевая. Для определения, лежит ли точка в положительном подпространстве, используют проверку знака скалярного произведения (L, N), где L – вектор, направленный к наблюдателю, фактически определяет точку наблюдения; N – вектор внешней нормали грани. Если (L, N) > 0, т. е. угол между векторами острый, то грань является лицевой. Если (L, N) < 0, т. е. угол между векторами тупой, то грань является нелицевой. В случае, если сцена представляет собой один выпуклый многогранник, удаление всех нелицевых граней полностью решает задачу визуализации с удалением невидимых граней.

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

Уравнение произвольной плоскости в трехмерном пространстве имеет вид: a*х + b*y + c*z + d = 0 (1а)

В матричной форме этот результат выглядит так: [S]* [P] T = 0, (1б) где [P] = [х у z 1] – вектор однородных координат точки, а [S] = [a b c d] – вектор, описывающий плоскость. Если [P] не лежит на плоскости, то знак этого скалярного произведения [S]*[P] T показывает, по какую сторону от плоскости расположена точка. Коэффициенты a, b, c в уравнении (1а) могут рассматриваться в качестве координат вектора нормали к плоскости. Если эта нормаль является внешней нормалью многогранника, то скалярное произведение должно быть положительным для внешних точек и отрицательным для точек, лежащих внутри него.

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

Рассмотрим второй случай и будем считать, что наблюдатель находится в бесконечно удаленной точке E на оси OZ. В обобщенных координатах вектор этой точки имеет вид [E] = [0 0  1]. Используя свойство обобщенных координат, позволяющее делить их на произвольную константу, преобразуем этот вектор к виду [E] = [0 0 1 0]. Теперь остается вычислить произведение вектора [E] на матрицу [V]. Положительное скалярное произведение дает только такая плоскость (столбец) в матрице тела, относительно которой точка наблюдения лежит снаружи, т. е. в положительном подпространстве и соответствующая грань является лицевой. Этот метод является простейшим алгоритмом удаления невидимых поверхностей для тел, представляющих собой одиночные выпуклые многогранники. Он также используется для удаления нелицевых или задних граней из сцены перед применением одного из алгоритмов удаления невидимых линий, которые обсуждаются ниже. Этот способ часто называют отбрасыванием задних плоскостей. Для выпуклых многогранников число граней при этом сокращается примерно наполовину. Метод эквивалентен вычислению нормали к поверхности для каждого отдельного многоугольника.

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

8.Алгоритм Робертса. Удаление невидимых ребер.

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

Для оптимизации этого процесса используется приоритетная сортировка (z-сортировка), а также сравнения с прямоугольными объемлющими оболочками тел. Такой подход позволяет удалить целые группы или кластеры отрезков и тел. Для сравнения отрезка Р1Р2 с телом удобно использовать параметрическое представление этого отрезка: P(t)= Р1+( Р2- Р1)*t , где 0  t  1. В векторном виде параметрическая функция представляется следующим образом: v = s + d*t, где v — вектор точки на отрезке, s — начальная точка, а d — направление отрезка. Необходимо определить, будет ли отрезок невидимым. Если он невидим, то надо найти те значения t, для которых он невидим. Для этого формируется другой параметрический отрезок от точки Р(t) до точки наблюдения g: Q(a, t) = u = v + g*α = s + d*t + g*α, где 0  t  1, α ≥ 0. Здесь α и t выполняют аналогичные функции. Заданное значение t указывает точку на отрезке Р(t), а α указывает точку на отрезке, проведенном от точки Р(t) до точки наблюдения. Фактически Q(α,t) представляет собой плоскость в трехмерном пространстве. Пара (α,t) определяет точку на этой плоскости. Значение α положительно, поскольку тела, экранирующие Р(t), могут находиться только в той части этой плоскости, которая заключена между отрезком Р(t) и точкой наблюдения. Напомним, что скалярное произведение любой точки, лежащей внутри тела, на матрицу тела отрицательно. Если же точка лежит внутри тела, то она невидима. Поэтому для определения части отрезка, которая экранируется телом, достаточно найти те значения α и t, для которых скалярное произведение Q(α, t) = u на матрицу тела отрицательно. Это скалярное произведение равно: h = u*[V] = s*[V] + t*d*[V] + α *g*[V] < 0, 0  t  1, α ≥ 0. Если все компоненты h неположительны для некоторых t и α, то отрезок при этих значениях t экранируется данным телом. Обозначив p = s*[V], q = d*[V], w = g*[V] запишем условия в виде h j = p j + t*q j + α *w j < 0, 0  t  1, α ≥ 0. где j – номер столбца в матрице тела. Эти условия должны выполняться при всех значениях j, т. е. для всех плоскостей, ограничивающих объем тела. Пограничный случай между видимостью и невидимостью возникает, когда h j = 0. При h j = 0 точка лежит на плоскости. Полагая h j = 0 для всех плоскостей, мы получим систему уравнений относительно α и t, которые должны удовлетворяться одновременно. Результат можно получить путем совместного решения всевозможных пар уравнений из этой системы, при этом будут найдены все значения α и t, при которых изменяется значение видимости отрезка.

9.Удаление невидимых элементов с использованием z-буфера.

Алгоритм, использующий z-буфер это один из простейших алгоритмов удаления невидимых поверхностей. Впервые он был предложен Кэтмулом. Работает этот алгоритм в пространстве изображения. Идея z-буфера является простым обобщением идеи о буфере кадра. Буфер кадра используется для запоминания атрибутов (интенсивности) каждого пиксела в пространстве изображения, z-буфер - это отдельный буфер глубины, используемый для запоминания координаты z или глубины каждого видимого пиксела в пространстве изображения. В процессе работы глубина или значение z каждого нового пиксела, который нужно занести в буфер кадра, сравнивается с глубиной того пиксела, который уже занесен в z-буфер. Если это сравнение показывает, что новый пиксел расположен впереди пиксела, находящегося в буфере кадра, то новый пиксел заносится в этот буфер и, кроме того, производится корректировка z-буфера новым значением z. Если же сравнение дает противоположный результат, то никаких действий не производится. По сути, алгоритм является поиском по х и у наибольшего значения функции z (х, у).

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

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

Основной недостаток алгоритма - большой объем требуемой памяти. Если сцена подвергается видовому преобразованию и отсекается до фиксированного диапазона значений координат z, то можно использовать z-буфер с фиксированной точностью. Информацию о глубине нужно обрабатывать с большей точностью, чем координатную информацию на плоскости (х, y); обычно бывает достаточно 20-ти бит. Буфер кадра размером 512х512х24 бит в комбинации с z-буфером размером 512х512х20 бит требует почти 1.5 мегабайт памяти. Однако снижение цен на память делает экономически оправданным создание специализированных запоминающих устройств для z-буфера и связанной с ним аппаратуры.

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

Формальное описание алгоритма z-буфера таково:

1.   Заполнить буфер кадра фоновым значением интенсивности или цвета.

2.   Заполнить z-буфер минимальным значением z.

3.   Преобразовать каждый многоугольник в растровую форму в произвольном порядке.

4.   Для каждого Пиксел(x,y) в многоугольнике вычислить его глубину z(x,y).

5.   Сравнить глубину z(х,у) со значением Zбуфер(х,у), хранящимся в z-буфере в этой же позиции.

Если z(х,у) > Zбуфер (х,у), то записать атрибут этого многоугольника (интенсивность, цвет и т. п.) в буфер кадра и заменить Zбуфер(х,у) на z(х,у). В противном случае никаких действий не производить.

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

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

Реализация алгоритма вдоль сканирующей строки позволяет совместить алгоритм z-буфера с алгоритмами растровой развертки ребер и алгоритмами закраски грани.

10.Моделирование эффектов освещения.

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

Интенсивность падающего фонового излучения IF считается постоянной для всех точек поверхности тела. Это излучение частично поглощается телом и частично отражается от его поверхности. Интенсивность его отраженной части одинакова во всех направлениях и равна kF *IF, где kF – коэффициент отражения (0≤ kF ≤1). Собственный цвет поверхности определяется спектральным составом отраженной части падающего на нее белого фонового излучения.

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

Зеркальное отражение имеет направленный характер (закон Снеллиуса) и происходит вследствие взаимодействия падающего излучения с поверхностными слоями материала. При этом поверхность тела должна быть достаточно гладкой. Идеальная зеркальная поверхность отражает падающий свет в строго определенном направлении. Если поверхность не идеально зеркальная, то лучи отражаются в различных направлениях с разной интенсивностью, а функция изменения интенсивности имеет четко выраженный максимум в направлении вектора идеального отражения.

Для описания зеркального отражения в компьютерной графике используется эмпирическая модель Фонга: для глаза наблюдателя интенсивность зеркально отраженного луча зависит от угла ψ между идеально отраженным лучом M и направлением к наблюдателю S.

В модели Фонга интенсивность зеркально отраженного излучения описывается соотношением:

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

Закон Ламберта: интенсивность отражения пропорциональна косинусу угла между внешней нормалью к поверхности и направлением к источнику света:

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

Таким образом, модель освещенности, учитывающую фоновое освещение, зеркальное и диффузное отражения, можно описать формулой:

где r – расстояние до центра проекции, а C – произвольная постоянная. Если центр проекции находится на бесконечности, т. е. при параллельном проецировании, то в качестве r можно взять расстояние до объекта, наиболее близкого к наблюдателю.

Во многих публикациях, посвященных проблеме освещения, коэффициент диффузионного D и зеркального S отражения зависят от следующих параметров:

- угла l между направлением к источнику света и нормалью к поверхности;

- угла m между вектором M и нормалью к поверхности;

- максимального коэффициента диффузионного отражения Cd;

- шероховатости материала Kd;

- максимального коэффициента отражения поверхностного слоя Cs;

- шероховатости поверхностного слоя Ks.

Модель освещения для любой точки определяется следующими выражениями:

ColorR = max(max(1,A+D)*CmR+s,1)*CsR;

ColorG = max(max(1,A+D)*CmG+s,1)*CsG; (6.109)

ColorB = max(max(1,A+D)*CmB+s,1)*CsB,

где A - интенсивность рассеянного света, B - интенсивность белого цвета, CsR, CsG, CsB - красная, зеленая, синяя составляющие цвета источника света, CmR, CmG, CmB - красная, зеленая, синяя составляющие цвета материала. Все параметры изменяются от 0 до 1.

Соседние файлы в папке Хлеб шпоры