Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерная графика.-7

.pdf
Скачиваний:
33
Добавлен:
05.02.2023
Размер:
5.39 Mб
Скачать

Министерство образования и науки Российской Федерации

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Т. О. Перемитина

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

Учебное пособие

Томск «Эль Контент»

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) рассматривает задачи, в которых и входные, и выходные данные являются изображениями.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Например, передача изображения с устранением шумов и сжатием данных, переход от одного вида изображения к другому (от цветного к черно-белому) и т. д.