Компьютерная графика.-7
.pdfМинистерство образования и науки Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Т. О. Перемитина
КОМПЬЮТЕРНАЯ ГРАФИКА
Учебное пособие
Томск «Эль Контент»
2012
УДК 004.92(075.8)
ББК 32.973.26-018.2я73 П 270
Рецензенты:
Тарасенко В. Ф., докт. тexн. наук, профессор кафедры теоретической кибернетики факультета прикладной математики и кибернетики Томского государственного университета;
Сенченко П. В., канд. техн. наук, декан факультета систем управления, доцент кафедры автоматизации обработки информации ТУСУР.
Перемитина Т. О.
П 270 Компьютерная графика : учебное пособие / Т. О. Перемитина. — Томск : Эль Контент, 2012. — 144 с.
ISBN 978-5-4332-0077-7
В учебном пособии рассматриваются методы и алгоритмы современной компьютерной графики, излагаются основы прикладной компьютерной графики, приводятся наиболее важные термины и определения в области компьютерной графики. Технические вопросы снабжены комментариями и иллюстрациями. Пособие предназначено для самостоятельной работы студентов при изучении дисциплины «Компьютерная графика».
УДК 004.92(075.8)
ББК 32.973.26-018.2я73
ISBN 978-5-4332-0077-7 © Перемитина Т. О., 2012 © Оформление.
ООО «Эль Контент», 2012
ОГЛАВЛЕНИЕ
Введение |
6 |
1 Основные понятия компьютерной графики |
9 |
1.1Определение и задачи компьютерной графики . . . . . . . . . . . . . . 9
1.2История развития и области применения компьютерной графики . . 11
1.3Графическая система . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1Ядро графической системы . . . . . . . . . . . . . . . . . . . . . 15
1.3.2Пользователи графических систем . . . . . . . . . . . . . . . . . 16
1.4Методы представления графической информации . . . . . . . . . . . . 17
1.4.1Растровая графика . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.2Векторная графика . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.3Фрактальная графика . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.5Форматы файлов графики . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.6Цветовые модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.6.1Цветовая модель RGB . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.6.2Цветовая модель CMYK . . . . . . . . . . . . . . . . . . . . . . . 25
1.6.3Цветовая модель HSB . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Математические основы компьютерной графики |
27 |
2.1Геометрическое моделирование . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.1Геометрическое определение базовых типов . . . . . . . . . . . 28
2.1.2Математическое определение базовых типов . . . . . . . . . . 29
2.2Координатный метод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.1Системы координат . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.2Преобразования координат . . . . . . . . . . . . . . . . . . . . . . 33
2.3Аффинные преобразования . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.1Двумерные аффинные преобразования . . . . . . . . . . . . . . 36
2.3.2 Аффинные преобразования в пространстве . . . . . . . . . . . |
42 |
3 Базовые вычислительные и растровые алгоритмы |
47 |
3.1Область визуализации и функция кадрирования . . . . . . . . . . . . . 47
3.2 Отсечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.1Двумерный алгоритм Коэна—Сазерленда . . . . . . . . . . . . . 49
3.2.2Алгоритм Лианга—Барского . . . . . . . . . . . . . . . . . . . . . 51
3.3Операции с изображением на уровне растра . . . . . . . . . . . . . . . 53
3.3.1Алгоритм вывода прямой линии . . . . . . . . . . . . . . . . . . 55
3.3.2Прямое вычисление координат . . . . . . . . . . . . . . . . . . . 55
3.4Инкрементные алгоритмы . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4 |
Оглавление |
3.5Алгоритмы вывода фигур . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6Заполнение сплошных областей . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.1Тест принадлежности точки многоугольнику . . . . . . . . . . 58
3.6.2Заполнение многоугольников . . . . . . . . . . . . . . . . . . . . 59
3.6.3 Стиль заполнения. Кисть. Текстура . . . . . . . . . . . . . . . . 60
3.7Методы улучшения растровых изображений . . . . . . . . . . . . . . . 62
3.7.1Устранение ступенчатого эффекта . . . . . . . . . . . . . . . . . 62
3.7.2Дизеринг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4 Методы и алгоритмы трехмерной графики |
71 |
4.1Визуализация трехмерных изображений . . . . . . . . . . . . . . . . . . 71
4.2Виды проектирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2.1Параллельное проектирование . . . . . . . . . . . . . . . . . . . 73
4.2.2Перспективное проектирование . . . . . . . . . . . . . . . . . . . 77
4.3Удаление невидимых линий и поверхностей . . . . . . . . . . . . . . . 79
4.3.1Удаление нелицевых граней . . . . . . . . . . . . . . . . . . . . . 80
4.3.2Алгоритм Z-буфера . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.3.3 Алгоритм Робертса . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.3.4Алгоритм построчного сканирования . . . . . . . . . . . . . . . 84
4.4Закрашивание поверхностей . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.4.1Модели отражения света . . . . . . . . . . . . . . . . . . . . . . . 85
4.4.2 Вычисление нормалей . . . . . . . . . . . . . . . . . . . . . . . . 87
4.4.3Метод Гуро . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.4.4Метод Фонга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.4.5 Преломление света . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.4.6Вычисление вектора преломленного луча . . . . . . . . . . . . 91
4.4.7Трассировка лучей . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.5Примеры изображения трехмерных объектов . . . . . . . . . . . . . . . 96
5 Кривые и криволинейные поверхности |
99 |
5.1Представление кривых линий и поверхностей . . . . . . . . . . . . . . 99 5.1.1 Представление в явной форме . . . . . . . . . . . . . . . . . . . . 99
5.1.2 Неявная форма представления . . . . . . . . . . . . . . . . . . . 100
5.1.3Параметрическая форма представления . . . . . . . . . . . . . . 101
5.2Общая характеристика полиномиальной параметрической формы представления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.3Параметрически заданные кубические сплайны . . . . . . . . . . . . . 103
5.3.1Интерполяция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.3.2Кривые Эрмита . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.3.3Кривые и порции поверхности в форме Безье . . . . . . . . . . 107
5.4Кубические В-сплайны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.4.1Обобщенные В-сплайны . . . . . . . . . . . . . . . . . . . . . . . 109
5.5 Построение кривых и поверхностей |
. . . . . . . . . . . . . . . . . . . . 110 |
6 Графическое программирование |
112 |
6.1OpenGl. Архитектура и особенности синтаксиса . . . . . . . . . . . . . 112 6.1.1 Интерфейс OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Оглавление |
5 |
6.1.2 Архитектура OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.2Синтаксис команд OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.3 Отрисовка примитивов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.4Матрицы преобразований в OpenGL . . . . . . . . . . . . . . . . . . . . 121
6.4.1 Текущая матрица преобразования . . . . . . . . . . . . . . . . . 121
6.4.2Преобразования координат и проекции . . . . . . . . . . . . . . 122
6.4.3Проекции в OpenGl . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.4.4Область вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.5Визуальные эффекты в OpenGl . . . . . . . . . . . . . . . . . . . . . . . . 125
6.5.1Материалы и освещение . . . . . . . . . . . . . . . . . . . . . . . 125
6.5.2 |
Наложение текстуры . . . . . . . . . . . . . . . . . . . . . . . . . |
127 |
6.5.3 |
Создание эффекта тумана . . . . . . . . . . . . . . . . . . . . . . |
130 |
6.5.4Использование буфера трафарета . . . . . . . . . . . . . . . . . . 131
6.5.5Эффект прозрачности в OpenGl . . . . . . . . . . . . . . . . . . . 133
Заключение |
136 |
Литература |
137 |
Глоссарий |
139 |
ВВЕДЕНИЕ
Восновании бесконечно развивающегося здания компьютерной графики краеугольными камнями лежат фундаментальные дисциплины — аналитическая геометрия и физика, подкрепленные искусством программирования. Возникнув из потребностей рынка, развития информатики и вычислительной техники, компьютерная графика изучает методы построения изображений различных геометрических объектов и сцен.
Главными этапами построения изображения являются:
•Моделирование как искусство применения методов математического описания объектов и сцен, природа которых может быть самой различной: обычные геометрические фигуры и тела в двух- и трехмерном пространстве; естественные явления природы — горы, деревья, облака и другие объекты; огромные массивы чисел, полученных в различных экспериментах, и многое другое.
•Визуализация (отображение) как искусство построения реалистичных изображений объемного мира на плоском экране дисплея ЭВМ заключается в преобразовании моделей объектов и сцен в статическое изображение или фильм — последовательность статических кадров.
Вотличие от плоских изображений реальных трехмерных объектов, которые на фотографиях автоматически выглядят натурально благодаря действию в природе оптических законов, синтезированное компьютерное изображение будет похоже на реальное лишь при мастерском владении как методами моделирования геометрических форм, так и средствами их достоверной визуализации. Таким образом, компьютерную графику можно рассматривать как искусство создания реалистичной иллюзии действительного мира. Эта сторона ее применения нашла наиболее
яркое воплощение в системах виртуальной реальности — комплексах аппаратных и программных средств имитации окружающей среды с помощью визуальных, акустических, тактильных и других эффектов.
Целью изучения курса «Компьютерная графика» является изучение математических и алгоритмических основ компьютерной графики, а также освоение средств разработки программного обеспечения для визуализации реалистичных изображений сложных трехмерных сцен.
Соглашения, принятые в книге |
7 |
Задачи дисциплины:
•формирование взглядов на компьютерную графику как на систематическую научно-практическую деятельность, носящую как теоретический, так и прикладной характер;
•ознакомление с базовыми теоретическими понятиями, лежащими в основе компьютерной графики, изучение особенностей растровых и векторных изображений;
•получение представления о методах геометрического моделирования;
•практическое использование алгоритмов и методов компьютерной графики при проектировании пользовательских интерфейсов программных систем;
•создание программ для работы с графикой, обеспечивающих пользователей широким арсеналом инструментов — от простейших графических редакторов до сложных систем трехмерного моделирования.
Соглашения, принятые в книге
Для улучшения восприятия материала в данной книге используются пиктограммы и специальное выделение важной информации.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Эта пиктограмма означает определение или новое понятие.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Эта пиктограмма означает внимание. Здесь выделена важная информация, требующая акцента на ней. Автор здесь может поделиться с читателем опытом, чтобы помочь избежать некоторых ошибок.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
В блоке «На заметку» автор может указать дополнительные сведения или другой взгляд на изучаемый предмет, чтобы помочь читателю лучше понять основные идеи.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Эта пиктограмма означает цитату.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 |
Введение |
. . . . . . . . . . . . . . . . . . . . . . . . . Выводы . . . . . . . . . . . . . . . . . . . . . . . . .
Эта пиктограмма означает выводы. Здесь автор подводит итоги, обобщает изложенный материал или проводит анализ.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Контрольные вопросы по главе
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Глава 1
ОСНОВНЫЕ ПОНЯТИЯ КОМПЬЮТЕРНОЙ ГРАФИКИ
1.1 Определение и задачи компьютерной графики
За последние несколько десятилетий компьютерная графика прошла путь от вычерчивания простых линий и отрезков до построения виртуальной реальности и создания полнометражных кинофильмов. Само слово «графика» в его привычном понимании уже не соответствует той области интересов, которую охватывает компьютерная графика [9]. На сегодняшний день компьютерная графика — это область информатики, в сферу интересов которой входят все аспекты формирования изображений с помощью компьютеров. Уточняя, можно сказать, что предметом ее изучения является создание, хранение и обработка моделей и их изображений с помощью ЭВМ.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Специальную область информатики, занимающуюся методами и средствами создания изображений с помощью программноаппаратных вычислительных комплексов, называют компьютерной (машинной) графикой.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Интерактивная компьютерная (машинная) графика — понятие, которое используется для того, чтобы подчеркнуть наличие аппаратных и программных способов диалога с человеком в графической компьютерной системе [13].
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 |
Глава 1. Основные понятия компьютерной графики |
Существует более строгое определение понятия «машинная графика», даваемое Международной организацией по стандартизации ISO (International Standard Organization): Машинная графика — это совокупность методов и средств для преобразования данных в графическую форму представления и из графической формы представления с помощью электронно-вычислительной машины [8].
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Задачи КГ — воспроизведение (синтез) изображений в тех случаях, когда исходная информация имеет неизобразительную природу.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Рис. 1.1 – Основные направления работы с изображением
При обработке информации, связанной с изображением на мониторе, принято выделять три основных направления (рис. 1.1):
•распознавание образов;
•обработку изображений;
•компьютерную графику.
Основная задача распознавания образов состоит в преобразовании уже имеющегося изображения на формально понятный язык символов.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Распознавание образов, или система технического зрения, (computer vision) — совокупность методов, позволяющих получить описание изображения, поданного на вход, либо отнести заданное изображение к некоторому классу (так поступают, например, при сортировке почты).
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Обработка изображений (image processing) рассматривает задачи, в которых и входные, и выходные данные являются изображениями.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Например, передача изображения с устранением шумов и сжатием данных, переход от одного вида изображения к другому (от цветного к черно-белому) и т. д.