OpenGL программирование компьютерной графики

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Эта книга - введение в мир программирования компьютерной графики. Графические системы становятся лучше, быстрее и дешевле. Каждый год изобретается множество новых технических приемов, однако основные принципы и подходы к программированию по-прежнему остаются неизменными. Автор написал в высшей степени практичный и доступный для восприятия текст, отличающийся основательным и интегрированным подходом. Понятия тщательно определены; их математические основы разъяснены, доказана важность каждого рассмотренного понятия. Книга показывает читателю, как переводить математические представления в программный код, и демонстрирует результат. Предлагаемое новое издание предоставляет самую современную информацию в области компьютерной графики.

Author(s): Хилл Ф.
Edition: Второе издание
Year: 2002

Language: Russian
Commentary: +OCR
Pages: 1081

Обложка ......Page 1
Необходимая математическая подготовка ......Page 18
Упражнения и задачи ......Page 19
Использование C++ в качестве языка программирования ......Page 20
Структура книги и планы курса ......Page 21
Краткий обзор глав ......Page 22
Благодарности ......Page 25
От издательства ......Page 27
1.1. Что такое компьютерная графика? ......Page 28
1.2.1. Искусство, развлечения и издательское дело ......Page 30
1.2.2. Компьютерная графика и обработка изображений ......Page 31
1.2.3. Управление процессом ......Page 32
1.2.4. Отображение имитаций ......Page 33
1.2.5. Автоматизированное проектирование ......Page 34
1.2.6. Научный анализ и наглядность ......Page 36
1.3. Элементы изображений, создаваемых в компьютерной графике ......Page 37
1.3.1. Ломаные линии ......Page 38
1.3.2. Текст ......Page 40
1.3.3. Закрашенные области ......Page 42
1.3.4. Растровое изображение ......Page 43
1.3.5. Представление оттенков серого и других цветов в растровых \r\n\t\t\t\t\t\t\t\t\tизображениях ......Page 47
1.4. Графические устройства отображения ......Page 50
1.4.1. Графические дисплеи ......Page 51
1.4.2. Растровые отображающие устройства ......Page 52
1.4.3. Индексированный цвет и кодовая таблица ......Page 56
1.4.4. Другие устройства растрового отображения ......Page 58
1.4.5. Растровые устройства для изготовления твердых копий ......Page 59
1.5.1. Типы входных графических примитивов ......Page 61
1.5.2. Типы физических входных устройств ......Page 62
1.6. Заключение ......Page 65
1.7. Дополнительная литература ......Page 66
Глава 2. Начальная стадия: рисование фигур ......Page 67
2.1. Начальная стадия создания изображения ......Page 68
2.1.1. Аппаратно-независимое программирование и OpenGL ......Page 69
2.1.2. Оконное программирование ......Page 70
2.1.3. Открытие окна для рисования ......Page 72
2.2. Рисование основных графических примитивов ......Page 73
2.2.1. Рисование созвездия точек ......Page 78
2.3. Создание рисунков из линий ......Page 83
2.3.1. Рисование ломаных линий и полигонов ......Page 86
2.3.2. Рисование линий с использованием moveto() и lineto() ......Page 91
2.3.3. Рисование выровненных прямоугольников ......Page 92
2.3.4. Форматное соотношение выровненного прямоугольника ......Page 94
2.3.5. Закрашивание полигонов ......Page 96
2.3.6. Другие графические примитивы в OpenGL ......Page 97
2.4.1. Взаимодействие с помощью мыши ......Page 98
2.4.2. Взаимодействие с помощью клавиатуры ......Page 102
2.6. Тематические задания ......Page 103
Тематическое задание 2.1. Псевдослучайные облака из точек ......Page 104
Тематическое задание 2.2. Введение в систему итерируемых функций ......Page 106
Тематическое задание 2.3. Золотое отношение и другие жемчужины ......Page 109
Тематическое задание 2.4. Создание и применение файлов для ломаных \r\n\t\t\t\t\t\t\t\t\tлиний ......Page 112
Тематическое задание 2.5. Рисование линий и многоугольников \r\n\t\t\t\t\t\t\t\t\tпунктиром ......Page 113
Тематическое задание 2.6. Редактор ломаных линий ......Page 114
Тематическое задание 2.7. Построение и запуск лабиринтов ......Page 115
2.7. Дополнительная литература ......Page 117
Глава 3. Дополнительные инструменты для рисования ......Page 118
3.1. Введение ......Page 119
3.2. Мировые окна и порты просмотра ......Page 120
3.2.1. Преобразование из мирового окна в порт просмотра ......Page 121
3.2.2. Автоматическая установка окна и порта просмотра ......Page 132
3.3.1. Отсечение прямой ......Page 135
3.3.2. Алгоритм отсечения Кохена-Сазерленда ......Page 136
3.4. Разработка класса Canvas ......Page 140
3.4.1. Несколько полезных вспомогательных классов ......Page 141
3.4.2. Реализация класса Canvas ......Page 144
3.5.1. Разработка moveRel() и lineRel() ......Page 146
3.5.2. Черепашья графика ......Page 148
3.6.1. Правильные многоугольники ......Page 153
3.6.2. Вариации п-угольников ......Page 155
3.7.1. Рисование дуг ......Page 159
3.8. Применение параметрического задания кривой ......Page 164
3.8.1. Параметрические формы для кривых ......Page 165
3.8.2. Вычерчивание кривых, заданных параметрически ......Page 167
3.8.3. Суперэллипсы ......Page 169
3.8.4. Формы в полярных координатах ......Page 170
3.8.5. Трехмерные кривые ......Page 172
3.9. Резюме ......Page 174
Тематическое задание 3.1. Изучение логистического преобразования и \r\n\t\t\t\t\t\t\t\t\tимитация хаоса ......Page 175
Тематическое задание 3.2. Реализация отсекателя Кохена-Сазерленда на \r\n\t\t\t\t\t\t\t\t\tС или C++ ......Page 177
Тематическое задание 3.3. Реализация Canvas на Turbo C++ ......Page 179
Тематическое задание 3.4. Рисование арок ......Page 182
Тематическое задание 3.5. Некоторые рисунки, используемые в физике и \r\n\t\t\t\t\t\t\t\t\tтехнике ......Page 183
Тематическое задание 3.6. Мозаики ......Page 186
Тематическое задание 3.7. Веселые вариации на тему ......Page 187
Тематическое задание 3.8. Окружности, вращающиеся вокруг окружностей ......Page 189
Тематическое задание 3.9. Суперэллипсы ......Page 190
3.11. Дополнительная литература ......Page 191
Глава 4. Векторные инструменты для графики ......Page 192
4.1. Введение ......Page 193
4.2. Обзор векторов ......Page 195
4.2.1. Операции с векторами ......Page 197
4.2.2. Линейные комбинации векторов ......Page 198
4.2.3. Модуль вектора; единичные векторы ......Page 200
4.3.1. Свойства скалярного произведения ......Page 201
4.3.2. Угол между двумя векторами ......Page 202
4.3.3. Знак b•с и перпендикулярность ......Page 203
4.3.4. Двумерный «перп» вектор ......Page 204
4.3.5. Ортогональные проекции и расстояние от точки до прямой ......Page 206
4.3.6. Приложения проекции: отражения ......Page 208
4.4. Векторное произведение двух векторов ......Page 209
4.4.1. Геометрическая интерпретация векторного произведения ......Page 210
4.4.2. Нахождение нормали к плоскости ......Page 211
4.5. Отображение ключевых геометрических объектов ......Page 212
4.5.1. Системы координат и координатные фреймы ......Page 213
4.5.2. Аффинные комбинации точек ......Page 216
4.5.4. Твининг в искусстве и анимации ......Page 219
4.5.6. Представление прямых и плоскостей ......Page 222
4.6. Определение точки пересечения двух отрезков прямой ......Page 231
4.6.1. Приложение пересечения прямых: окружность, проходящая через \r\n\t\t\t\t\t\t\t\t\tтри заданные точки ......Page 234
4.7. Пересечения прямых с плоскостями; отсечение ......Page 236
4.8. Задачи о пересечениях многоугольников ......Page 238
4.8.1. Работа с выпуклыми полигонами и полиэдрами ......Page 239
4.8.2. Пересечение с лучами и отсечение для выпуклых полигонов ......Page 240
4.8.3. Алгоритм Сайруса-Бека ......Page 243
4.8.4. Отсечение границами произвольных полигонов ......Page 246
4.8.5. Более сложное отсечение ......Page 248
4.9. Резюме ......Page 249
Тематическое задание 4.2. Разные окружности ......Page 250
Тематическое задание 4.3. Находится ли точка Q внутри выпуклого \r\n\t\t\t\t\t\t\t\t\tполигона Р? ......Page 252
Тематическое задание 4.4. Отражения в комнате (двумерная трассировка \r\n\t\t\t\t\t\t\t\t\tлуча) ......Page 253
Тематическое задание 4.6. Отсечение полигона границами выпуклого \r\n\t\t\t\t\t\t\t\t\tполигона: отсечение Сазерленда-Ходгмана ......Page 254
Тематическое задание 4.7. Отсечение одного полигона границами \r\n\t\t\t\t\t\t\t\t\tдругого: отсечение Вейлера-Азертона ......Page 257
Тематическое задание 4.8. Булевы операции с полигонами ......Page 260
4.11. Дополнительная литература ......Page 262
Глава 5. Преобразования объектов ......Page 263
5.1. Введение ......Page 264
5.2. Введение в преобразования ......Page 265
5.2.1. Преобразование точек и объектов ......Page 268
5.2.2. Аффинные преобразования ......Page 270
5.2.3. Геометрические эффекты элементарных двумерных аффинных \r\n\t\t\t\t\t\t\t\t\tпреобразований ......Page 271
5.2.4. Инвертирование аффинного преобразования ......Page 276
5.2.5. Композиция аффинных преобразований ......Page 278
5.2.6. Примеры композиции двумерных преобразований ......Page 279
5.2.7. Некоторые полезные свойства аффинных преобразований ......Page 284
5.3.1. Элементарные трехмерные преобразования ......Page 289
5.3.2. Компонование трехмерных аффинных преобразований ......Page 293
5.3.3. Комбинирование поворотов ......Page 294
5.3.4. Краткое изложение свойств трехмерных аффинных преобразований ......Page 299
5.4. Изменения систем координат ......Page 300
5.5. Использование аффинных преобразований в программах ......Page 303
5.5.1. Сохранение СТ для дальнейшего использования ......Page 311
5.6.1. Знакомство с процессом визуального отображения и графическим \r\n\t\t\t\t\t\t\t\t\tконвейером ......Page 316
5.6.2. Некоторые инструменты OpenGL для моделирования и вида ......Page 320
5.6.3. Рисование элементарных форм, поддерживаемых OpenGL ......Page 323
5.7. Резюме ......Page 338
Тематическое задание 5.1. Выполнение вашего собственного \r\n\t\t\t\t\t\t\t\t\tпреобразования с помощью СТ в классе Canvas ......Page 339
Тематическое задание 5.3. Разложение двумерного аффинного \r\n\t\t\t\t\t\t\t\t\tпреобразования ......Page 340
Тематическое задание 5.4. Обобщенные трехмерные сдвиги ......Page 344
Тематическое задание 5.5. Вращение вокруг оси: конструктивный подход ......Page 346
Тематическое задание 5.6. Разложение трехмерных аффинных \r\n\t\t\t\t\t\t\t\t\tпреобразований ......Page 347
5.9. Дополнительная литература ......Page 349
Глава 6. Моделирование поверхностей полигональными сетками ......Page 350
6.2. Введение в трехмерное моделирование полигональными сетками ......Page 351
6.2.1. Определение полигональной сетки ......Page 353
6.2.2. Нахождение нормальных векторов ......Page 355
6.2.3. Свойства сеток ......Page 357
6.2.4. Каркасные модели для немонолитных объектов ......Page 358
6.2.5. Работа с сетками в программе ......Page 359
6.3. Многогранники ......Page 363
6.3.1. Призмы и антипризмы ......Page 365
6.3.2. Платоновы тела ......Page 366
6.3.3. Другие любопытные многогранники ......Page 371
6.4.1. Создание призм ......Page 375
6.4.2. Совокупности экструзивных призм: «кирпичная кладка» ......Page 376
6.4.3. Экструзии с «поворотом» ......Page 378
6.4.4. Создание сегментированных экструзий: трубки и змейки ......Page 379
6.4.5. «Дискретно» заметаемые поверхности вращения ......Page 385
6.5.1. Представления поверхностей ......Page 386
6.5.2. Нормальный вектор к поверхности ......Page 388
6.5.3. Влияние аффинного преобразования ......Page 389
6.5.4. Три «базовые» формы: сфера, цилиндр и конус ......Page 391
6.5.5. Формирование полигональной сетки для криволинейной \r\n\t\t\t\t\t\t\t\t\tповерхности ......Page 394
6.5.6. Линейчатые поверхности ......Page 396
6.5.7. Поверхности вращения ......Page 402
6.5.8. Поверхности второго порядка ......Page 404
6.5.9. Суперквадрики ......Page 408
6.5.10. Трубки на базе трехмерных кривых ......Page 409
6.5.11. Поверхности на базе явных функций двух переменных ......Page 410
6.6. Заключение ......Page 411
Тематическое задание 6.1. Сетки, записанные в файл ......Page 412
Тематическое задание 6.2. Вывод метода Ньюэлла ......Page 414
Тематическое задание 6.3. Призма ......Page 416
Тематическое задание 6.4. Совокупность призм и экструдированные \r\n\t\t\t\t\t\t\t\t\tполосы из четырехугольников ......Page 417
Тематическое задание 6.5. Трубки и змейки на базе параметрической \r\n\t\t\t\t\t\t\t\t\tкривой ......Page 418
Тематическое задание 6.7. Списки ребер и каркасные модели ......Page 419
Тематическое задание 6.11. Алгебраическая форма поверхностей второго \r\n\t\t\t\t\t\t\t\t\tпорядка ......Page 420
Тематическое задание 6.13. Рисование гладких параметрических \r\n\t\t\t\t\t\t\t\t\tповерхностей ......Page 422
Тематическое задание 6.14. Сузить, закрутить, изогнуть и расплющить ......Page 423
6.8. Дополнительная литература ......Page 425
Глава 7. Трехмерный просмотр ......Page 426
7.2. Снова о камере ......Page 427
7.2.1. Установка отображаемого объема ......Page 428
7.2.2. Позиционирование и ориентирование камеры ......Page 429
7.3. Встраивание камеры в программу ......Page 434
7.3.1. «Пилотирование» камеры ......Page 436
7.4. Перспективные проекции трехмерных объектов ......Page 440
7.4.1. Перспективная проекция точки ......Page 441
7.4.2. Перспективная проекция прямой линии ......Page 444
7.4.3. Включение перспективы в графический конвейер ......Page 449
7.4.4. Отсечение граней границами отображаемого объема ......Page 456
7.5. Создание стереоизображений ......Page 463
7.6.1. Одно-, двух- и трехточечные перспективы ......Page 465
7.6.2. Параллельные проекции ......Page 470
Тематическое задание 7.1. «Пилотирование» камеры по сцене ......Page 477
Тематическое задание 7.3. Создание параллельных проекций ......Page 478
Тематическое задание 7.5. Удаление невидимых граней для большей \r\n\t\t\t\t\t\t\t\t\tэффективности ......Page 479
7.9. Дополнительная литература ......Page 480
Глава 8. Визуализация граней для усиления реалистичности ......Page 481
8.1. Введение ......Page 482
8.2. Введение в модели закрашивания ......Page 486
8.2.1. Геометрические составляющие для нахождения отраженного света ......Page 487
8.2.2. Вычисление диффузной составляющей ......Page 488
8.2.3. Зеркальное отражение ......Page 489
8.2.4. Роль фонового света ......Page 492
8.2.5. Комбинирование компонентов освещения ......Page 493
8.2.6. Добавление цвета ......Page 494
8.2.7. Закраска и графический конвейер ......Page 496
8.2.8. Использование источников света в OpenGL ......Page 497
8.2.10. Закраска сцен, заданных с помощью SDL ......Page 503
8.3. Плоское и плавное закрашивание ......Page 504
8.3.1. Плоское закрашивание ......Page 506
8.3.2. Плавное закрашивание ......Page 507
8.4.1. Использование буфера глубины ......Page 511
8.5. Добавление текстуры к граням ......Page 514
8.5.1. Наложение текстуры на плоскую поверхность ......Page 517
8.5.2. Визуализация текстуры ......Page 519
8.5.3. Что регулирует текстура? ......Page 526
8.5.4. Пример текстурирования с использованием OpenGL ......Page 528
8.5.5. Обертывание текстуры вокруг криволинейных поверхностей ......Page 534
8.5.6. Отображение отражений ......Page 539
8.6. Добавление теней объектов ......Page 542
8.6.1.Тени как текстура ......Page 543
8.6.2. Создание теней с помощью буфера теней ......Page 544
8.7. Заключение ......Page 546
Тематическое задание 8.1. Создание закрашенных объектов с \r\n\t\t\t\t\t\t\t\t\tиспользованием OpenGL ......Page 547
Тематическое задание 8.5. Применение процедурных ЗD-текстур ......Page 548
Тематическое задание 8.7. Расширение SDL с целью включения \r\n\t\t\t\t\t\t\t\t\tтекстурирования ......Page 549
8.9. Дополнительная литература ......Page 550
Глава 9. Приближение к бесконечности ......Page 551
9.2. Фракталы и самоподобие ......Page 552
9.2.1. Последовательное усложнение кривых ......Page 553
9.2.2. Рисование кривых и снежинок Коха ......Page 554
9.2.3. Дробная размерность ......Page 556
9.3. Создание строк и кривые Пеано ......Page 557
9.3.1. Рекурсивная генерация строк и рисование в программе ......Page 559
9.3.2. Разрешение ветвления ......Page 562
9.4. Замощение плоскости ......Page 565
9.4.1. Моноэдрические мозаики ......Page 566
9.4.2. Диэдральные мозаичные размещения ......Page 568
9.4.4. Рептилии ......Page 571
9.5.1. Экспериментальный копир ......Page 574
9.5.2. Теоретические основы процесса копирования ......Page 576
9.5.3. Рисование k-й итерации ......Page 577
9.5.4. «Игра в Хаос» ......Page 579
9.5.5. Нахождение системы IFS; фрактальное сжатие изображений ......Page 582
9.6.1. Множества Мандельброта и системы итерируемых функций ......Page 586
9.6.2. Определение множества Мандельброта ......Page 590
9.6.3. Определение того, находится ли точка с в пределах множества \r\n\t\t\t\t\t\t\t\t\tМандельброта ......Page 592
9.6.4. Рисование множества Мандельброта ......Page 593
9.7. Множества Жюлиа ......Page 595
9.7.3. Некоторые замечания относительно неподвижных точек и \r\n\t\t\t\t\t\t\t\t\tбассейнов притяжения ......Page 596
9.7.4. Множество Жюлиа Jc ......Page 599
9.8.1. Фрактализация отрезка ......Page 602
9.8.2. Контроль за спектральной плотностью фрактальной кривой ......Page 604
9.9. Резюме ......Page 606
Тематическое задание 9.1. Рисование по генерации строк ......Page 607
Тематическое задание 9.2. Рисование снежинок и рептилий ......Page 608
Тематическое задание 9.3. «Игра в Хаос» ......Page 610
Тематическое задание 9.4. Рисование орбит внутри множества \r\n\t\t\t\t\t\t\t\t\tМандельброта ......Page 611
Тематическое задание 9.7. Непериодические мозаики; мозаики Пенроуза ......Page 612
Тематическое задание 9.8. Фрактализация кривых ......Page 614
Тематическое задание 9.9. Моделирование фрактализованных гор ......Page 615
9.11. Дополнительная литература ......Page 616
Глава 10. Средства для растровой графики ......Page 617
10.1. Введение ......Page 618
10.2.1. Важные операции с пиксельными картами ......Page 619
10.2.2. Типы данных, используемые для пиксельных карт ......Page 620
10.2.3. Масштабирование и поворот изображений ......Page 627
10.3. Объединение пиксельных карт ......Page 630
10.3.1. Цикл «чтение — модификация-запись» ......Page 631
10.3.2. Альфа-канал и смешивание изображений ......Page 632
10.3.3. Логические комбинации пиксельных карт ......Page 636
10.3.4. Операция BitBLT ......Page 640
10.4. Рисование прямых своими силами: алгоритм Брезенхема ......Page 641
10.4.1. Алгоритм Брезенхема для рисования прямых линий ......Page 642
10.5.1. Задание областей ......Page 648
10.5.2. Пиксельно-определенные области ......Page 649
10.5.3. Рекурсивный алгоритм заливки ......Page 650
10.5.4. Заполнение областей узорами ......Page 652
10.5.5. Использование связности: заполнение области на основе серий \r\n\t\t\t\t\t\t\t\t\tпикселов ......Page 653
10.6.1. Области, описываемые прямоугольниками ......Page 655
10.6.2. Области, заданные контуром ......Page 657
10.7. Заполнение полигонально-определенных областей ......Page 658
10.7.1. Какие пикселы ребра принадлежат полигону? ......Page 659
10.7.2. Повышение эффективности алгоритма ......Page 662
10.8. Ступенчатость; технологии сглаживания ......Page 666
10.8.1. Технологии сглаживания ......Page 667
10.8.2. Сглаживание текстуры ......Page 672
10.8.3. Сглаживание с применением OpenGL ......Page 675
10.9. Увеличение количества цветов и оттенков ......Page 676
10.9.1. Упорядоченное размытие ......Page 678
10.9.2. Рассеивание ошибок ......Page 682
10.10. Резюме ......Page 684
Тематическое задание 10.1. Чтение и просмотр BMP-файлов изображений ......Page 685
Тематическое задание 10.4. Работа со структурой данных «формы» ......Page 686
Тематическое задание 10.6. Заполнение «горизонтально-выпуклых» \r\n\t\t\t\t\t\t\t\t\tполигонов ......Page 687
10.12. Дополнительная литература ......Page 688
Глава 11. Создание кривых и поверхностей ......Page 689
11.1.1. Параметрические кривые как траектории ......Page 690
11.1.2. Плавность движения ......Page 691
11.2. Описание кривых полиномами ......Page 695
11.3. Интерактивное конструирование кривых ......Page 700
11.4.1. Алгоритм де Кастельо ......Page 702
11.5. Свойства кривых Безье ......Page 707
11.6.1. Проблема локального контроля ......Page 712
11.6.2. Список пожеланий для множества стыковочных функций ......Page 713
11.6.3. Кусочно-полиномиальные кривые и сплайны ......Page 715
11.6.4. Построение из g(t) множества стыковочных функций ......Page 717
11.6.5. Сплайны и базисные функции ......Page 720
11.7.1. Определение В-сплайн функций ......Page 721
11.7.2. Использование кратных узлов в узловом векторе ......Page 726
11.7.3. Незамкнутые В-сплайн кривые: стандартный узловой вектор ......Page 727
11.8. Полезные для дизайна свойства В-сплайн кривых ......Page 730
11.8.1. Использование кратных контрольных точек ......Page 732
11.9. Рациональные сплайны и NURBS-кривые ......Page 733
11.10.1. Интерполяция посредством кусочных кубических полиномов ......Page 737
11.10.2. Эрмитова интерполяция ......Page 739
11.10.3. Естественные кубические сплайны ......Page 742
11.10.4. Вычисление наклонов при кубической интерполяции ......Page 743
11.11.1. Линейчатые поверхности на базе В-сплайнов ......Page 748
11.11.2. Поверхности вращения на базе В-сплайнов ......Page 749
11.11.3. Лоскуты Безье ......Page 751
11.11.4. Сшивание лоскутов Безье ......Page 752
11.11.5. В-сплайн лоскуты ......Page 754
11.11.6. NURBS-поверхности ......Page 755
11.12. Резюме ......Page 757
Тематическое задание 11.1. Попурри из интересных параметрических \r\n\t\t\t\t\t\t\tкривых ......Page 759
Тематическое задание 11.2. «Эллиптипул» ......Page 760
Тематическое задание 11.5. Создание редактора сплайн-кривых ......Page 762
Тематическое задание 11.6. Интерполяция контрольных точек \r\n\t\t\t\t\t\t\tВ-сплайнами ......Page 763
Тематическое задание 11.8. Многоуважаемый чайник ......Page 765
Тематическое задание 11.9. Инвариантность относительно проективных \r\n\t\t\t\t\t\t\tпреобразований ......Page 766
Тематическое задание 11.10. Рисование NURBS-лоскутов ......Page 767
11.14. Дополнительная литература ......Page 769
12.1. Введение ......Page 770
12.2. Описания цветов ......Page 772
12.2.1. Доминантная длина волны ......Page 773
12.2.2. Подбор цветов ......Page 774
12.3. Международная комиссия по стандартам освещенности ......Page 777
12.3.1. Построение CIE-диаграммы ......Page 778
12.3.2. Использование хроматической CIE-диаграммы ......Page 780
12.3.3. Цветовые охваты ......Page 781
12.4.1. Цветовые пространства RGB и CMY ......Page 782
12.4.2. Аддитивные и субтрактивные цветовые системы ......Page 783
12.4.3. Цветовая модель HLS ......Page 785
12.5. Квантование цвета ......Page 787
12.5.1. Квантование с постоянным шагом ......Page 789
12.5.3. Алгоритм медианного сечения ......Page 791
12.5.4. Octree-квантование ......Page 792
Тематическое задание 12.2. Рисование RGB-прсстранства ......Page 795
Тематическое задание 12.7. Квантование цвета методом октодерева ......Page 796
12.8. Дополнительная литература ......Page 798
Глава 13. Удаление невидимых поверхностей ......Page 799
13.1. Введение ......Page 800
13.1.2. Описание данных для полигональных сеток ......Page 802
13.2. Снова об алгоритме буфера глубины ......Page 805
13.3. HSR-методы со списками приоритетов ......Page 806
13.3.1. Алгоритм беспечного художника ......Page 807
13.3.2. HSR с использованием деревьев двоичного разбиения \r\n\t\t\t\t\t\t\t\t\tпространства ......Page 808
13.3.3. Алгоритм сортировки по глубине ......Page 812
13.4. HSR-метод построчного сканирования ......Page 816
13.5. Методы разбиения области ......Page 818
13.5.1. Квадрантное разбиение ......Page 819
13.5.2. Другие определения простой области ......Page 822
13.6. О методах удаления невидимых линий ......Page 825
13.6.1. Геометрическое тестирование в подпрограмме edgeTest() ......Page 828
13.7. HSR-методы для криволинейных поверхностей ......Page 829
13.8. Резюме ......Page 832
Тематическое задание 13.2. Тест и разбиение ......Page 834
Тематическое задание 13.3. Удаление невидимых поверхностей с \r\n\t\t\t\t\t\t\t\t\tиспользованием BSP-деревьев ......Page 835
Тематическое задание 13.5. Использование HSR-метода построчного \r\n\t\t\t\t\t\t\t\t\tсканирования ......Page 836
13.10. Дополнительная литература ......Page 837
Глава 14. Введение в трассировку лучей ......Page 838
14.1. Введение ......Page 839
14.2. Построение геометрии трассировки лучей ......Page 840
14.3. Обзор процесса трассировки луча ......Page 842
14.4. Пересечение луча с объектом ......Page 844
14.4.2. Пересечение с базовой сферой ......Page 845
14.4.3. Пересечение луча с преобразованными объектами ......Page 846
14.5. Организация трассировщика луча в приложении ......Page 848
14.5.1. Подпрограмма для вычисления пересечений луча со сферой ......Page 855
14.5.2. Полный трассировщик лучей для сцен с излучающей сферой ......Page 857
14.6.1. Пересечение с квадратом ......Page 858
14.6.2. Пересечение с коническим цилиндром ......Page 860
14.6.3. Пересечение с кубом (или с любым другим выпуклым полиэдром) ......Page 864
14.6.4. Добавление новых примитивов ......Page 871
14.7. Рисование закрашенных изображений сцен ......Page 872
14.7.1. Нахождение нормали в точке соударения ......Page 873
14.7.2. Раскраска объектов в соответствии с материалами поверхностей ......Page 874
14.7.3. Физически обоснованные модели закраски: закрашивание \r\n\t\t\t\t\t\t\t\t\tКука-Торренса ......Page 877
14.8. Наложение текстуры на поверхности ......Page 883
14.8.1. Текстура твердого тела ......Page 884
14.8.2. Наложение изображений на поверхности ......Page 894
14.8.3. Сглаживающая трассировка лучей ......Page 896
14.9. Использование экстентов ......Page 897
14.9.1. Боксы и сферические экстенты ......Page 899
14.9.2. Использование проекционных экстентов ......Page 904
14.10. Добавление теней для большей реалистичности ......Page 907
14.11. Отражения и прозрачность ......Page 910
14.11.1. Преломление света ......Page 913
14.11.2. Обработка преломления методом shade() ......Page 918
14.12. Составные объекты: логические операции с объектами ......Page 921
14.12.1. Трассировка лучей для CSG-объектов ......Page 922
14.12.2. Структура данных для Булевых объектов ......Page 924
14.12.3. Пересечения лучей с Булевыми объектами ......Page 927
14.12.4. Построение и использование экстентов для CGG-объектов ......Page 933
14.13. Резюме ......Page 935
Тематическое задание 14.2. Усовершенствованный трассировщик лучей ......Page 936
Тематическое задание 14.7, Трассировка лучей для других примитивов ......Page 937
14.15. Дополнительная литература ......Page 938
А1. Получение и инсталляция OpenGL ......Page 939
Б1. Некоторые основные определения, относящиеся к матрицам и \r\n\t\t\t\t\t\t\tоперациям над ними ......Page 941
Б1.1. Действия с матрицами ......Page 942
Б1.2. Умножение двух матриц ......Page 943
Б1.3. Разбиение матрицы на блоки ......Page 944
Б1.4. Определитель матрицы ......Page 945
Б1.5. Обращение матрицы ......Page 946
Б2.1. Перп вектора; перп-скалярное произведение ......Page 948
Б2.2. Смешанное произведение ......Page 949
БЗ. Арифметика комплексных чисел ......Page 950
Б4. Сферические координаты и направляющие косинусы ......Page 953
Приложение В. Некоторые полезные классы и служебные подпрограммы ......Page 956
B1. Классы для двумерной графики ......Page 957
B2. RGBPixmap CLASS ......Page 961
B3. Класс SCENE и сопутствующие классы ......Page 966
B4. Класс NOISE ......Page 995
B5. Некоторые классы, полезные при трассировке лучей ......Page 998
Приложение Г. Введение в PostScript® ......Page 1001
Г1.1. Некоторые предварительные замечания ......Page 1002
Г1.2. PostScript основан на стеке ......Page 1003
Г1.3. Некоторые операции со стеком: pop, dup, exch, clear ......Page 1004
Г1.5. Некоторые арифметические операторы ......Page 1005
Г2.1. Системы координат и преобразования ......Page 1008
Г2.2. Команды создания контура ......Page 1009
Г2.3. Дуги окружностей ......Page 1010
Г2.4. Использование операторов закрашивания ......Page 1011
Г2.5. Преобразования координат ......Page 1012
Г2.6. Операторы графического состояния ......Page 1016
Г4. Определение новых переменных и процедур ......Page 1019
Г4.2. Определение процедур ......Page 1020
Г4.3. Простейшая форма итерации с использованием оператора repeat ......Page 1024
Г5. Команды решений и итераций ......Page 1026
Г5.2. Принятие решений ......Page 1027
Г5.3. Итерация ......Page 1029
Г6. Печать численных значений ......Page 1034
Г7. Рисование полутоновых изображений ......Page 1035
Приложение Д. Введение в SDL ......Page 1038
Д1. Синтаксис SDL ......Page 1039
Д2. Макросы в SDL ......Page 1043
ДЗ. Расширение SDL ......Page 1044
Литература ......Page 1046
A-B-C ......Page 1058
D-E-F ......Page 1059
G-H-I-J-K ......Page 1060
L-M-N-O-P ......Page 1061
R-S ......Page 1062
T-U ......Page 1063
V-W-Y-Z ......Page 1064
A-B-C-D-E-F-G ......Page 1065
H-I-K-L-M-N-O ......Page 1066
P-R-S-T-U-V-W-X-Z-А ......Page 1067
Б-В ......Page 1068
Г ......Page 1069
Д-Е-Ж-З ......Page 1070
И-К ......Page 1071
Л ......Page 1072
М ......Page 1073
Н-О ......Page 1074
П ......Page 1075
Р ......Page 1078
С ......Page 1079
Т-У-Ф ......Page 1080
Х-Ц-Ч-Ш-Щ-Э-Я ......Page 1081
Обложка ......Page 1082