Мегаобучалка Главная | О нас | Обратная связь


Алгоритм построения изображения



2019-07-03 173 Обсуждений (0)
Алгоритм построения изображения 0.00 из 5.00 0 оценок




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

Первым этапом построения изображения треугольной грани будет определение координат ее вершин в мировой СК и, в частности, их положения на экране, для чего требуется повернуть СК модели на заранее заданные углы (см. выше). Наиболее изящно такой поворот осуществляется умножением радиуса-вектора вершины на матрицу поворота. Мы же опишем его в терминах обычной координатной геометрии с применением формул поворота «плоской» (!) СК. Пусть x, y, z – начальные, а x’, y’, z’ - конечные координаты вершины, ТАУ – угол поворота, тогда эти формулы приобретают вид:

вокруг оси X:

вокруг оси Y:

вокруг оси Z:

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

Перейдем ко второму, не менее важному этапу. После того, как контур грани на экране определен, нужно найти все точки (пиксели), лежащие внутри него, иными словами, решить классическую задачу о принадлежности точки внутренней области треугольника. Один из вариантов ее решения (найденный автором статьи) таков. Представим контур грани составленным из векторов, а не отрезков (см. рисунок 1). К каждому из них проведем нормаль. Знаки координат вектора нормали выберем так, чтобы он был направлен в сторону противоположной вершины. Тогда внутри треугольника будут находиться те и только те точки, для которых все три скалярных произведения вектора, проведенного из какой-либо вершины в эту точку, и нормали, проведенной из той же вершины, положительны.

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

 

 

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

float ZBuffer[SCREEN_WIDTH][SCREEN_HEIGHT];

Каждой точке на экране (пикселю) соответствует один элемент массива, а его значение трактуется как «глубина» этой точки, иными словами, ее координата z в мировой СК. Перед выводом точки ее «глубина» сравнивается с текущим значением в массиве и, если оказывается меньше его, записывается на его место и точка выводится на экран. Таким образом, видимой среди всех точек с одинаковыми координатами x и y оказывается та, у которой координата z минимальна.

Внимательный читатель заметит, что на предыдущем этапе задачу о взаимном расположении точки и треугольника мы решали в плоскости экрана и ни для одной из проверяемых точек координата z вообще неизвестна. Зато известны координаты z вершин треугольной грани, а кроме того, тот очевидный факт, что любая из точек (пусть это будет все та же точка P на рисунке вверху) лежит в плоскости грани. Следовательно, векторы A, C, XP (можно выбрать и другие тройки) компланарны и

Эта система с неизвестными a, b, Zxp легко решается методом подстановки. Сложив Zx и Zxp, мы получим координату z точки P.

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

x’ = ax + by + c; y’ = dx + ey + f.

Приведенные уравнения справедливы для координат любой точки, в том числе и для вершин, а значит, если мы, например, хотим найти координату u точки P, то должны сначала определить a, b, c, решив систему уравнений

Для решения таких систем часто применяют так называемое правило Крамера. Пусть F11 - определитель, полученный выписыванием коэффициентов перед неизвестными в правой части так, как они расположены в системе, а F12 - определитель, полученный из F11 заменой i-го столбца на столбец свободных членов (левая часть системы). Тогда i-е неизвестное рассчитывается по формуле

Так находятся числа a, b, c и, аналогично, d, e, f, которые затем применяются для расчета текстурных координат точки P. Далее цвет точки текстуры с этими координатами переносится в точку P на экране. Построение точки завершено.

Недостатки концепции

Рассмотренный нами метод работоспособен и вполне надежен. Но у него есть и существенные недостатки, относящиеся, в первую очередь, к скорости построения изображения. Так, изображение модели, состоящей из 1250 граней, на компьютере с процессором Celeron с тактовой частотой 1,3 ГГц строится за 1,5 секунды. Ясно, что для применения в практических задачах метод требуется оптимизировать, прежде всего, уменьшением количества операций умножения и деления чисел.

Настораживают также и требования к объему оперативной памяти: один только z-буфер, являющийся, по сути, вспомогательной структурой, в графическом режиме 640х480 точек потребует 1,2 Мб.

Замечу, что на настоящий момент описанный алгоритм реализован на языке высокого уровня, применение ассемблера смогло бы несколько увеличить его быстродействие.

 



2019-07-03 173 Обсуждений (0)
Алгоритм построения изображения 0.00 из 5.00 0 оценок









Обсуждение в статье: Алгоритм построения изображения

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (173)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)