
- •Часть II. Основы программирования
- •Введение
- •Лекция 1. Библиотека OpenGl
- •1. Назначение библиотеки OpenGl
- •2. Основные возможности OpenGl
- •3. Макет консольного приложения, использующего библиотеку glaux
- •Программа 1.1
- •4. Имена функций OpenGl
- •5. Системы координат
- •5.1 Матрицы преобразований
- •5.2 Видовые и модельные преобразования
- •5.3 Проекционное преобразование
- •5.4 Оконное преобразование
- •6. Пример выполнения модельных преобразований
- •6.1 Параллельный перенос
- •Фрагмент программы 1.2
- •6.2 Поворот
- •Фрагмент программы 1.3
- •7. Сводка результатов
- •8. Упражнения Упражнение 1
- •Упражнение 2
- •Упражнение 3
- •Упражнение 4
- •Упражнение 5
- •Упражнение 6
- •Лекция 2. Генерация движущихся изображений
- •1. Анимация с двойной буферизацией
- •2. Обработка событий клавиатуры и мыши
- •2.1 Пример обработки события от мыши: изменение цвета вращающегося объекта по нажатию левой кнопки мыши
- •3. Композиция нескольких преобразований
- •3.1 Модель солнечной системы
- •3.2 Модель манипулятора робота
- •4. Сводка результатов
- •5. Упражнения Упражнение 1
- •Упражнение 2
- •Упражнение 3
- •Упражнение 4
- •Упражнение 5
- •Лекция 3. Геометрические примитивы
- •1. Служебные графические операции
- •1.1 Очистка окна
- •1.2 Задание цвета
- •1.3 Удаление невидимых поверхностей
- •2. Описание точек, отрезков и многоугольников
- •2.1 Точки
- •2.2 Отрезки
- •2.3 Многоугольники
- •2.4 Прямоугольники
- •2.5 Кривые
- •2.6 Задание вершин
- •2.7 Геометрические примитивы OpenGl
- •3. Свойства точек, отрезков и многоугольников
- •3.1 Точки
- •3.2 Отрезки
- •3.3 Многоугольники
- •4. Сводка результатов
- •Лекция 4. Полигональная аппроксимация поверхностей
- •1. Векторы нормали
- •2. Некоторые рекомендации по построению полигональных аппроксимаций поверхностей
- •3. Пример: построение икосаэдра
- •3.1 Вычисление нормалей к граням икосаэдра
- •3.2 Повышение точности аппроксимации сферической поверхности
- •3.3 Алгоритм разбиения треугольной грани произвольной поверхности
- •4. Плоскости отсечения
- •6. Сводка результатов
- •7. Упражнения Упражнение 1
- •Упражнение 2
- •Упражнение 3
- •Упражнение 4
- •Лекция 5. Цвет и освещение
- •1. Цветовая модель rgb
- •2. Задание способа закраски
- •3. Освещение
- •4. Освещение в реальном мире и в OpenGl
- •4.1 Излучаемый, рассеянный, диффузно отраженный и зеркально отраженный свет
- •4.2 Цвет материала
- •4.3 Значения rgb для источников света и материалов
- •5. Пример: рисование освещенной сферы
- •5.1 Вектора нормали в вершинах объектов
- •5.2 Создание, расположение и включение источников света
- •5.3 Выбор модели освещения
- •5.4 Задание свойств материалов для объектов сцены
- •6. Создание источников света
- •6.1 Цвет
- •6.2 Местоположение и затухание
- •6.3 Прожекторы
- •6.4 Использование нескольких источников света
- •6.5 Изменение местоположения источников света
- •4. Сводка результатов
- •Лекция 6. Свойства материала и спецэффекты освещения
- •1. Задание свойств материала
- •1.1 Диффузное и рассеянное отражение
- •1.2 Зеркальное отражение
- •1.3 Излучаемый свет
- •1.4 Изменение свойств материала
- •1.5 Имитация реальных материалов
- •2. Смешение цветов и прозрачность
- •2.1 Множители source (исходный пиксел) и destination (результирующего пиксела)
- •2.2 Области применения смешения цветов
- •2.3 Пример использования смешения цветов
- •3. Туман
- •3.1 Использование тумана
- •4. Сводка результатов
- •5. Упражнения Упражнение 1
- •2. Назначение текстур
- •3. Создание текстуры в оперативной памяти
- •4. Автоматическое повторение текстуры на плоском многоугольнике
- •5. Наложение текстуры на произвольную поверхность
- •6. Сводка результатов
- •7. Упражнения Упражнение 1
- •Упражнение 2
- •Задание 1.1
- •2. Объемный "тетрис"
- •Задание 2.1
А.А. Богуславский, С.М. Соколов
Основы программирования
на языке Си++
Часть II. Основы программирования
трехмерной графики
(для студентов физико-математических факультетов
педагогических институтов)
Коломна, 2002
ББК 32.97я73 Рекомендовано к изданию
УДК 681.142.2(075.8) редакционно-издательским советом
Б 73 Коломенского государственного
педагогического института
Богуславский А.А., Соколов С.М.
Б73 Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. – Коломна: КГПИ, 2002. – 490 с.
Пособие предназначено для обучения студентов, обладающих навыками пользовательской работы на персональном компьютере, основным понятиям и методам современного практического программирования. Предметом изучения курса является объектно-ориентированное программирование на языке Си++ в среде современных 32-х разрядных операционных систем семейства Windows. Программа курса разбита на 4 части: (1) Введение в программирование на языке Си++; (2) Основы программирования трехмерной графики; (3) Объектно-ориентированное программирование на языке Си++ и (4) Программирование для Microsoft Windows с использованием Visual C++ и библиотеки классов MFC.
После изучения курса студент получает достаточно полное представление о содержании современного объектно-ориентированного программирования, об устройстве современных операционных систем Win32 и о событийно-управляемом программировании. На практических занятиях вырабатываются навыки программирования на Си++ в интегрированной среде разработки Microsoft Visual C++ 5.0.
Рецензенты:
И.П. Гиривенко – к.т.н., доцент, зав. кафедрой информатики и вычислительной техники Рязанского государственного педагогического университета им. С.А. Есенина.
А.А. Шамов – к.х.н., доцент кафедры теоретической физики Коломенского государственного педагогического института.
СОДЕРЖАНИЕ
Введение 5
ЛЕКЦИЯ 1. Библиотека OpenGL 6
1. Назначение библиотеки OpenGL 6
2. Основные возможности OpenGL 7
3. Макет консольного приложения, использующего библиотеку GLAUX 8
4. Имена функций OpenGL 9
5. Системы координат 10
6. Пример выполнения модельных преобразований 15
7. Сводка результатов 17
8. Упражнения 17
ЛЕКЦИЯ 2. Генерация движущихся изображений 20
1. Анимация с двойной буферизацией 20
2. Обработка событий клавиатуры и мыши 23
3. Композиция нескольких преобразований 25
4. Сводка результатов 31
5. Упражнения 31
ЛЕКЦИЯ 3. Геометрические примитивы 33
1. Служебные графические операции 33
2. Описание точек, отрезков и многоугольников 35
3. Свойства точек, отрезков и многоугольников 39
4. Сводка результатов 46
5. Упражнения 46
ЛЕКЦИЯ 4. Полигональная аппроксимация поверхностей 48
1. Векторы нормали 48
2. Некоторые рекомендации по построению полигональных аппроксимаций поверхностей 48
3. Пример: построение икосаэдра 50
4. Плоскости отсечения 55
6. Сводка результатов 57
7. Упражнения 57
ЛЕКЦИЯ 5. Цвет и освещение 59
1. Цветовая модель RGB 59
2. Задание способа закраски 59
3. Освещение 61
4. Освещение в реальном мире и в OpenGL 61
5. Пример: рисование освещенной сферы 63
6. Создание источников света 66
4. Сводка результатов 70
5. Упражнения 72
ЛЕКЦИЯ 6. Свойства материала и спецэффекты освещения 73
1. Задание свойств материала 73
2. Смешение цветов и прозрачность 78
3. Туман 82
4. Сводка результатов 84
5. Упражнения 86
ЛЕКЦИЯ 7. Растровые объекты: изображения и текстуры 87
1. Вывод изображений в буфер OpenGL 87
2. Назначение текстур 88
3. Создание текстуры в оперативной памяти 89
4. Автоматическое повторение текстуры на плоском многоугольнике 94
5. Наложение текстуры на произвольную поверхность 95
6. Сводка результатов 97
7. Упражнения 98
ЛЕКЦИЯ 8. Примеры программ с использованием OpenGL 100
1. Имитация трехмерного ландшафта 100
2. Объемный "тетрис" 101
Литература 106