
- •Оглавление
- •Глава 1. Основные понятия………………………………………………….……………….6
- •Глава 2. Координаты и преобразования…………………………………………………...13
- •Глава 3. Растровая графика. Базовые растровые алгоритмы……………………… 37
- •Глава 4. Векторная графика…………………………………………………………….…..78
- •Глава 5. Фрактальная графика……………………………………………………………..91
- •Глава 6. Цветовые модели компьютерной графики………………………………….…97
- •Глава 7. Методы и алгоритмы построения сложных трехмерных объектов……. 137
- •Глава 9. Архитектуры графических систем …………………………………………. 181
- •Глава 10. Стандартизация в компьютерной графике……………………………….….189
- •Глава 11. Форматы графических файлов……………………………………………..…205
- •Глава 1. Основные понятия
- •1.1 Разновидности компьютерной графики
- •Полиграфия
- •Мультимедиа
- •Сапр и деловая графика
- •Пользо-
- •Геоинформационные системы (гис)
- •1.2. Принципы организации графических программ
- •Растровые программы
- •Векторные программы
- •Фрактальные программы
- •Глава 2. Координаты и преобразования
- •2.1 Координатный метод
- •2.1.1. Преобразование координат
- •Простейшие двумерные преобразования
- •Однородные координаты и матричное представление двумерных преобразований
- •Композиция двумерных преобразований
- •Матричное представление трехмерных преобразований
- •Композиция трехмерных преобразований
- •Преобразование объектов
- •Преобразование как изменение систем координат
- •Проекции
- •Мировые и экранные координаты
- •Основные типы проекций
- •Глава 3. Растровая графика. Базовые растровые алгоритмы
- •3.1 Растровые изображения и их основные характеристики
- •Вывод изображений на растровые устройства
- •Методы улучшения растровых изображений
- •Устранение ступенчатого эффекта
- •Дизеринг
- •Диагональное расположение ячеек 5x5
- •Диагональные структуры: а - сдвиг строк ячеек, б - ячейки другого типа
- •Набор чм-ячеек 5x5
- •3.4. Базовые растровые алгоритмы Алгоритмы вывода прямой линии
- •Инкрементные алгоритмы
- •Кривая Безье
- •Алгоритмы вывода фигур
- •Алгоритмы закрашивания
- •Стиль заполнения
- •Инструменты растровых графических пакетов
- •Инструменты выделения. Каналы и маски
- •Выделение
- •Инструменты выделения и маскирования
- •Гистограммы
- •Тоновая коррекция изображения
- •Уровни (Levels)
- •Цветовая коррекция и цветовой баланс
- •Фильтры (Plug-ins) и спецэффекты (Effects)
- •Преимущества и недостатки растровой графики
- •Глава 4. Векторная графика
- •Средства создания векторных изображений
- •Математические основы векторной графики
- •Достоинства и недостатки векторной графики
- •Глава 5. Фрактальная графика
- •Математика фракталов. Алгоритмы фрактального сжатия изображений
- •Обзор основных фрактальных программ
- •Глава 6. Цветовые модели компьютерной графики
- •6.1 Элементы цвета
- •Свет и цвет
- •Физическая природа света и цвета
- •Излученный и отраженный свет
- •Яркостная и цветовая информация
- •Цвет и окраска
- •Характеристики источника света
- •Стандартные источники
- •Особенности восприятия цвета человеком
- •Колбочки и палочки
- •Спектральная чувствительность глаза к яркости
- •Спектральная чувствительность наблюдателя
- •Цветовой и динамический диапазоны
- •Типы цветовых моделей
- •Аддитивные цветовые модели
- •Почему rgb-модель нравится компьютеру?
- •Ограничения rgb-модели
- •SRgb — стандартизированный вариант rgb-цветового пространства
- •Субтрактивные цветовые модели
- •Цветовая модель cmy
- •Ограничения модели cmyk
- •Возможности расширения цветового охвата cmyk
- •Технология HiFi Color
- •Использование плашечных цветов
- •Перцепционные цветовые модели
- •Достоинства и ограничения hsb-модели
- •Системы соответствия цветов и палитры
- •Системы соответствия цветов
- •Назначение эталона
- •Кодирование цвета. Палитра
- •Триадные и плашечные цвета
- •Цветовые режимы
- •Глава 10. Стандартизация в компьютерной графике
- •Международная деятельность по стандартизации в машинной графике
- •Деятельность iso, iec по стандартизации в машинной графике
- •Классификация стандартов
- •Графические протоколы
- •Аппаратно-зависимые графические протоколы
- •Протокол tektronix
- •Протокол regis
- •Протокол hp-gl
- •Языки описания страниц
- •Язык PostScript
- •Язык pcl
- •Аппаратно-независимые графические протоколы
- •Проблемно-ориентированные протоколы
Простейшие двумерные преобразования
Точки на xy-плоскости можно перенести в новые позиции путем добавления к координатам этих точек констант переноса. Для каждой точки Р(х, у), которая
перемещается в новую точку Р'(х, у), сдвигаясь на Dx единиц параллельно оси x и на Dy
единиц параллельно оси у, можно написать уравнения:
На рис. 2.1 показана точка с координатами (1, 2), которая смещается на расстояние (5, 7), преобразуясь в точку (6, 9). Определяя векторы-строки
можно переписать это уравнение в векторной форме или более кратко
Объект можно перенести, применяя вышевыведенное уравнения к каждой его точке. Однако, поскольку каждый отрезок, описывающий объект, состоит из бесконечного числа точек, такой процесс длился бы бесконечно долго. К счастью, все точки, принадлежащие отрезку, можно перенести путем перемещения одних лишь крайних точек отрезка и последующего вычерчивания нового отрезка между получившимися в результате точками. Это справедливо также для масштабирования (растяжения) и поворота. На рис.
показан результат действия на контур домика операции переноса на расстояние (3, -4).
Рис. 2.1 Простейший перенос
Точки можно промасштабировать (растянуть) в Sx раз вдоль оси x: и в Sy раз вдоль оси у, получив в результате новые точки, с помощью умножения
Определяя
S как
, можно
записать
в матричной
форме
или
На рис. 2.2 отдельная точка (6, 6) масштабируется с коэффициентами 1/2 по оси X и 1/3 по оси у. На этом же рисунке показан контур домика, промасштабированный с коэффициентами 1/2 по оси x и 1/4 по оси у. Отметим, что масштабирование производится относительно начала координат; в результате преобразования домик стал меньше и ближе к началу координат. Если бы масштабные множители были больше 1, то домик увеличился бы и отдалился от начала координат. Способы проведения масштабирования относительно других точек, отличных от начала координат, рассматриваются в одном из последующих разделов главы. Пропорции домика также изменились· было применено
неоднородное масштабирование, при котором Sх≠ Sу. Однородное масштабирование, для
которого Sx=Sy, не влияет на пропорции.
Точки могут быть повернуты на угол θ относительно начала координат, как показано на рис. 2.2 для точки Ρ (6, 1) и угла θ = 30°. Математически поворот определяется следующим образом:
В матричной форме мы имеем
или
где через R обозначена матрица поворота. На рис. 2.2 показан квадрат, повернутый на 45°. Как и в случае масштабирования, поворот производится относительно начала координат.
Рис. 2.2 Простейшие поворот и масштабирование
Однородные координаты и матричное представление двумерных преобразований
Преобразования переноса, масштабирования и поворота в матричной форме записываются в виде
К сожалению, перенос реализуется отдельно (с помощью сложения) от масштабирования и поворота (с помощью умножения). Хотелось бы представить их таким способом, чтобы все эти три элементарных преобразования можно было легко объединять вместе. Ниже в этом разделе показано, как это можно сделать.
Если мы выразим точки в однородных координатах, то все три преобразования
можно реализовать с помощью умножений. Однородные координаты были введены в геометрии и впоследствии использованы в графике. С однородными координатами и преобразованиями над ними работают многие пакеты графических подпрограмм и некоторые дисплейные процессоры. В одних случаях эти координаты используются прикладной программой непосредственно при задании параметров для графического пакета, в других — применяются лишь внутри самого пакета и недоступны для программиста.
В однородных координатах точка Р (х, у) записывается как P(W∙ x, W ∙ y, W) для любого масштабного множителя W≠0. При этом если для точки задано ее представление в
однородных координатах Р(Х, Y, W), то можно найти ее двумерные декартовы координаты
как x=X/W и y=Y/W. В этой главе W всегда будет равно 1, поэтому операция деления не
требуется. Однородные координаты можно представить как вложение промасштабированной с коэффициентом W двумерной плоскости в плоскость z=W (здесь z = 1) в трехмерном пространстве.
Точки теперь описываются трехэлементными вектор-строками, поэтому матрицы
преобразований, на которые умножается вектор точки, чтобы получить другой вектор точки, должны иметь размер 3x3. Уравнения переноса записываются в виде матрицы преобразования однородных координат следующим образом:
где
Теперь получим:
Действительно, результирующий перенос есть (Dx1+Dx2, Dy1+ Dy2). Матричное произведение в разных случаях называют объединением, соединением, конкатенацией и композицией матриц T(Dx1, Dy2) и T(Dx2, Dy2). В этой главе мы будем использовать термин композиция.
виде
Так же как последовательные переносы являются аддитивными, можно ожидать, что последовательные масштабирования будут мультипликативными. Если заданы
то получим:
Таким образом, масштабирования в самом деле мультипликативны. И, наконец, уравнения поворота можно представить в виде:
Полагая
Имеем