В лесах фрактальной графики
Фракталы привлекают внимание, завораживают, гипнотизируют. Однако многие считают, что такие изображения — просто узоры, которые хороши лишь на экране монитора или в качестве прикладных вспомогательных средств для оформления различной полиграфической продукции. При этом мало кто догадывается, что простота эта только кажущаяся. На самом деле фрактальная графика довольно сложна и является результатом слияния математики и искусства. Сегодня фракталы — один из самых перспективных, быстро развивающихся видов компьютерной графики.
Прежде чем перейти к рассмотрению фрактальной графики, рассмотрим, в чем суть компьютерной, или «машинной», графики, а также общепринятую классификацию компьютерной графики (Computer Graphics, CG). Это понятие появилось относительно недавно, в 60х годах прошлого столетия, когда были изобретены электронные вычислительные устройства. Термин «компьютерная графика» трактуется в различных источниках поразному. Некоторые определяют его как область информатики, занимающуюся вопросами получения различных изображений (рисунков, чертежей, мультипликации) на компьютере. Компьютерная графика охватывает все виды и формы представления изображений, доступные для человеческого восприятия на экране монитора или в виде копии на внешнем носителе (бумаге, ткани, кинопленке и т.п.). В других источниках компьютерная графика называется специальной областью информатики, изучающей методы и средства создания и обработки изображений с помощью программноаппаратных вычислительных комплексов.
В широком смысле слова компьютерная графика — это всё, для чего используется визуальная, образная среда отображения на мониторе. Если сузить понятие до практического использования, то под компьютерной графикой можно подразумевать процесс создания, обработки и вывода разного рода изображений с помощью компьютера.
В зависимости от способа формирования изображений компьютерная графика делится на растровую, векторную и фрактальную (рис. 1).
Основным и наименьшим элементом растрового изображения является точка. Когда изображение находится в программной среде на экране, она называется пикселом. Каждый пиксел растрового изображения имеет две характеристики: размещение и цвет. Чем больше количество пикселов и меньше их размеры, тем лучше выглядит изображение. Большие объемы данных — это основная проблема при использовании растровых изображений. Второй недостаток растровых изображений связан с невозможностью их увеличения для рассмотрения деталей. Поскольку изображение состоит из точек, увеличение изображения приводит к тому, что эти точки становятся крупнее и напоминают мозаику, а следовательно, дополнительных деталей в этом случае рассмотреть не удается. Более того, увеличение точек растра визуально искажает изображение и делает его зернистым. Этот эффект называется пикселизацией.
Рис. 1. Типы компьютерной графики: а — растровая; б — векторная; в — фрактальная
В векторной графике основным элементом изображения является линия (не важно, прямая или кривая). Разумеется, в растровой графике тоже существуют линии, но там они рассматриваются как комбинации точек. Для каждой точки линии в растровой графике отводится одна или несколько ячеек памяти (чем больше цветов могут иметь точки, тем больше ячеек им выделяется). Соответственно, чем длиннее растровая линия, тем больше памяти она занимает. В векторной графике объем памяти, занимаемый линией, не зависит от размеров линии, поскольку линия представляется в виде формулы, а точнее, в виде нескольких параметров. Что бы мы ни делали с этой линией, меняются только ее параметры, хранящиеся в ячейках памяти. Количество же ячеек для любой линии остается неизменным.
Рис. 2. Пример фрактальности в природе — капуста Романеску
Изображение в векторном формате легко редактируется: его можно без потерь масштабировать, поворачивать, деформировать. Имитация трехмерности в векторной графике тоже проще, чем в растровой. Дело в том, что каждое преобразование фактически выполняется так: старое изображение (или фрагмент) стирается, а вместо него строится новое. Математическое описание векторного рисунка остается прежним — изменяются только значения некоторых переменных, например коэффициентов.
Фрактальная графика относительно молода по сравнению с растровой и векторной графикой. Основой фрактальной графики является фрактальная геометрия, позволяющая математически описывать различные виды неоднородностей, встречающихся в природе. Понятия «фрактал», «фрактальная геометрия» и «фрактальная графика» появились в конце 1970х. Слово «фрактал» образовано от латинского fractus и означает «состоящий из фрагментов». Оно было предложено математиком Бенуа Мандельбротом в 1975 году для обозначения нерегулярных, но самоподобных структур. Рождение фрактальной геометрии принято связывать с выходом в 1977 году книги «The Fractal Geometry of Nature» Бенуа Мандельброта. Определение фрактала, данное Мандельбротом: фракталом называется структура, состоящая из частей, которые в какомто смысле подобны целому. Самоподобие — одно из основных свойств фракталов. Таким образом, фрактальная графика — это вид компьютерной графики, в которой в той или иной мере используются самоподобные структуры (проще говоря, фракталы). Далее мы поговорим о том, что же такое самоподобие и где в природе встречаются фракталы.
Что подразумевается под самоподобием? Капуста Романеску из Италии — самый характерный пример фрактального объекта в природе. Капустные почки у нее нарастают в виде некой спирали (рис. 2), которая называется логарифмической, а число капустных почек совпадает с числом Фибоначчи. Числа Фибоначчи — это элементы числовой последовательности 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946…, в которой каждое последующее число равно сумме двух предыдущих чисел. Свое название они получили в честь средневекового математика Леонардо Пизанского (известного как Фибоначчи). Каждая часть элементов капусты Романеску имеет ту же форму, что и весь кочан. Это свойство повторяется с регулярностью в различных масштабах. По сути эта капуста является природным фракталом. То есть как бы мы ни увеличивали фрактал, после каждого шага мы увидим ту же форму, что характерна для данного фрактала в целом. Таким образом, с фракталами тесно связаны еще два понятия — итерация и рекурсия. Рекурсия — процесс повторения элементов самоподобным образом. Итерация — упрощенно говоря — повторное применение какойлибо математической операции.
Рис. 3. Рекурсия кривой Коха
На самом деле фрактальные свойства имеет очень большое количество природных объектов — просто мало кто об этом задумывается. Вы можете любоваться облаками на небе, набегающими волнами прибоя, ходить по лесу — и даже не подозревать, что в основе этой красоты лежит математика! Дада! Исследования фрактальных свойств природных объектов начал проводить еще Бенуа Мандельброт. Оказывается, несмотря на всю сложность природных объектов, многие из них в принципе описываются довольно простыми математическими формулами. Хотя в чистом виде фракталы в природе не существуют. То, что мы наблюдаем, — это так называемые стохастические фракталы. То есть такие фракталы, которые получаются в том случае, если в итерационном процессе случайным образом менять какиелибо его параметры. «Чистый» фрактал можно приближать до бесконечности, поскольку он обладает бесконечной рекурсией, а вот о стохастических фракталах этого сказать нельзя.
Следует отметить, что слово «фрактал» не является математическим термином и не имеет общепринятого строгого математического определения. Оно может употребляться, когда рассматриваемая фигура обладает какимилибо из следующих свойств:
- имеет нетривиальную структуру во всех масштабах — этим фрактал отличается от регулярных фигур (таких как окружность, эллипс, график гладкой функции): если мы рассмотрим небольшой фрагмент регулярной фигуры в очень крупном масштабе, то он будет похож на фрагмент прямой. Для фрактала увеличение масштаба не ведет к упрощению структуры, поэтому на всех шкалах мы увидим одинаково сложную картину;
- является самоподобной или приближенно самоподобной;
- имеет дробную метрическую размерность или метрическую размерность, превосходящую топологическую.
Кроме того, для построения фрактала необходимо учитывать начальное состояние и описывающую его формулу — так называемое исходное множество, которое пропускается через некий механизм, вызывающий его отображение и добавляющий отображенное множество к исходному. Этот процесс и называется итерацией. Таким образом, после нескольких подобных относительно простых операций получается весьма сложное изображение. В процессе получения фрактала важны два момента: исходное множество и механизм преобразования. В зависимости от алгоритма построения фракталы делятся на линейные и нелинейные.
Алгоритмы построения линейных фракталов определяются линейными функциями. В них самоподобие присутствует в простейшем варианте: любая часть повторяет целое.
Нелинейные фракталы задаются нелинейной функцией роста, то есть уравнениями в степени выше первой. В них самоподобие будет более сложным: любая часть является уже не точной, а деформированной копией целого.
Один из простейших примеров линейного фрактала — кривая Коха (1904 год, немецкий математик Хельга фон Кох).
Существует простая рекурсивная процедура (получение самоподобных частей фрактала) формирования фрактальных кривых на плоскости. Зададим произвольную ломаную с конечным числом звеньев, называемую генератором. Далее заменим в ней каждый отрезок генератором (точнее, ломаной, подобной генератору). В получившейся ломаной вновь заменим каждый отрезок генератором. Продолжая до бесконечности, в пределе получим фрактальную кривую. На рис. 3 приведено несколько шагов этой процедуры для кривой Коха.
Одним из первых нелинейные фракталы описал французский математик Гастон Жюлиа еще в 1918 году. Но в его работе отсутствовали изображения исследованных им множеств и термин «фрактал».
В наше время компьютеры позволили получить изображения множеств Жюлиа (рис. 4а), которые вместе с множествами Мандельброта(рис. 4б) являются ныне самыми известными квадратичными фрактальными структурами.
Рис. 4. Изображения множеств Жюлиа (а) и Мандельброта (б)
Оба типа фракталов возникают в результате реализации на комплексной плоскости самого простого нелинейного алгоритма.
Здесь в основу метода построения изображений положен принцип наследования от так называемых родителей геометрических свойств объектовнаследников. Построение фрактального рисунка осуществляется по какомулибо алгоритму или путем автоматической генерации изображений при помощи вычислений по конкретным формулам. Изменения значений в алгоритмах или коэффициентов в формулах приводит к модификации этих изображений. Главным преимуществом фрактальной графики является то, что в файле фрактального изображения сохраняются только алгоритмы и формулы.
Фрактал — объект, отдельные элементы которого наследуют свойства родительских структур. Поскольку более детальное описание элементов меньшего масштаба происходит по простому алгоритму, описать такой объект можно всего несколькими математическими уравнениями.
Фракталы позволяют описывать целые классы изображений, для детального описания которых требуется относительно мало памяти. В то же время фракталы слабо применимы к изображениям вне этих классов.
Программные средства для работы с фрактальной графикой предназначены для автоматической генерации изображений путем математических расчетов. Именно поэтому фрактальная графика не признается ни компьютерными, ни обычными художниками изза того, что якобы здесь за человека всё делает программа. На самом деле процесс работы с фрактальной графикой хоть и автоматизирован, но, тем не менее, полностью творческий: комбинируя формулы и меняя переменные, можно добиваться удивительных результатов и воплощать самые смелые художественные замыслы. Создание фрактальной художественной композиции заключается не в рисовании или оформлении, а в программировании.
Изменяя и комбинируя окраску фрактальных фигур, можно моделировать образы живой и неживой природы (например, ветви дерева или снежинки), а также составлять из полученных фигур «фрактальную» композицию. Фрактальная графика, так же как векторная и трехмерная, является вычисляемой. Ее главное отличие в том, что изображение строится по уравнению или системе уравнений. Поэтому для выполнения всех вычислений в памяти компьютера ничего, кроме формулы, хранить не требуется.
Рис. 5. Изображения, полученные с помощью фракталогенераторов
Только изменив коэффициенты уравнения, можно получить совершенно иное изображение. Эта идея нашла применение в компьютерной графике благодаря компактности математического аппарата, необходимого для ее реализации. Так, с помощью нескольких математических коэффициентов можно задать линии и поверхности очень сложной формы.
В машинной графике фрактальная геометрия незаменима при генерации искусственных облаков, гор, поверхности моря. Фактически, благодаря фрактальной графике найден способ эффективной реализации сложных неевклидовых объектов, образы которых весьма похожи на природные. Собственно, поэтому настоящей статье и дано такое название. Многие природные объекты имеют фрактальные свойства, поэтому их легко создавать на компьютере с помощью фрактальной графики. Например, при разработке компьютерной игры нет нужды каждый раз заново рисовать лес, горы, облака и т.д. Эти объекты обладают самоподобием, а следовательно, могут быть легко сгенерированы программными средствами на основе математических формул. Добавляя или изменяя некоторые параметры исходной формулы, можно добиться удивительного разнообразия получаемых природных объектов. Фракталы на экране компьютера — это узоры, построенные самим ПК по заданной программе. Помимо фрактальной живописи существуют фрактальные анимация и музыка.
В заключение хотелось бы отметить следующее: фрактальная графика — одно из самых необычных и перспективных направлений в компьютерной графике. Результаты, которые можно получить с ее помощью, поражают воображение даже самых искушенных ценителей компьютерного искусства. Так, изображения, создаваемые с помощью программфракталогенераторов, порой содержат совершенно фантастические и необычные пейзажи (рис. 5), которые даже не снились художникамсюрреалистам. И наоборот, с помощью фрактальной графики можно с удивительной точностью изобразить то, что мы видим в окружающем нас мире. Воистину мир фракталов удивителен!
Продолжение следует.