КГ_5глава (Компьютерная графика)

2017-07-12СтудИзба

Описание файла

Файл "КГ_5глава" внутри архива находится в папке "Компьютерная графика". Документ из архива "Компьютерная графика", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "компьютерная графика" в общих файлах.

Онлайн просмотр документа "КГ_5глава"

Текст из документа "КГ_5глава"

ГЛАВА 5

Примеры изображения трехмерных объектов

5.1. Шар

Рассмотрим несколько способов построения изображения шара.

Каркасное изображение

Для каркасного изображения шара можно рисовать сетку меридианов и па­раллелей. Для этого удобно воспользоваться известными формулами пара­метрического описания. Координаты то­чек поверхности шара определяются как функции от двух переменных (парамет­ров) — широты и долготы (рис. 5.1):

где R — радиус шара, В — широта (изме- рис. 5.1. Широта и долгота няется от -90° до +90°), L — долгота (от -180° до +180° или от 0° до 360°).

Меридиан — это линия, представляющая точки с постоянной долготой. Кар­кас из меридианов можно нарисовать следующим образом:

Здесь введены две величины — dL и dB. Значение dL определяет шаг меридианов по долготе, значение dB — это шаг по широте, который должен был] малым (единицы градусов) для изображения меридиана достаточно гладкой кривой. Преобразование координат производится по формулам, соответст­вующим выбранной проекции. Для аксонометрической проекции — это по­ворот мировых координат на углы а и Д с последующим преобразованием! видовых координат в экранные координаты (как было рассмотрено в главе 2).| Параллель — это линия, состоящая из точек с постоянной широтой. Для рисования каркаса из параллелей можно использовать такой цикл:

На рис. 5.2 изображены примеры каркасного изображения на основе мери­дианов и параллелей.

Рис. 5.2. Меридианы и параллели

I

Удаление невидимых точек

Для изображения поверхности шара с удалением невидимых точек в аксонометрической проекции можно воспользоваться таким свойством: видимыми являются точки с неотрицательным значением координаты Z в системе видо­вых координат. При этом центр видовых координат (X, Y, Z) совпадает с цен­тром шара, плоскость X0Y является плоскостью проецирования, а ось Z на­правлена на камеру (наблюдателя). На рис. 5.3 при­веден простейший вариант показа поверхности шара с удалением невидимых точек меридианов и парал­лелей.

Приведенные выше изображения были построены на основе линий и являются схематичными, весьма дале­кими от реалистичного изображения поверхности ша­ра. Значительно лучше \1ожно нарисовать шар с по­ мощью фигур с заполнением — закрашиванием по- Рис- 5.3. Удалены верхности разными цветами. невидимые точки

Многогранник с закрашиванием граней

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

Мы будем рассматривать достаточно узкий класс многогранников. Отличи­тельным признаком рассматриваемых многогранников является то, что у них ребра ориентированы вдоль меридианов и параллелей. Такие многогранники будем описывать двумя параметрами — шаг по широте {dB) и шаг по долготе (dL) в градусах. Кроме того, будем считать эти многогранники вписанными изнутри в шар, то есть вершины каждой грани лежат на поверхности шара. Очевидно, что с увеличением количества граней такие многогранники все больше приближаются к шару. Иными словами, чем меньше dB и dL, тем лучше поверхность многогранника аппроксимирует форму поверхности шара.

В табл. 5.1 приведены примеры таких многогранников.

Некоторые из этих многогранников достаточно интересны по форме, а мно­гогранник с параметрами dB - 90°, dL = 90° называется октаэдром.

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

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

1

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

Очевидно, что показ граней одним цветом дает неудовлетворительный ре­зультат — полностью теряется форма поверхности трехмерного объекта. По­каз ребер (контуров полигонов граней) другим цветом немного улучшает восприятие (рис. 5.4).

Рис. 5.4. Неудачное изображение — все грани одного цвета

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

for (B=-90; BOO; B+=dB1 \ for (L=0; L<360; Ll+=dL)

x[0] = R cos В sin L ;

y[0] = R cos В cos L ;

z[0] = R sin В ;

x[l] = R cos (B+dB) sin L ;

y[l] = R cos (B+dB) cos L ;

z[l] = R sin (B+dB) ;

x[2] = R cos (B+dB) sin (L+dL) ;

у[2] = R cos (B+dB) cos (L+dL) ;

z[2] = R sin (B+dB) ;

x[3] = R cos В sin (L+dL) ;

y[3] = R cos В cos (L+dL) ;

z[3] = R sin В ;

(X[i], Y[i], Z[i]) = Поворот координат (x[i], y[i], z[i]) ; Определение вектора нормали по (X[i], Y[i], Z[i]) и определение цвета грани, учитывающего ее ориентацию относительно источника света.

Рисование выбранным цветом полигона грани с четырьмя вершинами (X[i], Y[i], Z[i]); }

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

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

Для удаления невидимых точек можно использовать Z-буфер, но можно перестроить цикл так, чтобы грани рисовались в таком порядке— начиная { самых дальних и заканчивая ближайшими.

Для определения цвета каждой грани нужно учесть взаимное расположение источника света и нормали грани. Как уже было показано выше для диффузионной и зеркальной моделей отражения, важно определить координаты вектора нормали. Мы уже рассматривали общий способ вычисления координат нормали к произвольной плоской грани (см. разд. 4.3). Этот способ, на основе векторного произведения, можно применить, естественно, и в данном случае,: Однако для таких многогранников как наши, нормали к граням можно вычислять значительно проще и быстрее. Поскольку радиус-вектор для каждой точки поверхности шара и есть вектор нормали, то координаты каждой точки поверхности шара являются координатами вектора нормали, если координа­ты центра шара равны (0, 0, 0). Таким образом, для вычисления координат вектора нормали к грани достаточно определить координаты точки поверх­ности шара, соответствующей центру грани. Или же можно взять сумму ко­ординат вершин грани и разделить на число вершин — это уже приближен­ный неточный способ.

На рис. 5.5 изображены многогранники с различным числом граней, причем источник освещения расположен сзади нас — на оси Z видовых координат.

Рис. 5.5. Закрашивание граней с учетом их ориентации

Как видим, для создания иллюзии гладкой поверхности шара нужно очень большое число граней (очевидно, что это число возрастает с увеличением видимого радиуса шара). Если рассматривать рис. 5.5, то при dB = dL - 5° многогранник уже похож на шар — отдельные грани достаточно сложно раз­личить на типографском отпечатке этой книги (здесь также сказывается то, что при печати используется дизеринг, который сглаживает изображение).

Однако на экране дисплея грани все еще заметны. Глаз человека подчеркивает границы.

Закрашивание граней методом Гуро

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

Значительным удобством при вычислении координат нормалей в вершинах граней в нашем случае является то, что координаты вектора нормали в любой вершине грани совпадают с координатами самих вершин — если центр шара имеет координаты (0, 0, 0).

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

где Хn, Yn и Zn — видовые координаты вектора нормали. Поскольку координаты вектора нормали в вершине равны координатам вер­шин, а сумма квадратов координат (в том числе и видовых) для любой точки поверхности шара равна квадрату его радиуса, то

где Zv — видовая координата вершины грани.

Алгоритм вывода многогранника для метода Гуро аналогичен рассмотрен­ному выше алгоритму. Запишем его следующим образом:

Поворот координат x[i], y[i], z[i] для определения видовых координат X[i],Y[i],Z[i].

Вычисление интенсивности отраженного света в вершинах. В простейша случае для диффузного рассеивания 1отр[л.] = 1ист * Z[i] / R.

Преобразование видовых координат в координаты устройства графического вывода (экранные координаты).

Рисование полигона с интерполяцией интенсивностей.

}

На рис. 5.6 представлены многогранники с различным числом граней, закрашенные в соответствии с методом Гуро.

Рис. 5.6. Закрашивание Гуро

Как видно на рис. 5.6, иллюзия гладкости поверхности достигается уже при достаточно малом числе граней. Так, например, при dB = dL = 20° в большей степени заметны неровности контура, чем погрешности закрашивания.

Учет расположения источника света

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее