
- •Введение
- •Глава 7. Стандартизация в компьютерной графике 189
- •Глава 8. Форматы графических файлов 216
- •Глава 9. Технические средства кг (оборудование кг) 265
- •Г л а в а 1. Основные понятия
- •Разновидности компьютерной графики
- •1.2. Принципы организации графических программ
- •Г л а в а 2. Растровая графика. Базовые растровые алгоритмы
- •2.1. Растровые изображения и их основные характеристики
- •Разрешающая способность в зависимости от расстояния
- •2.2. Вывод изображений на растровые устройства
- •2.3. Методы улучшения растровых изображений
- •2.21. Диагональное расположение ячеек 5x5
- •2.4. Базовые растровые алгоритмы
- •Характеристики шейдерных возможностей видеоадаптеров
- •2.5. Инструменты растровых графических пакетов
- •2.6. Преимущества и недостатки растровой графики
- •Г л а в а 3. Ве кторная графика
- •3.1. Средства создания векторных изображений
- •3.2. Сравнение механизмов формирования изображений в растровой и векторной графике
- •3.3. Структура векторной иллюстрации
- •3.4. Математические основы векторной графики
- •3.5. Элементы (объекты) векторной графики
- •3.6. Достоинства и недостатки векторной графики
- •Г л а в а 4. Фрактальная графика
- •4.1. Математика фракталов. Алгоритмы фрактального сжатия изображений
- •4.2 Обзор основных фрактальных программ
- •Г л а в а 5. Цветовые модели компьютерной графики
- •5.1. Элементы цвета
- •5.1.1 Свет и цвет
- •5.1.2. Физическая природа света и цвета
- •5.1.3. Излученный и отраженный свет
- •5.1.4. Яркостная и цветовая информация
- •5.1.5. Цвет и окраска
- •5.2. Характеристики источника света
- •5.2.1. Стандартные источники
- •5.2.2 Особенности восприятия цвета человеком
- •5.3. Цветовой и динамический диапазоны
- •5.4. Типы цветовых моделей
- •5.4.1. Аддитивные цветовые модели
- •5.4.2. Субтрактивные цветовые модели
- •5.4.3. Перцепционные цветовые модели
- •5.4.4. Системы соответствия цветов и палитры
- •5.4.5. Триадные и плашечные цвета
- •5.4.6. Цветовые режимы
- •Г л а в а 6. Реалистическое представление сцен
- •6.1 Закрашивание поверхностей
- •6.1.1. Модели отражения света
- •6.1.2. Вычисление нормалей и углов отражения
- •6.2 Метод Гуро
- •6.3 Метод Фонга
- •6.4. Имитация микрорельефа
- •6.6. Пример имитации микрорельефа методом dot3 Bump Mapping
- •6.5 Трассировка лучей
- •6.6 Анимация
- •Глава 7. Стандартизация в компьютерной графике
- •7.2 Международная деятельность по стандартизации в машинной графике
- •7.3 Классификация стандартов
- •7.4 Графические протоколы
- •7.4.1 Аппаратно-зависимые графические протоколы
- •7.4.2 Языки описания страниц
- •7.4.3 Аппаратно-независимые графические протоколы
- •7.4.4 Проблемно-ориентированные протоколы
- •7.4.5 Растровые графические файлы
- •Глава 8. Форматы графических файлов
- •8.1 Векторные форматы
- •8.2 Растровые форматы
- •8.3 Методы сжатия графических данных
- •8.5. Форматы мультимедиа
- •8.6. Преобразование файлов из одного формата в другой
- •Глава 9. Технические средства кг (оборудование кг)
- •9.1 Видеоадаптеры
- •9.2 Манипуляторы
- •9.3 Оборудование мультимедиа
- •9.4 Мониторы
- •9.5 Видеобластеры
- •9.6 Периферия
- •9.6.1 Принтеры
- •9.6.2 Имиджсеттеры
- •9.6.3 Плоттеры
- •9.7 Модемы
- •9.8 Звуковые карты
- •9.9 Сканеры
- •Планшетные сканеры
- •9.10. Цифровые фотоаппараты и фотокамеры
- •Литература
4.1. Математика фракталов. Алгоритмы фрактального сжатия изображений
Как уже было сказано выше, фрактал можно определить как объект довольно сложной формы, которая получена в результате выполнения простого итерационного цикла. Итерационность, рекурсивность процедуры создания обуславливают такие свойства фракталов, как самоподобие - отдельные части похожи по форме на весь фрактал в целом. Приведем математическое описание «классических» или «математических» фракталов.
Фракталом Мандельброта названа фигура, которая порождается очень простым циклом. Для создания этого фрактала необходимо для каждой точки изображения выполнить цикл итераций в соответствии с формулой:
zk+1
=
+ z0
где k = 0, 1,..., п. Величины zk - это комплексные числа, zk = хk + iуk, причем стартовые значения х0 и у0 - это координаты точки изображения. Для каждой точки изображения итерации выполняются ограниченное количество раз (п) или до тех пор, пока модуль числа zk не превышает 2. Модуль комплексного числа равняется корню квадратному из х2 + у2. Для вычисления квадрата величины zk можно воспользоваться формулой z2 = (х + iy) (x + iy) = x2 - у2 + i2xy, поскольку i2 = - 1. Цикл итераций для фрактала Мандельброта можно выполнять в диапазоне x = (от -2. 2, до 1), у = (от -1. 2 до 1. 2). Для того чтобы получить изображение в растре, необходимо пересчитывать координаты этого диапазона в пиксельные.
Рис.4.1. Пример фрактального изображения
Фрактал Жулиа совсем не похож на фрактал Мандельброта, однако, он определяется итерационным циклом, почти полностью тождественным циклу генерации Мандельброта. Формула итераций для фрактала Жулиа такова:
zk+1 = +c
где с – комплексная константа.
Условием завершения итераций является | zk | > 2 - так же, как для фрактала Мандельброта.
Как видим, фрактал самоподобный – при любом увеличении отдельные части напоминают формы целого. Самоподобие считается важным свойством фракталов. Это отличает их от других типов объектов сложной формы.
Рассмотрим следующий пример фрактала - фрактал Ньютон. Для него итерационная формула имеет такой вид:
zk+1
=
где z – также комплексные числа, причем z0= x + iy соответствует координатам точки изображения.
Условием прекращения цикла итераций для фрактала Ньютон есть приближение значений |x4-1| к нулю.
Рассмотрим еще одну разновидность фракталов, названных геометрическими, поскольку их форма может быть описана как последовательность простых геометрических операций. Например, кривая Кох становится фракталом в результате бесконечного количества итераций, в ходе которых выполняется деление каждого отрезка прямой на три части. На рис. 4.2 показаны три итерации - постепенно линия становится похожей на снежинку.
Рис. 4.2. Геометрические интерпретации
для кривой Кох
Следующую группу составляют фракталы, которые генерируются согласно методу "систем итеративных функций" - IFS (Iterated Functions Systems). Этот метод может быть описан, как последовательный итеративный расчет координат новых точек в пространстве:
xk+1 = Fx(xk,yk),
yk+1 = Fy(xk,yk),
где Fx и Fy - функции преобразования координат, например, аффинного преобразования. Эти функции и обуславливают форму фрактала. В случае аффинного преобразования необходимо найти соответствующие числовые значения коэффициентов.
Рис. 4.3. Опорные точки элементов фрактала
Попробуем разработать фрактал, который выглядел бы, как растение. Вообразим ствол, на котором много веточек. На каждой веточке много меньших веточек и так далее. Наименьшие ветви можно считать листвой или колючками. Все элементы будем рисовать отрезками прямой. Каждый отрезок будет определяться двумя конечными точками.
Для начала итераций необходимо задать стартовые координаты концов отрезка. Это будут точки 1, 2. На каждом шаге итераций будем рассчитывать координаты других точек.
Сначала находим точку 3. Это повернутая на угол α точка 2, центр поворота - в точке 1 (рис. 4.3):
x3 = (x2 –x1) cos α – (y2 –y1) sin α + x1,
y3 = (x2 –x1) sin α + (y2 –y1) cos α + y1.
Если α = 0 , то ствол и все ветви прямые. Потом находим точку 4. От нее будут распространяться ветви. Пусть соотношение длин отрезков 1- 4 и 1 - 3 равняется k, причем 0 < k < 1. Тогда для вычисления координат точки 4 можно воспользоваться такими формулами:
x4 = x1 (1-k) + x3 k,
y4 = y1 (1-k) + y3 k.
Теперь зададим длину и угол наклона ветвей, которые растут из точки 4. Сначала найдем координаты точки 5. Введем еще один параметр - k1, который будет определять соотношение длин отрезков 4-5 и 4-3, причем 0 < kl < 1. Координаты точки 5 равняются
x5 = x4 (1-k1) + x3 k1,
y5 = y4 (1-k1) + y3 k1.
Точки 6 и 7 - это точка 5, но повернутая относительно точки 4 на углы β и - β соответственно:
x6 = (x5 –x4) cos β – (y5 –y4) sin β + x4,
y6 = (x5 –x4) sin β + (y5 –y4)cojs β + y4,
x7 = (x5 –x4) cos β + (y5 –y4) sin β + y4,
y7 = (x5 –x4) sin β + (y5 –y4) cos β + y4,
Кроме расчета опорных точек, на каждом шаге будем рисовать один отрезок 1 - 4. В зависимости от номера итераций можно изменять цвет отрезка. Также можно устанавливать его толщину, например, пропорционально длине.
Таким образом, фрактал мы определили как последовательность аффинных преобразований координат точек. Величины а, β, к, k1 - это параметры, которые описывают вид фрактала в целом. Они являются константами на протяжении всего итеративного процесса. Это дает возможность в итерациях использовать только операции сложения, вычитания и умножения, если вычислить значения sin(), cos(), (1 - к) и (1 - k1) только один раз перед началом итераций как коэффициенты-константы.
Фрактал при α = 2°, β = 86°, к = 0. 14, k1 = 0. 3 похож на папоротник.
Рис. 4.4. Вид фрактала для разного количества циклов итераций