Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Математические основы программирования трехмерной графики

Покупка
Артикул: 799105.01.99
Доступ онлайн
350 ₽
В корзину
В учебном издании рассмотрены алгоритмические основы построения и анимации трехмерных изображений. Изучается программный интерфейс, связывающий прикладную программу и систему компьютерной графики. Изложены основные математические и программные принципы создания трехмерных объектов с использованием графической библиотеки OpenGL. Сформулированы цели лабораторных работ, изложена необходимая информация для разработки графических программ визуализации анимационных трехмерных сцен. Учебно-методическое пособие предназначено для бакалавров.
Папуловская, Н. В. Математические основы программирования трехмерной графики : учебно-методическое пособие / Н. В. Папуловская. - Екатеринбург : Изд-во Уральского ун-та, 2016. - 112 с. - ISBN 978-5-7996-1942-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/1936360 (дата обращения: 19.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство образования и науки Российской Федерации 

Уральский федеральный университет 

имени первого президента России Б. Н. Ельцина 

Н. В. Папуловская

МАТЕМАТИЧЕСКИЕ ОСНОВЫ 

ПРОГРАММИРОВАНИЯ 
ТРЕХМЕРНОЙ ГРАФИКИ 

Рекомендовано методическим советом  
Уральского федерального университета 
в  качестве учебно-методического пособия

для студентов, обучающихся по направлению подготовки 

09.03.01 «Информатика и вычислительная техника» 

Екатеринбург 

Издательство Уральского университета 

2016 

УДК 004.421.2:004.92-023.5(075.8) 
ББК 32.973я73+32.972.131.1я73
         П17 

Рецензенты:
Урал. ин-т экономики, управления и права (завкаф. математики и естественно-
научных дисциплин, доц., канд. физ.-мат. наук С. П. Трофимов);

завкаф., доц., канд. техн. наук С. В. Фёдорова (НЧОУ ВО «Технический 
университет УГМК») 

Научный редактор — проф., д-р техн. наук Л. Г. Доросинский 

На обложке — иллюстрация Андрея Кобелева

П17

Папуловская, Н. В.
Математические основы программирования трехмерной графики : 
учебно-методической пособие / Н. В. Папуловская. — 
Екатеринбург : Изд-во Урал. ун-та, 2016. — 112 с.
ISBN 978-5-7996-1942-8

В учебном издании рассмотрены алгоритмические основы построения  

и анимации трехмерных изображений. Изучается программный интерфейс, 
связывающий прикладную программу и систему компьютерной графики. Изложены 
основные математические и программные принципы создания трех-
мерных объектов с использованием графической библиотеки OpenGL. Сформулированы 
цели лабораторных работ, изложена необходимая информация 
для разработки графических программ визуализации анимационных трех-
мерных сцен.

Учебно-методическое пособие предназначено для бакалавров.

Библиогр.: 11 назв. Табл. 2. Рис. 43.

УДК 004.421.2:004.92-023.5(075.8) 
ББК 32.973я73+32.972.131.1я73

ISBN 978-5-7996-1942-8
© Уральский федеральный  
     университет, 2016
© Кобелев А., иллюстрации,  
     2016

ОГЛАВЛЕНИЕ

ПРЕДИСЛОВИЕ .............................................................................5

ВВЕДЕНИЕ .....................................................................................7

РАЗДЕЛ А. ОСНОВЫ ПОСТРОЕНИЯ КОМПЬЮТЕРНОЙ  
ГРАФИКИ .......................................................................................10
Глава 1. Математический аппарат ...................................................10

1.1. Фреймы ..................................................................................10
1.2. Однородная система координат ...........................................11
1.3. Переход из одного фрейма в другой .....................................13
1.4. Аффинные преобразования ..................................................16
1.5. Преобразования в однородных координатах .......................20
1.5. Преобразование фрейма в графической системе ................24
Упражнения к главе 1 ..................................................................24

Глава 2. Проецирование ..................................................................25

2.1. Классическая и компьютерная визуализация ......................25
2.2. Проективное преобразование ...............................................28
2.3. Матрица параллельного проецирования .............................30
2.4. Матрица перспективного проецирования ...........................34
2.5. Проецирование и формирование теней ...............................37
Упражнения к главе 2 ..................................................................40

Глава 3. Закрашивание .....................................................................41

3.1. Свет и материя .......................................................................41
3.3. Модель отражения Фонга .....................................................51
3.4. Модель направленного света ................................................53
3.5. Прозрачность объекта ...........................................................56

Оглавление

Упражнения к главе 3 ..................................................................61

Глава 4. Вычисление векторов .........................................................62

4.1. Вектор нормали к поверхности ............................................62
4.2. Вектор отражения..................................................................65
4.3. Вектор половинного направления .......................................67
Упражнения к главе 4 ..................................................................67

РАЗДЕЛ Б. ОСНОВЫ ПРОГРАММИРОВАНИЯ  
ГРАФИЧЕСКИХ ОБРАЗОВ ...........................................................69
Глава 5. Графическая библиотека OpenGL .....................................69

5.1. Подключение библиотеки OpenGL и начальная настройка 
формы проекта .............................................................................69
5.2. Использование дополнительных библиотек ........................70
5.3. Синтаксис команд OpenGL ..................................................72
5.4. Рисование примитивов .........................................................73
5.5. Визуализация сцены .............................................................74
5.6.  Видовые преобразования .....................................................78
5.7. Аффинные преобразования ..................................................79

Глава 6. Лабораторный практикум ..................................................80

Правила оформления отчета .......................................................80
Лабораторная работа № 1. Синусоида ........................................82
Лабораторная работа № 2. Куб ....................................................83
Лабораторная работа № 3. Анимация .........................................83
Лабораторная работа № 4. Свет ..................................................85
Лабораторная работа № 5. Прозрачность ...................................88
Лабораторная работа № 6. Текстуры ..........................................92
Лабораторная работа № 7. Интерактивная графика ..................96

СЛОВАРЬ СПЕЦИАЛЬНЫХ ТЕРМИНОВ И ПОНЯТИЙ .........101

РЕКОМЕНДУЕМЫЙ БИБЛИОГРАФИЧЕСКИЙ  
СПИСОК .........................................................................................110

ПРЕДИСЛОВИЕ

Д

анное учебное пособие представляет собой вводный курс программирования 
компьютерной графики. Он включает описание 
основных понятий формирования трехмерных объектов и сцен. 
Изучается программный интерфейс, позволяющий осуществлять взаимодействие 
прикладной программе с оборудованием современного 
компьютера. Методические указания к лабораторному практикуму 
являются вспомогательным материалом для изучения технологии 
программирования трехмерной графики и содержат справочную информацию 
по графической библиотеке OpenGL и вспомогательным 
библиотекам.

Пособие состоит из трех разделов. В разделе А представлен мате-

матический аппарат, используемый при построении компьютерной 
графики. В первой главе вводятся основные математические понятия. 
Данный математический аппарат заимствован из векторного анализа 
и линейной алгебры. Однако в компьютерной графике его принято 
излагать иначе. Если в курсе математики студенты изучают сначала 
линейную алгебру, а затем знакомятся с векторными пространствами, 
то в математике для построения графики все наоборот. Сначала 
будет рассмотрено представление объектов в математических пространствах, 
которое приводит к использованию линейной алгебры. 
Использование подхода описания объектов, независящих от координат, 
вызвано желанием показать, что все базовые концепции геометрических 
объектов не зависят от способа преобразований. Такой 
подход используется в объектно ориентированном программировании, 
где работа осуществляется над объектами, а не над способами 
их представления.

ПредислОвие

Вторая глава посвящена проецированию и описанию стандартных 

проективных преобразований. В графических системах организация 
проективных преобразований отдается прикладной программе. Конеч-
но, современные графические API избавляют прикладного программи-
ста от забот, связанных с созданием собственных средств выполнения 
проективных преобразований. Однако знание основ этого процесса 
помогает понять, как в графической системе работает конвейер обра-
ботки данных, базирующийся на операциях с 4×4 матрицами.

В третьей главе пособия рассматривается физика взаимодействия 

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

В четвертой главе описывается вычисление векторов, необходи-

мых для формирования теней и реалистичного закрашивания объек-
тов сцены.

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

призванные закрепить теоретический материал.

Следующий раздел пособия (раздел Б) является практико-ориенти-

рованным, и он посвящен основам программирования графических 
приложений в графической стандарте OpenGL.

Материал, изложенный в пособии, позволяет приступить к самосто-

ятельной разработке несложных графических приложений. Для этого 
в пособии размещен лабораторный практикум.

Заключительная глава раздела Б содержит требования к оформле-

нию отчета о проделанной работе.

Завершает пособие словарь специальных терминов и понятий.
В результате выполнения цикла лабораторных работ сформируют-

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

ВВЕДЕНИЕ

С

тремительное развитие информационных и телекоммуникаци-
онных технологий не только изменило потребности человече-

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

Компьютерная графика, как наука, начала развиваться около 50–

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

введение

фические стандарты. Библиотека OpenGL (Open Graphic Library) ста-
ла стандартным интерфейсом для программистов как при написании 
прикладных программ, так и при разработке программных продуктов 
высокого класса — от интерактивных игр до систем визуализации ре-
зультатов научных исследований.

Математическая база компьютерного моделирования существен-

но отличается от математической теории, используемой в инженер-
ной графике. И на это есть свои причины.

Основное отличие связано с необходимостью различать математи-

ческое описание точки от вектора.

Из аналитической геометрии точка — абстрактный объект в про-

странстве, не имеющий никаких измеримых характеристик, кроме ко-
ординат. Вектор (от лат. vector «несущий») — математический объект, 
характеризующийся величиной и направлением. В математической те-
ории компьютерной графики понятие «вектор» трактуется как направ-
ленный отрезок прямой, представленный совокупностью n чисел. Все 
графические объекты компьютерной графики описываются множе-
ством вершин. Под вершиной (англ. vertex) понимается структура дан-
ных, которая описывает положение точки в 2D- или 3D-пространстве.

Чтобы понять, как в программе формируются графические объек-

ты, нужно знать методы представления в графической системе вер-
шин (точек в пространстве).

Математическое обеспечение систем компьютерной графики — это 

совокупность методов представления и манипулирования множеством 
геометрических элементов, главными из которых являются точки и от-
резки прямых [11]. Эти методы базируются на свойствах линейного 
(векторного), аффинного и евклидова пространства. Векторное про-
странство содержит объекты двух типов: скаляры и векторы. В аф-
финном пространстве к ним добавляется третий тип объектов — точ-
ка. В евклидовом пространстве вводится понятие расстояния.

Предполагаем, что читатели данного пособия имеют представление 

о скалярном поле и векторном пространстве. В векторном простран-
стве отсутствуют такие понятия, как положение и расстояние. Если 
в качестве пространства для решения геометрических задач компью-
терной графики использовать векторное пространство, то мы встре-
тимся со множеством проблем. Одна из них заключается в том, что 
векторы являются свободными, т. е. не имеют точки приложения. В ре-
зультате в векторном пространстве отсутствует возможность опреде-

Введение

лить особую точку, к которой должны быть привязаны базисные век-
торы. Эта проблема решается вводом в векторное пространство еще 
одного типа объектов — точки. Такое «дополнение» векторного про-
странства получило название аффинного. В аффинном пространстве 
возникает понятие фрейма как совокупности точки отчета и базис-
ных векторов. Отказ от знакомого со школьной скамьи понятия систе-
мы координат в пользу понятия фрейма позволяет избежать трудностей 
при работе с векторами. Более того, концепция фрейма позволяет ис-
пользовать единый математический аппарат матричной алгебры для 
манипуляции с точками и векторами, сохраняя при этом различие 
между двумя типами геометрических объектов. Хотя аффинное про-
странство и содержит все элементы, необходимые для построения ге-
ометрических моделей, в нем отсутствует понятие расстояния между 
двумя точками, а следовательно, и понятие длины вектора. Аффинное 
пространство, дополненное понятием расстояния, превращается 
в евклидово.

В евклидовом пространстве вводится новая операция — скалярное 

произведение, операндами которой являются векторы, а результатом — 
скаляр. Операция скалярного произведения дает нам меру угла 
между двумя векторами.

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

РАЗДЕЛ А. ОСНОВЫ ПОСТРОЕНИЯ 

КОМПЬЮТЕРНОЙ ГРАФИКИ

Глава 1. Математический аппарат

1.1. Фреймы

В трехмерном векторном пространстве любой вектор s можно однозначно 
представить в виде линейной комбинации трех линейно-независимых 
векторов v1, v2, v3:

 
s
v
v
v
=
+
+
a
a
a
1 1
2
2
3
3 .

Скаляры α1, α2, α3 — это координаты вектора s в базисе в v1, v2, v3. 

Можно записать представление вектора в матричной форме 

 
s
v
v
v

T
=
й

л

к
к
к

щ

ы

ъ
ъ
ъ
a

1

2

3

 a =
й

л

к
к
к

щ

ы

ъ
ъ
ъ

a
a
a

1

2

3

.

При этом базис определяет конкретную систему координат. Мы 

привыкли рисовать систему координат на бумаге в виде трех векторов, 
которые исходят из одной точки (рис. 1.1, а). Однако векторы, как геометрические 
объекты, не имеют точки приложения, а характеризуются 
только направлением и модулем. Следовательно, с точки зрения 
математики векторы на рис. 1.1, б эквивалентны векторам рис. 1.1, а.

Глава 1. Математический аппарат

а
б

Рис. 1.1. Базисные векторы:

а — векторы, исходящие из одной точки; б — свободные векторы 

Аффинное пространство включает понятие точки, следовательно, 

можно зафиксировать определенную точку отсчета — начало координат. 
Из этой точки можно изображать оси системы координат, что 
является общепринятым. Таким образом, мы переходим к понятию 
фрейма. Фреймом называется совокупность точки отсчета С0 и базисных 
векторов, исходящих из этой точки.

В конкретном фрейме точно так же, как и в векторном пространстве, 
любой вектор можно однозначно записать в виде 

 
s
v
v
v
=
+
+
a
a
a
1 1
2
2
3
3 .

Любую точку можно представить в виде 

 
B
С
v
v
v
=
+
+
+
0
1 1
2
2
3
3
b
b
b
.

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

1.2. Однородная система координат

Представим точку В с координатами (x, y, z) с помощью трехмер-

ного фрейма с началом в точке С0 и базисом {v1, v2, v3} 

 
В
x
y
z
=
й

л

к
к
к

щ

ы

ъ
ъ
ъ
,

где (x, y, z) — компоненты базисных векторов в этой точке.

раздел а. ОснОвы ПОстрОения кОмПьютернОй графики

Однако в этом случае точка будет представлена так же, как вектор, что 

для компьютерной графики неприемлемо. В математической литературе 
очень часто точка ассоциируется с вектором, проведенным в эту точку 
из начала координа В компьютерной графике такая ситуация может быть 
причиной различных недоразумений. Например, вектор из точки (0, 0, 0) 
в точку (2, 4, 6) равен вектору, проведенному из точки (2, 2, 2) в точку (4, 
6, 8), поскольку оба вектора имеют одинаковый модуль и направление. 
Но второй вектор нельзя ассоциировать с точкой (2, 4, 6), пока его точка 
приложения не будет совмещена с началом координат — точкой (0, 0, 0).

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

Чтобы отличить точку от вектора, воспользуемся так называемыми 

однородными координатами1. В системе однородных координат для 
представления точек и векторов трехмерного пространства используются 
четырехмерные матрицы столбцы.

Пусть на множестве точек операция умножения на скаляры 

0 и 1 определяется следующим образом:

 
0
0
1
Ч
=
Ч
=

С
С
С.

,  

Тогда точка В запишется в матричной форме с помощью перемножения 
матриц:

 
B
v
v
v
C

=[
]

й

л

к
к
к
к

щ

ы

ъ
ъ
ъ
ъ

b
b
b
1
2
3

1

2

3

0

1
. 

Матрица-строка в правой части уравнения является представлением 
точки B в однородных координатах во фрейме c параметрами (v1, 
v2, v3, С0). Точку B можно представить матрицей-столбцом 

 
В =
й

л

к
к
к
к

щ

ы

ъ
ъ
ъ
ъ

b
b
b

1

2

3
1

. 

1 
Однородные координаты были придуманы геометрами, и только значительно 
позже они стали применяться специалистами компьютерной графики.

Доступ онлайн
350 ₽
В корзину