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

Компьютерная графика и стандарт OpenGL.


Дональд Херн М. Паулин Бейкер "Компьютерная графика и стандарт OpenGL" Вильямс, 2005 год, 1168 стр. (+48 с. цв. ил.)

Книга изначально рассчитана на читателя абсолютно не знакомого с компьютерной графикой.

Авторы постарались доходчиво изложить базовые принципы и понятия необходимые для создания, использования и понимания графических систем и алгоритмов. В книге математические и физические понятия органично встраиваются в программное обеспечение с использованием OpenGL.

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

У неё прекрасные возможности быть как учебником так и справочником, в ней даны примеры кодов C++ и OpenGL, а также все математические алгоритмы, которые нужны для создания программных решений в области компьютерной графики. Книга рассчитана на читателей различной квалификации в области компьютерной графики. В первую очередь студентов, аспирантов и инженеров.

Скачать

Оглавление
Предисловие 30
Особенности третьего издания 30
Примеры программирования 31
Требуемые знания 32
Предлагаемые курсы 32
Благодарности 33

Обзор компьютерной графики 36
1.1. Графики и диаграммы 37
1.2. Автоматизированное проектирование 40
1.3. Виртуальная реальность 46
1.4. Визуализация данных 48
1.5. Обучение 56
1.6. Компьютерное искусство 60
1.7. Развлечения 66
1.8. Обработка изображений 69
1.9. Графические пользовательские интерфейсы 71
1.10. Резюме 73
Литература 73

Краткий обзор графических систем 74
2.1. Приборы с мониторами 75
Электронно-лучевые трубки с регенерацией 75
Дисплеи растрового сканирования 80
Дисплеи с выборочным сканированием 83
Цветные мониторы с ЭЛТ 85
Дисплеи с плоским экраном 87
Приборы с трехмерным изображением 92
Стереоскопические системы и виртуальная реальность 93
2.2. Системы растрового сканирования 96
Видеоконтроллер 96
Процессор дисплея с растровым сканированием 99
2.3. Графические рабочие станции и системы создания изображений 102
2.4. Устройства ввода 106
Клавиатура, блок кнопок и круговая шкала 106
Мышь 107
Трекболы и пространственные манипуляторы 109
Джойстик 109
Информационные перчатки 110
Цифровой преобразователь ПО
Сканеры изображений 114
Сенсорная панель 115
Световое перо 117
Голосовые системы 118
2.5. Устройства выдачи документальных копий 118
2.6. Графические сети 120
2.7. Графика в сети Internet 121
2.8. Графическое программное обеспечение 122
Координатные представления 123
Графические функции 125
Стандарты программного обеспечения 126
Другие графические пакеты 128
2.9. Знакомство с OpenGL 128
Основной синтаксис OpenGL 129
Родственные библиотеки 129
Файлы заголовков 130
Управление окнами изображения с помощью библиотеки GLUT 131
Полная программа OpenGL 133
2.10. Резюме 137
Литература 139
Упражнения 140

Выходные графические примитивы 142
3.1. Системы координат 144
Экранные координаты 144
Абсолютные и относительные координаты 146
3.2. Задание двухмерной внешней системы координат в OpenGL 147
3.3. Функции точек в OpenGL 148
3.4. Функции прямых в OpenGL 150
3.5. Алгоритмы построения прямых линий 152
Уравнение прямой 153
Алгоритм ЦДА 155
Алгоритм построения прямых линий Брезенхема 157
Изображение ломаных линий 164
3.6. Параллельные алгоритмы построения прямых 164
3.7. Запись значений в буфер кадров 167
3.8. Функции кривых в OpenGL 168
3.9. Алгоритмы построения окружностей 168
Свойства окружностей 169
Алгоритм построения окружности методом средней точки 172
3.10. Алгоритмы построения эллипсов 178
Свойства эллипсов 178
Алгоритм средней точки для эллипса 181
3.11. Другие кривые 189
Конические сечения 190
Полиномы и сплайны 193
3.12. Параллельные алгоритмы построения кривых 194
3.13. Адресация пикселей и геометрия объектов 195
Координаты сетки экрана 195
Сохранение геометрических свойств изображаемых объектов 196
3.14. Закрашенные области 200
3.15. Закрашенные многоугольники 201
Классификация многоугольников 202
Распознавание вогнутых многоугольников 203
Деление вогнутых многоугольников 204
Разделение выпуклого многоугольника на набор треугольников 206
Проверки “внутри-снаружи” 206
Таблицы многоугольников 210
Уравнения плоскости 212
Передние и задние грани многоугольника 214
3.16. Функции закрашивания многоугольников в OpenGL 216
3.17. Массивы вершин в OpenGL 225
3.18. Примитивы пиксельных массивов 228
3.19. Функции пиксельных массивов в OpenGL 229
Функция битового отображения OpenGL 229
Функция пиксельного отображения OpenGL 231
Растровые операции OpenGL 232
3.20. Примитивы символов 234
3.21. Функции изображения символов в OpenGL 237
3.22. Деление рисунка на части 239
3.23. Таблицы отображений в OpenGL 239
Создание и наименование таблиц отображений в OpenGL 239
Реализация таблиц отображений в OpenGL 241
Удаление таблицы отображений в OpenGL 242
3.24. Функция изменения формы окна изображения в OpenGL 242
3.25. Резюме 246
Примеры программ 251
Литература 259
Упражнения 259

Атрибуты графических примитивов 264
4.1. Параметры состояния в OpenGL 266
4.2. Цвет и шкала яркости 267
Цветовые компоненты RGB 267
Таблицы цветов 268
Шкала яркости 269
Другие цветовые параметры 270
4.3. Функции цвета в OpenGL 270
Цветовые режимы RGB и RGBA в OpenGL 270
Индексный цветовой режим в OpenGL 272
Смешивание цветов в OpenGL 273
Цветовые массивы в OpenGL 275
Другие функции цвета в OpenGL 276
4.4. Атрибуты точек 277
4.5. Атрибуты прямых линий 278
Ширина линии 278
Стиль линии 281
Опции перьев и кистей 282
4.6. Атрибуты кривых 284
4.7. Функции атрибутов точек в OpenGL 287
4.8. Функции атрибутов прямых линий в OpenGL 288
Функция для задания ширины линии в OpenGL 288
Функция OpenGL стиля линии 289
Другие эффекты прямых линий в OpenGL 291
4.9. Атрибуты закрашенных фигур 292
Стили закрашивания 292
Области, заполненные с использованием смешивания цветов 295
4.10. Общий вид растрового алгоритма закрашивания многоугольников 297
4.11. Построчное закрашивание выпуклых многоугольников 303
4.12. Построчное закрашивание фигур с криволинейными границами 303
4.13. Способы заполнения фигур с неправильными границами 304
Алгоритм граничного заполнения 304
Алгоритм потокового заполнения 309
4.14. Функции атрибутов закрашенных фигур в OpenGL 310
Функция шаблона заполнения в OpenGL 310
Текстурные и интерполяционные шаблоны в OpenGL 312
Контурные методы в OpenGL 313
Функция передней стороны в OpenGL 316
4.15. Атрибуты символов 317
4.16. Функции атрибутов символов в OpenGL 322
4.17. Защита от наложения 323
Сверхдискретизация прямолинейных отрезков 325
Маски удельного веса подпикселей 327
Дискретизация прямолинейных отрезков по площади 328
Методы фильтрации 329
Фазировка пикселей 329
Компенсация различий в интенсивности линии 329
Устранение контурных неровностей границ фигур 330
4.18. Функции OpenGL защиты от наложения 334
4.19. Функции запроса в OpenGL 335
4.20. Группы атрибутов в OpenGL 336
4.21. Резюме 337
Литература 341
Упражнения 342

Геометрические преобразования 346
5.1. Базовые двухмерные геометрические преобразования 348
Двухмерная трансляция 348
Двухмерный поворот 351
Двухмерное масштабирование 3 54
5.2. Матричные представления и однородные координаты 357
Однородные координаты 358
Матрица двухмерной трансляции 359
Матрица двухмерного поворота 359
Матрица двухмерного масштабирования 360
5.3. Обратные преобразования 360
5.4. Двухмерные сложные преобразования 361
Сложные двухмерные трансляции 362
Сложные двухмерные повороты 362
Сложное двухмерное масштабирование 363
Произвольный двухмерный поворот вокруг оси 363
Общее двухмерное масштабирование относительно неподвижной точки 364
Произвольные двухмерные направления масштабирования 365
Свойства произведения матриц 366
Произвольные двухмерные сложные преобразования и вычислительная эффективность 367
Двухмерные жесткие преобразования 369
Построение двухмерных матриц поворота 370
Пример программирования двухмерной сложной матрицы 371
5.5. Другие двухмерные преобразования 376
Отражение 376
Сдвиг 381
5.6. Растровые методы геометрических преобразований 383
5.7. Растровые преобразования в OpenGL 386
5.8. Переход между двухмерными системами координат 387
5.9. Геометрические преобразования в трехмерном пространстве 390
5.10. Трехмерная трансляция 391
5.11. Трехмерный поворот 393
Трехмерные повороты вокруг координатной оси 393
Произвольные трехмерные повороты 396
Использование кватернионных методов в расчете трехмерных поворотов 404
5.12. Трехмерное масштабирование 409
5.13. Сложные трехмерные преобразования 412
5.14. Другие трехмерные преобразования 416
Трехмерные отражения 416
Трехмерные сдвиги 417
5.15. Переход между трехмерными системами координат 418
5.16. Аффинные преобразования 419
5.17. Функции геометрических преобразований в OpenGL 419
Базовые геометрические преобразования OpenGL 420
Операции с матрицами в OpenGL 421
Стеки матриц в OpenGL 423
Пример программирования геометрических преобразований в OpenGL 425
5.18. Резюме 429
Литература 431
Упражнения 432

Двухмерное наблюдение 436
6.1. Двухмерный конвейер наблюдения 437
6.2. Отсекающее окно 440
Отсекающее окно в координатах наблюдения 441
Отсекающее окно во внешних координатах 442
6.3. Нормировка и преобразование поля просмотра 443
Отображение окна отсечения в нормированное поле просмотра 444
Отображение отсекающего окна в нормированный квадрат 446
Изображение строк символов 448
Расщепление экрана и несколько устройств вывода 448
6.4. Функции двухмерного наблюдения OpenGL 449
Режим проектирования OpenGL 449
Функция отсекающего окна GLU 449
Функция поля просмотра OpenGL 450
Создание окна на экране дисплея GLUT 451
Установка режима и цвета окна (GLUT) 452
Идентификатор GLUT окна изображения 452
Удаление окна GLUT с экрана дисплея 453
Текущее окно на экране GLUT 453
Замещение и изменение размера окна на экране (GLUT) 453
Управление несколькими окнами на экране (GLUT) 454
Субокна GLUT 455
Выбор формы курсора окна на экране 455
Наблюдение графических объектов в окне экрана GLUT 456
Выполнение прикладной программы 456
Другие функции GLUT 456
Пример программы двухмерного наблюдения OpenGL 457
6.5. Алгоритмы отсечения 459
6.6. Двухмерное отсечение точки 460
6.7. Двухмерное отсечение линии 460
Отсечение линий Коэна-Сазерленда 462
Отсечения линии Лианга-Барски 468
Отсечение линии Николла-Ли-Николла 472
Отсечение линий с использованием непрямоугольных многоугольных окон 475
Отсечение линий с использованием окон с нелинейными границами 476
6.8. Отсечение многоугольной закрашенной области 477
Отсечение многоугольниками Сазерленда-Ходгмана 479
Алгоритм отсечения многоугольников Уэйлера-Азертона 485
Обработка многоугольников с использованием непрямоугольных отсекающих окон 487
Обработка многоугольника с использованием отсекающих окон с нелинейными границами 488
6.9. Отсечение кривых 489
6.10. Отсечение текста 490
6.11. Резюме 491
Литература 495
Упражнения 495

Трехмерное наблюдение 498
7.1. Обзор концепций трехмерного наблюдения 499
Наблюдение трехмерной сцены 500
Проекции 500
Упорядочение по глубине 501
Определение видимых линий и поверхностей 502
Визуализация поверхностей 503
Разобранный вид и вид в разрезе 504
Трехмерное и стереоскопическое наблюдение 504
7.2. Трехмерный конвейер наблюдения 505
7.3. Параметры трехмерного наблюдения 508
Вектор нормали к плоскости наблюдения 508
Вектор верха 509
Эталонная система наблюдения uvn 510
Генерация эффектов трехмерного наблюдения 511
7.4. Преобразование из внешних координат в координаты наблюдения 514
7.5. Преобразования проектирования 515
7.6. Ортогональные проекции 516
Аксонометрические и изометрические ортогональные проекции 516
Координаты ортогональной проекции 518
Отсекающее окно и объем наблюдения ортогональной проекции 518
Нормировка ортогональной проекции 520
7.7. Косоугольные параллельные проекции 523
Косоугольные параллельные проекции в черчении и проектировании 524
Косоаксонометрические и кабинетные параллельные проекции 525
Вектор косоугольной параллельной проекции 526
Отсекающее окно и объем наблюдения косоугольной параллельной проекции 527
Матрица косоугольной параллельной проекции 528
Нормировка косоугольной параллельной проекции 529
7.8. Перспективные проекции 530
Координаты перспективной проекции 531
Уравнения перспективной проекции: частные случаи 531
Точки схождения перспективных проекций 533
Объем наблюдения для перспективной проекции 535
Матрица перспективной проекции 536
Симметричная пирамида перспективной проекции 538
Усеченная пирамида косоугольной перспективной проекции 542
Нормированные координаты перспективной проекции 545
7.9. Преобразования поля просмотра и трехмерные экранные координаты 548
7.10. Функции трехмерного наблюдения OpenGL 549
Функция OpenGL преобразования наблюдения 549
Функция ортогональной проекции OpenGL 550
Функции OpenGL симметричной перспективной проекции 552
Функции OpenGL произвольной перспективной проекции 553
Поля просмотра и окна на экране OpenGL 553
Пример программы трехмерного наблюдения OpenGL 554
7.11. Трехмерные алгоритмы отсечения 556
Отсечение в трехмерных однородных координатах 557
Трехмерные коды областей 558
Трехмерное отсечение точек и линий 559
Трехмерное отсечение многоугольников 562
Трехмерное отсечение кривых 564
Произвольные плоскости отсечения 564
7.12. Дополнительные плоскости отсечения в OpenGL 567
7.13. Резюме 568
Литература 569
Упражнения 570

Представления трехмерных объектов 572
8.1. Многогранники 574
8.2. Функции многогранников OpenGL 575
Функции OpenGL заполнения области многоугольника 575
Функции GLUT правильных многогранников 575
Пример программы GLUT построения многогранников 577
8.3. Криволинейные поверхности 579
8.4. Поверхности второго порядка 579
Сфера 579
Эллипсоид 580
Тор 581
8.5. Суперквадрики 583
Суперэллипс 583
Суперэллипсоиды 584
8.6. Функции OpenGL поверхностей второго и третьего порядка 584
Функции GLUT поверхностей второго порядка 584
Функция GLUT изображения чайника с помощью кубических поверхностей 586
Функции GLU поверхностей второго порядка 587
Пример программы с использованием функций GLUT и GLU
для создания поверхностей второго порядка 590
8.7. Каплевидные объекты 592
8.8. Сплайновые представления 594
Интерполяция и аппроксимация сплайнами 595
Параметрические условия непрерывности 597
Условия геометрической непрерывности 599
Спецификация сплайна 599
Сплайновые поверхности 601
Настройка сплайновых поверхностей 601
8.9. Методы интерполяции кубическими сплайнами 602
Естественные кубические сплайны 603
Эрмитова интерполяция 604
Фундаментальные сплайны 607
Сплайны Коханека-Бартелса 609
8.10. Сплайновые кривые Безье 611
Уравнения кривых Безье 612
Пример программы генерации кривых Безье 614
Свойства кривых Безье 617
Методы проектирования с использованием кривых Безье 618
Кубические кривые Безье 620
8.11. Поверхности Безье 622
8.12. Би-сплайны 624
Уравнение би-сплайна 624
Равномерные периодические би-сплайны 626
Кубические периодические би-сплайны 630
Открытые равномерные би-сплайны 632
Неравномерные би-сплайны 634
8.13. Би-сплайновые поверхности 636
8.14. Бета-сплайны 636
Условия непрерывности бета-сплайнов 637
Кубическое периодическое матричное представление бета-сплайнов 638
8.15. Рациональные сплайны 638
8.16. Преобразование между сплайновыми представлениями 641
8.17. Отображение сплайновых кривых и поверхностей 643
Правило Горнера 643
Расчет по правым разностям 644
Методы подразделения 646
8.18. Функции OpenGL аппроксимации сплайнами 649
Функции OpenGL сплайнов Безье 649
Функции OpenGL поверхностных сплайнов Безье 653
Функции би-сплайновых кривых GLU 656
Функции GLU би-сплайновых поверхностей 658
Функции GLU обрезки поверхности 661
8.19. Заметающее представление 663
8.20. Методы конструктивной стереометрии 664
8.21. Октодеревья 668
8.22. BSP-деревья 671
8.23. Методы фрактальной геометрии 671
Процедуры генерации фракталов 673
Классификация фракталов 674
Фрактальная размерность 674
Геометрическое построение детерминированных самоподобных фракталов 678
Геометрическое построение статистически самоподобных фракталов 682
Методы построения аффинных фракталов 684
Методы случайного смещения средней точки 685
Управление топографией ландшафта 689
Фракталы многократного возведения в квадрат 691
Самообратные фракталы 705
8.24. Грамматики форм и другие процедурные методы 707
8.25. Системы многих частиц 710
8.26. Физическое моделирование 713
8.27. Визуализация наборов данных 715
Визуальное представление скалярных полей 716
Визуальное представление векторных полей 721
Визуальное представление тензорных полей 723
Визуальное представление многомерных полей данных 725
8.28. Резюме 726
Литература 731
Упражнения 731

Методы исследования видимых поверхностей 734
9.1. Классификация алгоритмов исследования видимых поверхностей 736
9.2. Детектирование невидимых поверхностей 736
9.3. Метод буфера глубины 738
9.4. Метод А-буфера 742
9.5. Метод строк развертки 744
9.6. Метод сортировки по глубине 746
9.7. Метод BSP-дерева 751
9.8. Методы деления области 752
9.9. Методы октодеревьев 755
9.10. Метод расчета луча 757
9.11. Сравнение методов исследования видимых поверхностей 758
9.12. Криволинейные поверхности 759
Представления криволинейных поверхностей 760
Графики контуров поверхности 760
9.13. Методы определения видимости для каркасных изображений 762
Алгоритмы исследования видимых поверхностей для каркасных объектов 762
Алгоритм затухания с глубиной для каркасных объектов 763
9.14. Функции исследования видимых поверхностей в OpenGL 764
Функции отбора многоугольников OpenGL 764
Функции буфера глубины OpenGL 765
Методы OpenGL исследования видимых каркасных поверхностей 767
Функции OpenGL затухания с глубиной 767
9.15. Резюме 768
Литература 769
Упражнения 769

Модели освещения и методы визуализации поверхностей 774
10.1. Источники света 776
Точечные источники света 777
Бесконечно удаленные источники света 778
Радиальное затухание интенсивности 778
Источники направленного света и прожекторные эффекты 779
Угловое затухание интенсивности 780
Неточечные источники света и модель Вона 782
10.2. Эффекты освещения поверхности 783
10.3. Стандартные модели освещения 784
Рассеянный свет 785
Диффузное отражение 785
Зеркальное отражение и модель Фонга 789
Объединенное диффузное и зеркальное отражение 795
Диффузное и зеркальное отражение от нескольких источников света 796
Излучение света с поверхности 796
Стандартная модель освещения с затуханием интенсивности и источниками направленного света 797
Вопросы, касающиеся RGB-цветов 798
Другие формы представления цвета 800
Яркость 800
10.4. Прозрачные поверхности 801
Полупрозрачные материалы 802
Преломление света 803
Стандартная модель прозрачности 805
10.5. Атмосферные эффекты 806
10.6. Тени 807
10.7. Параметры камеры 808
10.8. Отображение интенсивности света 809
Распределение уровней интенсивности 809
Гамма-коррекция и таблицы видеосоответствий 810
Вывод на экран тоновых изображений 813
10.9. Полутоновые шаблоны и методы псевдослучайного шума 814
Полутоновые аппроксимации 814
Методы введения псевдослучайного шума 819
10.10. Методы визуализации многоугольников 822
Визуализация поверхностей постоянной интенсивности 823
Визуализация поверхностей по методу Гуро 824
Визуализация поверхности по Фонгу 827
Быстрая визуализация поверхности по Фонгу 828
10.11. Методы построения хода лучей 829
Стандартный алгоритм построения хода лучей 831
Расчет пересечения луча с поверхностью 834
Пересечение лучом сферы 836
Пересечения луча с многогранником 837
Сокращение вычислений при решении задачи пересечения лучом объекта 838
Методы деления пространства 839
Имитация эффектов фокусировки камеры 844
Построение лучей без наложения 846
Распределенное построение хода лучей 849
10.12. Модели диффузного отражения 852
Слагаемые лучистой энергии 853
Стандартная модель диффузного отражения 856
Метод прогрессивного уточнения диффузного отражения 861
10.13. Отображение среды 863
10.14. Отображение фотонов 866
10.15. Сложение деталей поверхности 866
10.16. Моделирование деталей поверхности многоугольниками 870
10.17. Наложение текстуры 870
Линейные текстурные узоры 871
Поверхностные текстурные узоры 872
Объемные текстурные узоры 876
Узоры с сокращенной текстурой 877
Методы процедурного текстурирования 877
10.18. Отображение шероховатости 878
10.19. Отображение кадра 881
10.20. Функции освещения и визуализации OpenGL 882
Функции OpenGL для задания точечных источников света 882
Положение и тип источника света OpenGL 882
Цвета источников света OpenGL 884
Коэффициенты радиального затухания интенсивности источников света OpenGL 884
Направленные источники света (прожекторы) OpenGL 885
Параметры глобального освещения OpenGL 886
Функция свойств поверхности OpenGL 888
Модель освещения OpenGL 889
Атмосферные эффекты OpenGL 890
Функции прозрачности OpenGL 891
Функции визуализации поверхности OpenGL 893
Операции формирования полутонового изображения OpenGL 894
10.21. Текстурные функции OpenGL 895
Функции линейных текстур OpenGL 895
Функции OpenGL для поверхностных текстур 899
Функции OpenGL для объемных текстур 901
Опции цвета текстурных узоров OpenGL 902
Опции отображения текстуры в OpenGL 902
Текстурное обрамление в OpenGL 903
Копирование текстурных узоров OpenGL из буфера кадров 904
Массивы координат текстуры OpenGL 904
Присвоение имен текстурным узорам OpenGL 905
Текстурные под узоры OpenGL 906
Сокращенные текстурные узоры OpenGL 906
Границы текстуры OpenGL 908
Заместители текстуры в OpenGL 908
Автоматическое текстурирование поверхностей второго порядка 909 Однородные текстурные координаты 909
Дополнительные возможности текстур OpenGL 910
Литература 915
Упражнения 915

Методы интерактивного ввода и графические интерфейсы пользователя 918
11.1 Графические входные данные 919
11.2. Логическая классификация устройств ввода 920
Устройства ввода координаты 920
Устройства ввода набора координат 921
Устройства ввода строк 921
Устройства ввода скалярных значений 921
Устройства выбора Указки 923
11.3. Функции ввода графических данных 923
Режимы ввода 926
Обратная связь с дублированием Функции обратного вызова 926
11.4. Интерактивные технологии построения изображений 927
Основные методы размещения 927
Перетаскивание 928
Условия 928
Сетки 928
Методы эластичной графики Поле тяжести 928

Методы интерактивного рисования и живописи 929

11.5. Среды виртуальной реальности 930
11.6. Интерактивные функции устройств ввода OpenGL 931
Функции GLUT (мышь) 932
Функции GLUT (клавиатура) 933
Функции GLUT (планшет) 933
Функции GLUT (спейсбол) 934
Функции GLUT (поле клавиш) 939
Функции GLUT (наборные диски) 945
Указки в OpenGL 945
11.7. Функции меню OpenGL 946
Создание меню GLUT 946
Создание нескольких меню GLUT и управление ими 947
11.8. Разработка графического пользовательского интерфейса 953
Диалог с пользователем 954
Окна и пиктограммы 957
Учет различных уровней подготовки 964
Согласованность 964
Минимизация использования памяти Резервное копирование 964
Обратная связь 965
11.9. Резюме 966
Литература 968
Упражнения 969

Модели цвета и применение цвета 972
12.1. Свойства света 973
Электромагнитный спектр 973
Психологические характеристики цвета 975
12.2. Модели цвета 976
Основные цвета 977
Интуитивное восприятие цвета 978
12.3. Стандартные основные цвета и диаграмма цветности 978
Модель цвета XYZ 979
Нормированные значения XYZ 979
Диаграмма цветности МКО 980
Цветовые гаммы 981
Дополнительные цвета 982
Преобладающая длина волны 982
Чистота 983
12.4. Модель цвета RGB 983
12.5. Семейство моделей YIQ 985
Параметры YIQ 985
Преобразования между пространствами цветов RGB и YIQ 986
Системы YUV и YCrCb 987
12.6. Модели цвета CMY и CMYK 987
Параметры CMY 987
Преобразования между пространствами CMY и RGB 988
12.7. Модель цвета HSV 989
Параметры HSV 989
Выбор теней, оттенков и тонов 990
Преобразования между пространствами цветов HSV и RGB 991
12.8. Модель цвета HLS 993
12.9. Выбор цвета и приложения 995
12.10. Резюме 995
Литература 996
Упражнения 997

Компьютерная анимация 998
13.1. Растровые методы компьютерной анимации 1000
Двойная буферизация 1001
Создание анимации с помощью растровых операций 1002
13.2. Проектирование анимационных сюжетов 1002
13.3. Традиционные методы анимации 1004
13.4. Общие функции компьютерной анимации 1006
13.5. Языки компьютерной анимации 1006
13.6. Системы ключевых кадров 1008
Трансформация 1008
Имитация ускорения 1011
13.7. Спецификация движения 1015
Прямая спецификация движения 1015
Целенаправленные системы 1016
Кинематика и динамика 1016
13.8. Анимация шарнирной фигуры 1017
13.9. Периодическое движение 1020
13.10. Процедуры анимации OpenGL 1020
13.11. Резюме 1024
Литература 1026
Упражнения 1026

Иерархическое моделирование 1028
14.1. Базовые концепции моделирования 1029
Представления систем 1030
Иерархии символов 1032
14.2. Пакеты моделирования 1033
14.3. Общие методы иерархического моделирования 1036
26 Содержание
Локальные координаты 1036
Моделирующие преобразования 1037
Создание иерархических структур 1038
14.4. Иерархическое моделирование с использованием таблиц отображения OpenGL 1039
14.5. Резюме 1040
Литература 1040
Упражнения 1041

Форматы графических файлов 1042
15.1. Конфигурации файлов изображения 1043
15.2. Методы снижения цветности 1045
Равномерное снижение цветности 1045
Снижение цветности по популярности 1046
Медианное сокращение цветности 1046
15.3. Методы сжатия файлов 1047
Групповое кодирование 1048
Кодирование LZW 1048
Другие методы сжатия на основе распознавания шаблонов 1049
Кодирование Хаффмана 1049
Арифметическое кодирование 1053
Дискретное косинус-преобразование 1055
15.4. Формат основного файла 1057
Стандарт JPEG (Joint Photographic Experts Group) 1058
CGM — метафайл компьютерной графики 1060
TIFF — теговый формат файлов изображений 1060
PNG — формат переносимой сетевой графики 1061
ХВМ — битовый формат системы X Window и ХРМ — пиксельный формат системы X Window 1061
Формат Adobe Photoshop 1062
MacPaint — формат Macintosh Paint 1062
PICT — формат данных изображения 1062
BMP — формат битового отображения 1063
PCX — файловый формат Paintbrush 1063
TGA — формат графических адаптеров Truevision 1063
GIF — формат графического обмена 1064
15.5. Резюме 1064
Литература 1065
Упражнения 1065

Математика компьютерной графики 1067
А.1. Координатные системы отсчета 1067
Двухмерные декартовы экранные координаты 1067
Стандартные двухмерные декартовы системы отсчета 1068
Полярные координаты на плоскости х-у 1068
Стандартные трехмерные декартовы системы координат 1070
Трехмерные декартовы экранные координаты 1071
Трехмерные криволинейные системы координат 1071
Телесный угол 1073

А.2. Точки и векторы 1074
Свойства точки 1074
Свойства вектора 1074
Сложение векторов и умножение на скаляр 1076
Скалярное произведение двух векторов 1077
Векторное произведение двух векторов 1078
А.З. Тензоры 1079
А.4. Базисные векторы и метрический тензор 1080
Определение базисных векторов в координатном пространстве 1080
Ортонормированный базис 1081
Метрический тензор 1082
А.5. Матрицы 1083
Умножение на скаляр и сложение матриц 1084
Умножение матриц 1085
Транспонирование матрицы 1086
Детерминант матрицы 1086
Обратная матрица 1087
А.6. Комплексные числа 1088
Основы комплексной арифметики 1089
Мнимая единица 1089
Комплексно-сопряженное число и модуль комплексного числа 1090
Комплексное деление 1090
Представление комплексного числа в полярных координатах 1091
А. 7. Кватернионы 1091
А.8. Непараметрические представления 1093
А.9. Параметрические представления 1094
А. 10. Операторы скорости изменения 1095
Градиент 1096
Производная по направлению 1097
Общая форма оператора градиента 1097
Оператор Лапласа 1097
Оператор дивергенции 1098
Оператор ротора 1099
А.11. Теоремы об интегральном преобразовании операторов скорости изменения 1099
Теорема Стокса 1100
Теорема Грина для плоской поверхности 1101
Теорема о дивергенции (Гаусса-Остроградского) 1102
Уравнения Грина 1103
А. 12. Площадь и центр масс многоугольника 1103
Площадь многоугольника 1104
Центр тяжести многоугольника 1104
А. 13. Расчет свойств многогранника 1106
А. 14. Численные методы 1107
Решение систем линейных уравнений 1107
Поиск корней нелинейных уравнений 1110
Вычисление интегралов 1112
Решение обычных дифференциальных уравнений 1114
Решение уравнений в частных производных 1116
Аппроксимация наборов данных методом наименьших квадратов 1117
Литература 1119
Предметный указатель 1144
Алфавитный указатель функций OpenGL 1155

ISBN 5-8459-0772-1 (рус.)