Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по компьютерной графике.DOC
Скачиваний:
66
Добавлен:
02.05.2014
Размер:
896 Кб
Скачать

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

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

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

di = | ci - S |,

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

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

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

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

di = -ciS.

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

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

22. Flat – закраска

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