Scientific journal
Modern high technologies
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

1 1
1

Существует три основных способа закраски объектов, заданных полигональными сетками. В порядке возрастания сложности ими являются: однотонная закраска, закраска, основанная на интерполяции значений интенсивности, и закраска, построенная на основе интерполяции векторов нормали [1].

Используя терминологию Сазерленда, Спрулла и Шумахера [2] (хотя они ввели классификацию алгоритмов удаления невидимых поверхностей), все эти методы можно скорее отнести к алгоритмам, работающим в пространстве изображения.Единственная информация, которая получается из пространства объекта – это нормали к граням и вектора в узлах полигональной сетки (или углы между векторами, в зависимости от выбранной модели отражения света [3]). В любой другой точке, отличной от узла полигональной сетки, восстановление например вектора нормали, будет невозможным. Это приводит к получению менее реалистичных изображений, чем хотелось бы, к появлению полос Маха, к необходимости использовать интерполяцию векторов, и т.д.

Будем считать, что объект задан набором треугольных граней.Рассмотрим один такой треугольник АВС с координатами вершин в пространстве объекта (xA, yA, zA), (xB, yB, zB) и (xC, yC, zC). После отображения (рис. 1) треугольник преобразуется в АˈВˈСˈ с координатами вершин в пространстве изображения (XA, YA), (XB, YB) и (XC, YC).

kim1.tif

Рисунок 1 – Отображение треугольника

Введем величину n, которая будет вычисляться следующим образом:

kim2.tif

Как видно, n будет равняться наибольшему количеству приращений координаты X или Y при построении растрового изображения сторон треугольника (см. алгоритм Брезенхема [1, 3]).

Рассмотрим параметрическое представление треугольника. Известно, что для параметрического задания отрезка необходим один параметр. Значит для представления треугольника введем два параметра α и β (рис. 2).

 

kim3.tif

Рисунок 2 –Параметрическое задание треугольника

При таком описании точка A имеет координаты α=0, β=n-1. Остальные вершины: B(n -1,0), C(0,0). Тогда любую точку D отрезка AC можно задать линейной комбинацией

kim4.tif

Аналогично представляется любая точка E отрезка BC:

kim5.tif

Теперь нетрудно представить любую точку F треугольника в виде линейной комбинации точек D и E:

kim6.tif

Тогда алгоритм закраски треугольника будет выглядеть следующим образом:

 

for(α=0; α<n; α++)

{

for(β=0; α+β<n; β++)

{

kim7.tif

Получить цвет точки (x, y, z);

Перевести точку (x, y, z) в экранные координаты – точка (X, Y);

Поставить точку (X, Y);

}

}

Следует обратить внимание, что на отрезке AB необходимо учитывать сразу два параметра, при этом α+β<n.

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