Книга написана на базе курса лекций, читаемых авторами. Рассмотрены основные классы и функции среды Delphi, которые используются для создания графических и мультимедийных приложений. Описаны цветовые модели, основные форматы графических файлов, а также методы построения кривых в задачах интерполяции, сглаживания, аппроксимации, методы Эрмита, Безье и В-сплайнов. Приведены алгоритмы триангуляции поверхностей в трехмерном пространстве. На конкретных примерах показан весь процесс разработки основных типов приложений — пакетов деловой графики, работы с трехмерными объектами, растровых и векторных графических редакторов, геоинформационных систем. Каждый раздел сопровождается задачами различной сложности для самостоятельного решения. На прилагаемом компакт-диске представлено более 30 проектов, описанных в книге.
Введение
Глава 1. Рисование в Delphi
1.1. Моделирование цветов
1.2. Полотно компонентов
1.3. Пример использования графики
1.4. Мультимедийные ресурсы Windows
Глава 2. Модуль Graphics и специальные приемы рисования
2.1. Структура классов
2.2. Цвет
2.3. Цветовые модели
2.3.1. Модель RGB
2.3.2. Модель CMY
2.3.3. Модель CMYK
2.3.4. Модели HSB и HSV
2.3.5. Модель Lab
2.4. Проект "Цветовые модели"
2.4.1. Процедуры для модели RGB
2.4.2. Процедуры для модели HSV
2.4.3. Процедуры для модели HS1
2.5. Класс TFont
2.6. Класс ТРеп
2.7. Класс ТBrush
2.8. Класс TCanvas
2.9. Методы канвы
2.10. Чтение данных из текстового файла
2.11. Вывод строки под углом
2.11.1. Установка угла для печати строки
2.11.2. Тип логического шрифта
2.12. Рисование на экране
Глава 3. Графические классы
3.1. Класс TGraphic
3.2. Класс TPiclure
3.3. Класс TBitmap
3.4. Класс TMetafde
3.5. Класс TIcon
3.6. Функции для работы с графикой
3.7. Класс Tlmage
3.8. Класс TJPEGImage
3.9. Класс ТPrinter
3.10. Заключение
Глава 4. Мультимедиа
4.1. Компонент Animate
4.2. Компонент MediaPlayer
4.3. Проекте использованием компонента MediaPlayer
4.4. Процедуры воспроизведения звуков Веер, MessageBeep и PlaySound
4.5. Интерфейс управления мультимедийными устройствами — МС1
4.5.1. Проект "Консольное выполнение команд МСЛ"
4.5.2. Проект "Проигрыватель аудио-CD"
4.5.3. Проект "Запись звука с использованием команд MCI"
4.6. Программирование мультимедийных приложений с использованием WinAPl
4.6.1. Структура RIFF-файла
4.6.2. Проект "Низкоуровневое чтение файла"
4.6.3. Проект "Низкоуровневое воспроизведение файла"
Глава 5. Компоненты диаграмм библиотеки teeCuart
5.1. Деловая графика
5.2. Подготовка к работе
5.3. Создание новой диаграммы с компонентом TCharl или TDBChart.......
5.4. Соединение диаграммы с разными типами данных
5.5. Свойства компонента TChart
5.6. Типы Series
5.6.1. Серии Line и Fast Line
5.6.2. Серия Bar
5.6.3. Серия Horizontal Bar
5.6.4. Серия Area
5.6.5. Серия Point
5.6.6. Серия Pie
5.6.7. Серия Arrow
5.6.8. Серия Bubble
5.6.9. Серия Gantt
5.6.10. Серия Shape
5.6.11. Комбинированные серии
5.7. Функции для вычисляемых серий
5.7.1. Функция TAddTeeFunction
5.7.2. Функция TSubtractTeeFunclion
5.7.3. Функция TMulliplyTeeFunction
5.7.4. Функция TDivideTeeFunctio
5.7.5. Функция THighTeeFunction
5.7.6. Функция TLowTeeFunction
5.7.7. Функция TAverageTeeFunction
5.8. Особенности разработки приложений, использующих диаграммы
5.8.1. Обработка событий нажатия кнопок
5.8.2. Рисование на диаграмме
5.8.3. Работа с осями
5.8.4. Действия с сериями
5.8.5. Изменение масштаба изображения
5.8.6. Особенности разработки проектов, работающих в реальном масштабе времени
5.9. Проект с использованием диаграмм
5.9.1. Генерация данных и добавление серий
5.9.2. Изменение свойств серии
5.9.3. Изменение общих свойств диаграммы
5.9.4. Изменение 3D-cbohctb диаграммы
Глава 6. Алгоритмы компьютерной графики
6.1. Задачи компьютерной графики
6.2. Классификация алгоритмов
6.3. Построение растровых изображений
6.3.1. Алгоритм Брезенхейма для отрезка прямой
6.3.2. Алгоритм Брезенхейма для окружности
6.3.3. Экранная система координат
6.3.4. Проект "Алгоритмы Брезенхейма"
6.4. Геометрические основы компьютерной графики
6.4.1. Графические элементы на плоскости
6.4.2. Графические элементы в пространстве
6.5. Задачи интерполяции, сглаживания и аппроксимации
6.5.1. Интерполяция полиномами
6.5.2. Интерполяция кубическими сплайнами
6.5.3. Сглаживание и аппроксимация
6.6. Аффинные преобразования координат
6.6.1. Аффинные преобразования на плоскости
6.6.2. Аффинные преобразования в пространстве
6.7. Проецирование
6.7.1. Ортографическое проецирование
6.7.2. Аксонометрическое проецирование
6.7.3. Косоугольноепроецирование
6.7.4. Центральное проецирование
6.7.5. Проект "Проекции"
6.8. Моделирование трехмерных тел
6.8.1. Каркасные модели
6.8.2. Граничные модели
6.8.3. Сплошные модели
6.9. Освещение
6.10. Моделирование цвета
6.11. Удаление невидимых ребер и граней
Глава 7. Простые графические проекты
7.1. Просмотр файлов BMP, ICO, WMF, EMF и JPG
7.2. Мультипликация
7.2.1. Сортировка элементов массива
7.2.2. Морфинг
7.2.3. Падение мяча
7.2.4. Велосипед
7.3. Рисование на канве принтера
7.4. Векторный стиль линии
7.4.1. Рисование линии стандартными способами
7.4.2. Применение векторного стиля линии
7.4.3. Проект "Рисование линии произвольным стилем"
7.5. Деформация изображений
7.6. Растровый редактор
7.7. Проектирование плоских схем
7.7.1. Структура данных
7.7.2. Структура проекта
7.7.3. Добавление нового объекта в эскиз
7.7.4. Перемещение объектов и линий связи на эскизе
7.7.5. Удаление объектов и линий связи на эскизе
7.8. Редактирование графа
7.8.1. Структура данных
7.8.2. Изображение графов
7.8.3. Чтение и запись графов
7.9. Проект газификации домов
7.9.1. Структура проекта
7.9.2. Структура данных
7.9.3. Рисование эскиза газификации дома
Глава 8. Векторный редактор
8.1. Структура данных
8.2. Масштабирование
8.3. Кривые Безье
8.4. Создание объектов
8.5. Перемещение объектов
8.6. Поворот объектов
8.7. Перемещение точек
8.8. Прорисовка объектов
8.9. Печать
8.10. Запись и чтение данных
Глава 9. Графики функции
9.1. График функции одной переменной
9.2. График функции двух переменных
9.3. Интерполяция функций
9.3.1. Проект "Построение интерполяционных кривых"
9.3.2. Интерполяционный многочлен Лагранжа
9.3.3. Метод наименьших квадратов
9.3.4. Кубические сплайны
9.3.5. Кривые Безье
9.4. Параметрические кривые
9.5. Построение графика функции с помощью интерпретатора
9.5.1. Структура данных
9.5.2. Анализ строки
9.5.3. Вычисление переменной
Глава 10. Визуальный генератор отчетов
10.1. Постановка задачи
10.2. Описание структуры данных
10.3. Структура проекта
10.4. Рисование страницы эскиза
10.5. Добавление объектов
10.6. Редактирование объектов
10.7. Перемещение объектов
10.8. Изменение размеров объектов
10.9. Печать отчета
10.10. Заключение
Глава 11. Геометрия трехмерных тел
11.1. Платоновы тела
11.1.1. Построение Платоновых тел
11.1.2. Проект "Платоновы тела"
11.2. Квадратичные поверхности
11.2.1. Уравнения квадратичных поверхностей в явной форме
11.2.2. Параметрическое представление квадратичных поверхностей
11.2.3. Проект "Квадратичные поверхности"
11.3. Построение тела по трем проекциям
Глава 12. Графические редакторы трехмерных тел
12.1. Упрощенный проект "Редактор многогранников"
12.1.1. Описание проекта
12.1.2. Чтение и запись данных
12.1.3. Анализ данных и рисование
12.1.4. Новый многогранник
12.1.5. Добавление вершины
12.1.6. Переключение инструментов
12.1.7. Выравнивание дочерних окон
12.1.8. Нажатие кнопки мыши на дочерних формах
12.1.9. Обработка перемещения указателя мыши на формах
12.2. Редактор для топологически связанных трехмерных тел.
12.2.1. Структура данных
12.2.2. Структура данных проекта
12.2.3. Трехмерный редактор многогранников
12.2.4. Пересечение двух тел
12.2.5. Создание нового тела
Глава 13. Использование графической библиотеки OpenGL
13.1. Введение
13.2. Установка и завершение работы с OpenGL
13.2.1. Получение дескриптора контекста воспроизведения
13.2.2. Установка формата пикселов
13.2.3. Инициализация библиотеки OpenGL
13.2.4. Завершение работы с OpenGL
13.3. Команды и примитивы OpenGL
13.3.1. Синтаксис команд
13.3.2. Вершины
13.3.3. Примитивы
13.4. Плоская графика
13.5. Трехмерная графика
13.5.1. Инициализация OpenGL
13.5.2. Многогранники модуля DGLUT
13.5.3. Списки команд
13.5.4. Изображение квадратичных поверхностей
13.5.5. Изображение поверхности, заданной табличным способом
13.6. Геометрические преобразования
13.7. Цвет, освещение, свойства материала
13.7.1. Цвет
13.7.2. Нормали
13.7.3. Свойства материала
13.7.4. Источники света
13.8. Текстура
13.8.1. Назначение точки карты текстуры вершине
13.8.2. Задание параметров текстуры
13.8.3. Создание двумерной карты текстуры
13.8.4. Включение режима наложения текстуры
13.8.5. Текстура на сфере, конусе и чайнике
13.8.6. Привязка текстуры к многоугольникам
13.8.7. Текстура на поверхности, заданной табличным способом
13.9. Чтение данных из текстового файла
13.10. Проект "Редактор многогранников"
Глава 14. Алгоритмы триангуляции поверхностей в трехмерном пространстве
14.1. Триангуляция поверхности
14.1.1. Алгоритмы триангуляции
14.1.2. Структура данных
14.1.3. Реализация алгоритма
14.1.4. Удаление "лишних" треугольников
14.2. Триангуляция всех слоев участка
14.2.1. Структура данных
14.2.2. Алгоритм построения триангуляции слоев
14.3. Сглаживание триангуляции
14.3.1. Структура данных
14.3.2. Бикубическая поверхность Безье
14.3.3. Вспомогательные функции
14.3.4. Алгоритм сглаживания триангуляции
14.4. Триангуляция боковой поверхности слоя
14.4.1. Структура данных
14.4.2. Алгоритм определения номеров граничных точек
14.4.3. Построение треугольников боковой поверхности
14.5. Триангуляция невыпуклого многоугольника
14.6. Изолинии
Приложения
Приложение 1. Задания для самостоятельной работы
Задания по темам главы 3
Задания по темам главы 4
Задания по темам "Компонент Animate", "Процедуры воспроизведения звуков Веер, MessageBeep и PlaySound"
Задания по теме "Компонент TMediaPlayer"
Задания по теме "Интерфейс управления мультимедийными устройствами - МСЛ"
Задания по теме "Программирование мультимедийных приложений с использованием WinAPI"
Задания по темам главы 6
Задания по темам главы 7
Задания по темам главы 9
Задания по темам главы 11
Задания по темам главы 12
Приложение 2. Описание прилагаемого компакт-диска
Список литературы
Предметный указатель