Глава 1. Рисование в Delphi
9
1.1. Моделирование цветов 9
1.2. Полотно компонентов 10
1.3. Пример использования графики 11
1.4. Мультимедийные ресурсы Windows 17
Глава 2. Модуль Graphics и специальные приемы рисования
19
2.1. Структура классов 19
2.2. Цвет 22
2.3. Цветовые модели 24
2.3.1. Модель RGB 24
2.3.2. Модель CMY 25
2.3.3. Модель CMYK 26
2.3.4. Модели HSB и HSV 27
2.3.5. Модель Lab 28
2.4. Проект "Цветовые модели" 28
2.4.1. Процедуры для модели RGB 29
2.4.2. Процедуры для модели HSV 30
2.4.3. Процедуры для модели HSI 32
2.5. Класс TFont 34
2.6. Класс TPen 39
2.7. Класс TBrush 43
2.8. Класс TCanvas 46
2.9. Методы канвы 49
2.10. Чтение данных из текстового файла 62
2.11. Вывод строки под углом 66
2.11.1. Установка угла для печати строки 66
2.11.2. Тип логического шрифта 68
2.12. Рисование на экране 73
Глава 3. Графические классы
77
3.1. Класс TGraphic 77
3.2. Класс TPicture 83
3.3. Класс TBitmap 86
3.4. Класс TMetafile 92
3.5. Класс TIcon 94
3.6. Функции для работы с графикой 95
3.7. Класс TImage 101
3.8. Класс TJPEGImage 105
3.9. Класс TPrinter 110
3.10. Заключение 116
Глава 4. Мультимедиа
117
4.1. Компонент Animate 118
4.2. Компонент MediaPlayer 124
4.3. Проект с использованием компонента MediaPlayer 154
4.4. Процедуры воспроизведения звуков Веер, MessageBeep и PlaySound 158
4.5. Интерфейс управления мультимедийными устройствами — MCI 161
4.5.1. Проект "Консольное выполнение команд MCI" 163
4.5.2. Проект "Проигрыватель аудио-CD". 168
4.5.3. Проект "Запись звука с использованием команд MCI" 174
4.6. Программирование мультимедийных приложений с использованием WinAPI 175
4.6.1. Структура RIFF-файла 176
4.6.2. Проект "Низкоуровневое чтение файла" 180
4.6.3. Проект "Низкоуровневое воспроизведение файла" 183
Глава 5. Компоненты диаграмм библиотеки TeeChart
189
5.1. Деловая графика 189
5.2. Подготовка к работе 191
5.3. Создание новой диаграммы с компонентом TChart или TDBChart 195
5.4. Соединение диаграммы с разными типами данных 201
5.5. Свойства компонента TChart 203
5.6. Типы Series 204
5.6.1. Серии Line и Fast Line 204
5.6.2. Серия Bar 205
5.6.3. Серия Horizontal Bar 210
5.6.4. Серия Area 211
5.6.5. Серия Point 212
5.6.6. Серия Pie 212
5.6.7. Серия Arrow 213
5.6.8. Серия Bubble 214
5.6.9. Серия Gantt 215
5.6.10. Серия Shape 216
5.6.11. Комбинированные серии 218
5.7. Функции для вычисляемых серий 219
5.7.1. Функция TAddTeeFunction 221
5.7.2. Функция TSubtractTeeFunction 222
5.7.3. Функция TMultiplyTeeFunction 222
5.7.4. Функция TDivideTeeFunction 224
5.7.5. Функция THighTeeFunction 224
5.7.6. Функция TLowTeeFunction 224
5.7.7. Функция TAverageTeeFunction 226
5.8. Особенности разработки приложений, использующих диаграммы 226
5.8.1. Обработка событий нажатия кнопок 226
5.8.2. Рисование на диаграмме 228
5.8.3. Работа с осями 233
5.8.4. Действия с сериями 236
5.8.5. Изменение масштаба изображения 241
5.8.6. Особенности разработки проектов, работающих в реальном масштабе времени 244
5.9. Проект с использованием диаграмм 245
5.9.1. Генерация данных и добавление серий 247
5.9.2. Изменение свойств серии 250
5.9.3. Изменение общих свойств диаграммы 251
5.9.4. Изменение 3D-свойств диаграммы 251
Глава 6. Алгоритмы компьютерной графики
253
6.1. Задачи компьютерной графики 253
6.2. Классификация алгоритмов 254
6.3. Построение растровых изображений 255
6.3.1. Алгоритм Брезенхейма для отрезка прямой 257
6.3.2. Алгоритм Брезенхейма для окружности 261
6.3.3. Экранная система координат 263
6.3.4. Проект "Алгоритмы Брезенхейма" 264
6.4. Геометрические основы компьютерной графики 278
6.4.1. Графические элементы на плоскости 279
6.4.2. Графические элементы в пространстве 281
6.5. Задачи интерполяции, сглаживания и аппроксимации 284
6.5.1. Интерполяция полиномами 284
6.5.2. Интерполяция кубическими сплайнами 286
6.5.3. Сглаживание и аппроксимация 287
6.6. Аффинные преобразования координат 291
6.6.1. Аффинные преобразования на плоскости 291
6.6.2. Аффинные преобразования в пространстве 297
6.7. Проецирование 301
6.7.1. Ортографическое проецирование 303
6.7.2. Аксонометрическое проецирование 304
6.7.3. Косоугольное проецирование 307
6.7.4. Центральное проецирование 308
6.7.5. Проект "Проекции" 312
6.8. Моделирование трехмерных тел 321
6.8.1. Каркасные модели 322
6.8.2. Граничные модели 323
6.8.3. Сплошные модели 323
6.9. Освещение 325
6.10. Моделирование цвета 327
6.11. Удаление невидимых ребер и граней 328
Глава 7. Простые графические проекты
331
7.1. Просмотр файлов BMP, ICO, WMF, EMF и JPG 332
7.2. Мультипликация 335
7.2.1. Сортировка элементов массива 336
7.2.2. Морфинг 339
7.2.3. Падение мяча 344
7.2.4. Велосипед 347
7.3. Рисование на канве принтера 352
7.4. Векторный стиль линии 353
7.4.1. Рисование линии стандартными способами 355
7.4.2. Применение векторного стиля линии 355
7.4.3. Проект "Рисование линии произвольным стилем" 360
7.5. Деформация изображений 364
7.6. Растровый редактор 370
7.7. Проектирование плоских схем 379
7.7.1. Структура данных 380
7.7.2. Структура проекта 383
7.7.3. Добавление нового объекта в эскиз 387
7.7.4. Перемещение объектов и линий связи на эскизе 389
7.7.5. Удаление объектов и линий связи на эскизе 395
7.8. Редактирование графа 396
7.8.1. Структура данных 398
7.8.2. Изображение графов 399
7.8.3. Чтение и запись графов 400
7.9. Проект газификации домов 402
7.9.1. Структура проекта 404
7.9.2. Структура данных 405
7.9.3. Рисование эскиза газификации дома 406
Глава 8. Векторный редактор
411
8.1. Структура данных 412
8.2. Масштабирование 414
8.3. Кривые Безье 417
8.4. Создание объектов 418
8.5. Перемещение объектов 422
8.6. Поворот объектов 426
8.7. Перемещение точек 427
8.8. Прорисовка объектов 428
8.9. Печать 430
8.10. Запись и чтение данных 430
Глава 9. Графики функций
437
9.1. График функции одной переменной 437
9.2. График функции двух переменных 444
9.3. Интерполяция функций 453
9.3.1. Проект "Построение интерполяционных кривых" 454
9.3.2. Интерполяционный многочлен Лагранжа 459
9.3.3. Метод наименьших квадратов 461
9.3.4. Кубические сплайны 464
9.3.5. Кривые Безье 469
9.4. Параметрические кривые 470
9.5. Построение графика функции с помощью интерпретатора 473
9.5.1. Структура данных 473
9.5.2. Анализ строки 476
9.5.3. Вычисление переменной 485
Глава 10. Визуальный генератор отчетов
489
10.1. Постановка задачи 489
10.2. Описание структуры данных 491
10.3. Структура проекта 494
10.4. Рисование страницы эскиза 496
10.5. Добавление объектов 503
10.6. Редактирование объектов 507
10.7. Перемещение объектов 510
10.8. Изменение размеров объектов 511
10.9. Печать отчета 513
10.10. Заключение 515
Глава 11. Геометрия трехмерных тел
517
11.1. Платоновы тела 517
11.1.1. Построение платоновых тел 518
11.1.2. Проект "Платоновы тела" 519
11.2. Квадратичные поверхности 535
11.2.1. Уравнения квадратичных поверхностей в явной форме 535
11.2.2. Параметрическое представление квадратичных поверхностей 537
11.2.3. Проект "Квадратичные поверхности" 539
11.3. Построение тела по трем проекциям 545
11.4. Бинарные операции с многоугольниками 552
Глава 12. Графические редакторы трехмерных тел
563
12.1. Упрощенный проект "Редактор многогранников" 563
12.1.1. Описание проекта 563
12.1.2. Чтение и запись данных 566
12.1.3. Анализ данных и рисование 569
12.1.4. Новый многогранник 574
12.1.5. Добавление вершины 575
12.1.6. Переключение инструментов 577
12.1.7. Выравнивание дочерних окон 578
12.1.8. Нажатие кнопки мыши на дочерних формах 579
12.1.9. Обработка перемещения указателя мыши на формах 581
12.2. Редактор для топологически связанных трехмерных тел 584
12.2.1. Структура данных 584
12.2.2. Структура данных проекта 584
12.2.3. Трехмерный редактор многогранников 587
12.2.4. Пересечение двух тел 591
12.2.5. Создание нового тела 600
Глава 13. Использование графической библиотеки OpenGL
611
13.1. Введение 611
13.2. Установка и завершение работы с OpenGL 614
13.2.1. Получение дескриптора контекста воспроизведения 615
13.2.2. Установка формата пикселов 615
13.2.3. Инициализация библиотеки OpenGL 619
13.2.4. Завершение работы с OpenGL 621
13.3. Команды и примитивы OpenGL 621
13.3.1. Синтаксис команд 621
13.3.2. Вершины 622
13.3.3. Примитивы 623
13.4. Плоская графика 624
13.5. Трехмерная графика 628
13.5.1. Инициализация OpenGL 629
13.5.2. Многогранники модуля DGLUT 630
13.5.3. Списки команд 633
13.5.4. Изображение квадратичных поверхностей 635
13.5.5. Изображение поверхности, заданной табличным способом 637
13.6. Геометрические преобразования 640
13.7. Цвет, освещение, свойства материала 643
13.7.1. Цвет 644
13.7.2. Нормали 645
13.7.3. Свойства материала 645
13.7.4. Источники света 647
13.8. Текстура 648
13.8.1. Назначение точки карты текстуры вершине 649
13.8.2. Задание параметров текстуры 649
13.8.3. Создание двумерной карты текстуры 652
13.8.4. Включение режима наложения текстуры 654
13.8.5. Текстура на сфере, конусе и чайнике 654
13.8.6. Привязка текстуры к многоугольникам 656
13.8.7. Текстура на поверхности, заданной табличным способом 657
13.9. Чтение данных из текстового файла 660
13.10. Проект "Редактор многогранников" 664
Глава
14
. Алгоритмы триангуляции поверхностей в трехмерном пространстве 673
14.1. Триангуляция поверхности 673
14.1.1. Алгоритмы триангуляции 675
14.1.2. Структура данных 679
14.1.3. Реализация алгоритма 681
14.1.4. Удаление "лишних" треугольников 688
14.2. Триангуляция всех слоев участка 689
14.2.1. Структура данных 690
14.2.2. Алгоритм построения триангуляции слоев 692
14.3. Сглаживание триангуляции 697
14.3.1. Структура данных 698
14.3.2. Бикубическая поверхность Безье 699
14.3.3. Вспомогательные функции 700
14.3.4. Алгоритм сглаживания триангуляции 702
14.4. Триангуляция боковой поверхности слоя 715
14.4.1. Структура данных 716
14.4.2. Алгоритм определения номеров граничных точек 716
14.4.3. Построение треугольников боковой поверхности 723
14.5. Триангуляция невыпуклого многоугольника 724
14.6. Изолинии 728
Приложения 735
Приложение 1. Задания для самостоятельной работы 737
Задания по темам главы 3 737
Задания по темам главы 4 737
Задания по темам "Компонент Animate", "Процедуры воспроизведения звуков Веер, MessageBeep и PlaySound " 737
Задания по теме "Компонент TMediaPlayer" 739
Задания по теме "Интерфейс управления мультимедийными устройствами – MCI" 740
Задания по теме "Программирование мультимедийных приложений с использованием WinAPI" 742
Задания по темам главы 6 743
Задания по темам главы 7 743
Задания по темам главы 9 744
Задания по темам главы 11 744
Задания по темам главы 12 745
Приложение 2. Описание прилагаемого компакт-диска 749