Архитектура ПК История развития компьютерной графики Память Лабораторная работа «Дисковая подсистема ПК» Архитектура системной платы. Основной цикл работы компьютера

Алгоритм художника

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

Метод основан на вычислении удаленности (глубины) di центров ячеек ci (в разных вариантах алгоритма используются и другие опорные точки ячеек) от наблюдателя, сортировке и выводе ячеек в порядке уменьшения элементов вектора d. При наблюдателе, находящемся в конечной точке S, глубина точки ci равна расстоянию

di = | ci - S |,

а в вычислительном аспекте более эффективно использовать квадрат расстояния как скалярное произведение:

di2 = (ci - S) ◦ (ci - S).

В случае наблюдателя, бесконечно удаленного в направлении вектора S, расстояния от него до всех точек также бесконечны. Впрочем, для сортировки можно использовать и относительные глубины, отсчитываемые вдоль любой оси d, противоположной направлению вектора S. Запишем проекцию точки ci на вектор S: Обработка информации – процессы преобразования формы и (или) содержания документов или данных. Цель этих преобразований – изменение состояния информации, придание ей новых свойств. Различают техническую и семантическую обработку информации.

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

di = -ci ◦ S.

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

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

Flat – закраска

Здесь используется специальный дополнительный массив (буфер), в который записывается координата Z для каждого пикселя растра изображения. Координата Z означает расстояние соответствующей точки объекта до плоскости проецирования – это может быть, например, видовая координата Z ( ось Z располагается перпендикулярно плоскости проецирования). Пусть, чем ближе точка в пространстве к плоскости проецирования, тем больше значение Z. Тогда сначала Z – буфер заполняется минимальными значениями. Потом начинается вывод всех объектов. Причем не имеет значения порядок вывода объектов. Для каждого объекта выводятся все его пиксели в любом порядке. Во время вывода каждого пикселя по его координатам (X,Y) находится текущее значение Z в Z – буфере. Если рисуемый пиксель имеет большее значение чем Z, чем значение в Z – буфере, то этот пиксель  действительно рисуется, а его координата Z записывается в Z – буфер. Таким образом, после рисования всех пикселей всех объектов растровое изображение будет состоять из пикселей, которые соответствуют точкам объектов с наибольшими значениями координат Z, то есть видимые точки являются ближайшими к нам.

Метод Гуро

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

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

Закрашивание граней по методу Гуро осуществляется в четыре этапа.

Вычисляются нормали к каждой грани.

Определяются нормали в вершинах. Нормаль в вершине определяется усреднением нормалей примыкающих граней (рис. 28).

На основе нормалей в вершинах вычисляются значения интенсивности в вершинах согласно выбранной модели отражения света.

Закрашиваются полигоны граней цветом, соответствующим линейной интерполяции значений интенсивности в вершинах.

Вектор нормали в вершине (a) равен: Na = (N1 + N2 + N3) / 3.

Интерполированные значения интенсивности отраженного света в каждой точке грани (и, следовательно, цвет каждого пиксела) удобно определять во время цикла заполнения полигона. Рассмотрим заполнение контура грани горизонталями в экранных координатах (рис. 29).


Интерполированная интенсивность I в точке (X, Y) определяется исходя из пропорции

(I - I1) / (X - X1) = (I2 - I1) / (X2 - X1).

Отсюда I = I1 + (I2 - I1) (X - X1) / (X2 - X1).

Значения интенсивностей I1 и I2 на концах горизонтального отрезка представляют собой интерполяцию интенсивности в вершинах:

(I1 - Ib) / (Y - Yb) = (Ic - Ib) / (Yc - Yb)

(I2 - Ib) / (Y - Yb) = (Ia - Ib) / (Ya - Yb)

или

I1 = Ib + (Ic - Ib) (Y - Yb) / (Yc - Yb)

I2 = Ib + (Ia - Ib) (Y - Yb) / (Ya - Yb)

 

Метод Фонга

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


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

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

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

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

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

Сначала найдем N'1 и N'2:

где XNa, YNa, ZNa, XNb, YNb, ZNb, XNc, YNc, ZNc – координаты векторов N'a, N'b и N'c.

Теперь найдем координаты вектора N':

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

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


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

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

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

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

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

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

Q(u, w) = P(0, 0) (1 – u)(1–w) + P(0, 1) (1 – u) w + P(1, 0) u (1–w) + P(1, 1) u 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]

Удаление невидимых линий и поверхностей

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

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


Изучение комплектации рабочей станции