Реализация в Matlab алгоритмов построения фрактальных объектов. Фрактальное сжатие изображений. Оценка потерь и способы их регулирования

Nokia 19.03.2019
Nokia

Современные компьютеры весьма интенсивно применяют графику. Операционные системы с интерфейсом оконного типа используют картинки, например, для отображения директорий или папок. Некоторые совершаемые системой действия, например загрузку и пересылку файлов, также отображаются графически. Многие программы и приложения предлагают пользователю графический интерфейс (GUI), который значительно упрощает работу пользователя и позволяет легко интерпретировать полученные результаты. Компьютерная графика используется во многих областях повседневной деятельности при переводе сложных массивов данных в графическое представление. Итак, графические изображения крайне важны, но они требуют так много места! Поскольку современные дисплеи передают множество цветов, каждый пиксел принято интерпретировать в виде 24-битового числа, в котором компоненты красного, зеленого и голубого цветов занимают по 8 бит каждый. Такой 24-битовый пиксел может отображать миллионов цветов. Тогда изображение с разрешением 512х512 пикселов будет занимать 786432 байта. А изображению размером 1024х1024 пиксела потребуется 3145728 байт для его хранения. Мультфильмы и анимация, которые также весьма популярны в компьютерных приложениях, потребуют еще большего объема. Все это объясняет важность сжатия изображений. К счастью, изображения допускают частичную потерю информации при сжатии. В конце концов, изображения призваны для того, чтобы люди на них смотрели, поэтому та часть изображения, которая не воспринимается глазом, может быть опущена. Эта основная идея вот уже три десятилетия движет разработчиками методов сжатия, допускающих некоторую потерю данных.

В общем случае, информацию можно сжать, если в ней присутствует избыточность. В этой книге часто повторялось утверждение, что компрессия информации делается путем удаления или сокращения избыточности данных. При сжатии с потерями мы имеем дело с новой концепцией, с новой парадигмой, которая предполагает сжатие путем удаления несущественной, нерелевантной информации. Изображение можно сжать с потерей, удалив несущественную информацию, даже если в нем нет избыточности.

Отметим, что изображение без избыточности не обязательно является случайным. На стр. 18 обсуждались два типа избыточности, присущей графическим образам. Самой важной из них является корреляция (зависимость) пикселов. В редких случаях корреляция пикселов может быть слабой или вовсе отсутствовать, но изображение все еще не будет случайным и даже осмысленным.

Идея о допустимости потери графической информации станет более приятной, после того, как мы рассмотрим процесс образования цифровых изображений. Вот три примера: (1) реальное изображение может быть сосканировано с фотографии или рисунка и оцифровано (переведено в матрицу пикселов), (2) образ может быть записан видеокамерой, которая сама порождает пикселы и сохраняет их в памяти, (3) картинка может быть нарисована на экране компьютера с помощью специальной компьютерной программы. Во всех трех случаях некоторая информация теряется при переводе в цифровую форму. Зритель готов позволить некоторую потерю информации при условии, что это будет терпимая и малозаметная потеря.

(Оцифровывание изображений состоит из двух этапов: выборки образцов и квантования. Выборка образцов, дискретизация, состоит в разбиении двумерного изображения на маленькие области, пикселы, а под квантованием подразумевается процесс присвоения каждому пикселу некоторого числа, обозначающего его цвет. Заметим, что оцифровывание звука состоит из тех же этапов, но только звуковой поток является одномерным.)

Приведем простой тест на качественное определение потери информации при сжатии изображения. Пусть данный образ A (1) сжат в В, (2) разжат в С, и (3) их разница обозначена D=С-А. Если А был сжат без потери информации и разжат подобающим образом, то С должен быть идентичен А, и образ D должен быть равномерно белым. Чем больше информации потеряно, тем дальше будет D от равномерно белого образа.

Так как же все-таки следует сжимать изображения? До этого момента мы рассматривали три подхода к задаче компрессии: это RLE, статистический метод и словарный метод. Неявно предполагалось, что эти методы применимы к данным любой природы, но из практических наблюдений мы заметили, что лучше всего эти методы работают при сжатии текстов. Поэтому новые методы сжатия должны учитывать три основных различия между текстами и графическими изображениями:

1. Текст одномерен, а изображение имеет размерность 2. Весь текст можно рассматривать как одну длинную строку символов. Каждая буква текста имеет двух соседей, слева и справа. Все соседи весьма слабо коррелированы между собой. Например, в этом абзаце букве «и» предшествуют буквы «н», «р», «л», «с», «п», а за ней следуют буквы «е», «в», «н», «м», «р». В других абзацах та же буква «и» может иметь других соседей. В изображении пиксел имеет четырех непосредственных соседей и восемь ближайших (за исключением пикселов, лежащих на границе, см. рис. 3.1, где восемь ближайших соседей пиксела «*» показаны черным цветом), и между ними существует сильная корреляция.

Рис. 3.1. Четыре ближайших и восемь соседних пикселов.

2. Текст состоит из относительно небольшого числа символов алфавита. Обычно, это 128 кодов ASCII или 256 байтов длины по 8 бит каждый. Наоборот, каждый пиксел изображения представим 24 битами, поэтому может быть до миллионов различных пикселов. Значит, число элементарных «символов» в изображении может быть огромным.

3. Не известен алгоритм, который определял бы, какая часть текста является неважной или малозначимой, и ее можно удалить без ущерба для всего текста, но существуют методы, которые автоматически удаляют неважную информацию из графического образа. Этим достигается значительна степень компрессии.

Таким образом, методы сжатия текстовой информации становятся малоэффективными и неудовлетворительными при работе с изображениями. Поэтому в этой главе будут обсуждаться совершенно другие подходы к решению этой задачи. Они различны, но все они удаляют избыточность с использованием следующего принципа.

Принцип сжатия изображений . Если случайно выбрать пиксел изображения, то с большой вероятностью ближайшие к нему пикселы будут иметь тот же или близкий цвет.

Итак, сжатие изображений основывается на сильной корреляции соседних пикселов. Эта корреляция также называется пространственной избыточностью.

Вот простой пример того, что можно сделать с коррелированными пикселами. Следующая последовательность чисел отражает интенсивность 24 смежных пикселов в одной строке некоторого непрерывно тонового изображения:

12, 17, 14, 19, 21, 26, 23, 29, 41, 38, 31, 44, 46, 57, 53, 50, 60, 58, 55, 54, 52, 51, 56, 60.

Здесь только два пиксела совпадают. Их среднее значение равно 40.3. Вычитание каждого предыдущего символа даст последовательность

12, 5, -3, 5, 2, 5, -3, 6, 12, -3, -7, 13, 2, 11, -4, -3, 10, -2, -3, -1, -2, -1, 5, 4.

Эти последовательности пикселов проиллюстрированы графически на рис. 3.2, который показывает потенциал сжатия: (1) разность пикселов существенно меньше их абсолютных величин. Их среднее равно 2.58. (2) Они повторяются. Имеется только 15 различных значений. В принципе, каждый из них можно закодировать 4 битами. Они декоррелированы, то есть, разности соседних значений, в среднем, не уменьшаются. Это видно из последовательности вторых разностей:

12, -7, -8, 8, -3, 3, -8, 9, 6, -15, -4, 20, -11, 9, -15, -1, 13, -12, -1, 2, -1, -1, 6, 1.

Эти разности уже больше исходных величин.

Рис. 3.2. Величины и разности 24 соседних пикселов.

Рис. 3.3 предлагает другую иллюстрацию «коррелированных величин». Матрица А размером 32x32 заполнена случайными числами, и ее значения на рисунке (а) изображены квадратиками различных серых оттенков. Случайная природа этих элементов очевидна. Затем эту матрицу обратили и результат - матрицу В - изобразили на рисунке (b). На этот раз этот массив квадратиков 32х32 выглядит на глаз более структурированным. Прямое вычисление корреляции с помощью коэффициента Пирсона по формуле (3.1) показывает, что перекрестная корреляция верхних двух строк матрицы А является относительно малым числом 0.0412, в то время, как соответствующая величины, вычисленная для верхних строк матрицы В равна относительно большому числу -0.9831. Дело в том, что каждый элемент матрицы В зависит от всех элементов матрицы А

. (3.1)

Рис. 3.3. Случайная матрица (а) и ее обратная матрица (b).

n=32; a=rand(n); imagesc(a); colormap(gray)

b=inv(a); imagesc(b)

Программа на Matlab для рис. 3.3.

Пример : Воспользуемся специальной программой для иллюстрации ковариационной матрицы для (1) матрицы с коррелированными элементами и (2) матрицы с декоррелированными элементами. На рис. 3.4 показаны две 32х32 матрицы. Первая из них а является случайной (то есть, декоррелированной), а вторая матрица b является обратной для матрицы а (значит, она коррелирована). Их ковариационные матрицы также показаны. Очевидно, что матрица cov(a) близка к диагональной (недиагональные элементы равны нулю или близки к нулю), а матрица cov(b) далека от диагональной. Далее приведена программа для системы Matlab, которая рисует эти картинки.

Рис. 3.4. Ковариация коррелированной и декоррелированной матриц.

Если понятие коррелированных величин стало более ясным, то можно легко ответить на вопрос: «Как проверить стали ли пикселы изображения после некоторого преобразования декоррелированными или нет?» Ответ будет таким: «Если матрица содержит декоррелированные значения, то ковариация любой ее строки с любым столбцом равна нулю». В результате ковариационная матрица М будет диагональной. Статистическое понятия дисперсии, ковариации и корреляции обсуждаются в любом учебнике по статистике.

Принцип сжатия изображений имеет и другую сторону. Нам хорошо известно но опыту, что яркость близких пикселов тоже коррелирована. Два смежных пиксела могут иметь разные цвета. Один может быть близок к красному, а второй к зеленому, однако, если первый был ярким, то его сосед, обычно, тоже будет ярким. Это свойство можно использовать для перевода представления пикселов RGB (red, green, blue) в виде трех других компонентов: яркости и двух хроматических компонентов, определяющих цвет. Одним таким форматом (или пространством цветов) служит YCbCr, где Y (компонента «светимости») отвечает за яркость пиксела, а Сb и Сr определяют его цвет. Этот формат будет обсуждаться в § 3.7.1, но его преимущество уже легко понять. Наш глаз чувствителен к маленьким изменениям яркости, но не цвета. Поэтому потеря информации в компонентах Сb и Сr сжимает образ, внося искажения, которые глаз не замечает. А искажение информации о компоненте Y, наоборот, является более приметной.

a=rand(32); b=inv(a);

figure(l); imagesc(a); colormap(gray); axis square

figure(2); imagesc(b); colormap(gray); axis square

figure(3); imagesc(cov(a)); colormap(gray); axis square

figure(4); imagesc(cov(b)); colormap(gray); axis square

Программа на Matlab для рис. 3.4.

N = 1500; %Количество точек (Точность)

x = zeros(N, 1); %Массив из N нулей, в будущем - наши F(n) - итерации

x(1) = 0.5; %Начальная точка

for r = 3.5: 0.001: 4 %Цикл от начала до конца диаграммы

x(c) = r * x(c-1) * (1-x(c-1)); %Итерация каждой функции

x(1: N-120) = ;

plot(t, x,"k.","MarkerSize", 3); %Поточечный вывод графика

xlabel("r"); ylabel("x"); %подпись осей

title("Bifurcation diagramm"); %подпись диаграммы

Задание

    Построить график бифуркационной диаграммы для моделей Рикера и Ферхюльста, в зависимости от варианта.

    1. Модель Рикера (Чётные номера вариантов)

      Модель Ферхюльста (Для нечётных вариантов)

c – положительный параметр, указывающий скорость увеличения популяции;

x – численность популяции.

c

r

c

r

[ 0.99, 2.95 ]

Для модели Риккера выбранную константу умножить на 6,2 (c’ = 6,2 * c).

Контрольные вопросы

    Почему последовательные бифуркации в системе влекут за собой хаотичное поведение?

    Какие существуют константы Фейгенбаума и чем они характирезуются (Их смысл)

    Почему точка периода 3 влечёт хаос?

Лабораторная работа № 4. Фрактальное броуновское движение

Цель работы

Ознакомление с броуновским движением, в частности с математической моделью броуновского движения – винеровским процессом. Построение фрактального броуновского движения.

Методические указания

Броуновское движение

Броуновское движение происходит из-за того, что все жидкости и газы состоят из атомов или молекул - мельчайших частиц, которые находятся в постоянном хаотическомтепловом движении, и потому непрерывно толкают броуновскую частицу с разных сторон.

Когда в среду погружено крупное тело, то толчки, происходящие в огромном количестве, усредняются и формируют постоянное давление. Если крупное тело окружено средой со всех сторон, то давление практически уравновешивается, остаётся только подъёмнаясила Архимеда- такое тело плавно всплывает или тонет.

Если же тело мелкое, как броуновская частица, то становятся заметны флуктуациидавления, которые создают заметную случайно изменяющуюсясилу, приводящую к колебаниям частицы. Броуновские частицы обычно не тонут и не всплывают, а находятся в среде во взвешенном состоянии.

Приведем пример построения двумерного броуновского движения в среде MatLab. В MatLab элементы распределения получаются с помощью командыrandn.

N=10000; % количество шагов

T=70; % максимальное время

h=T/N; % интервал времени

t=(0:h:T); % вектор

sigma = 1.0; % сила шума

x=zeros(size(t)); % выделение массива для x

y=zeros(size(t)); % выделение массива для y

x(1)=0.0; % начальное положение x

y(1)=0.0; % начальное положение y

x(i+1)=x(i)+sigma*sqrt(h)*randn;

y(i+1)=y(i)+sigma*sqrt(h)*randn;

grid on % добавление сетки для осей

После запуска программы получим график вида:

Рис. 4 Броуновское движение частицы

Система CMYK . Данная система используется для формирования цветов окрашенных несветящихся объектов, которые поглощают часть спектра освещающего белого света и отражают остальное излучение. Система CMYK является основной для цветной печати. Она основана на субтрактивной модели CMY (Cyan - голубой, Magenta - пурпурный, Yellow - желтый) - модели вычитания цветов. Основных цветов здесь по-прежнему три: голубой - это белый минус красный, пурпурный – белый минус зеленый, желтый - белый минус синий. Для улучшения качества полиграфического изображения в систему добавлен черный цвет, который является ключевым (Key – отсюда буква K в названии системы) для цветной печати.

Система HSB . Эта система основана на использовании тона или оттенка (Hue), насыщенности (Saturation) и освещенности (Lightness). Тон характеризует конкретный оттенок цвета, насыщенность – его относительную интенсивность, яркость цвета - величину черного оттенка для получения более темного изображения. Система HSB лучше соответствует модели восприятия цвета человеком. Разновидностью этой системы является система HSL, в которой буква I соответствует интенсивности цвета.

Глубина цвета определяет количество цветов при отображении одного пиксела (элемента) изображения. Если она равна 8 битам, то количество возможных цветов равно 256. Режим с глубиной цвета 24 бита называют истинным цветом (True Color). Количество возможных цветов при этом составляет . 32-битная глубина использует 24 бита для запоминания цветовой информации, а еще 8 бит применяют для запоминания насыщенности (прозрачности). Это так называемый альфа - канал. При этом значительно увеличивается скорость обработки графической информации процессором.

2. Форматы изображений


В настоящее время используется большое количество различных форматов графических файлов. Наиболее широко распространенными из них являются форматы TIFF, GIF, JPEG и BMP.

Формат TIFF (Tagged Image File Format) является одним из наиболее надежных и универсальных форматов для хранения сканированных цветных изображений с высоким качеством. В нем может быть использовано сжатие по алгоритму LZW, т.е. он относится к форматам хранения изображений без потерь.

Формат GIF (Graphics Interchange Format) имеет цветовую палитру в 256 цветов и использует для сжатия алгоритм без потерь LZW. Если исходное количество цветов больше 256, то часть цветовой информации будет утрачена.

Формат JPEG (Joint Photographers Expert Group) основан на одноименном алгоритме для сжатия изображений. Он относится к алгоритмам сжатия с потерями и предназначен для хранения полноцветных изображений с высоким коэффициентом сжатия. При использовании формата возможно управление параметром качества от 0 (максимальное сжатие) до 100 (максимальное качество). Коэффициент сжатия в зависимости от качества от 10 до 1000. Этот формат чаще других применяют для хранения полноцветных фотографических изображений, которые не предназначены для дальнейшей обработки.

Формат BMP (Windows Device Independent Bitmap) относится к собственным растровым (bitmap) форматам операционной системы Windows. Он пригоден для хранения изображений как в индексированном виде с палитрой до 256 цветов, так и в виде полноцветных RGB – изображений с глубиной цвета 24 бита. Возможно применение алгоритма сжатия RLE (Run Length Encoding).

Кроме вышеупомянутых MATLAB поддерживает форматы PNG (Portable Network Graphics) и XWD (X Window Dump).

4. Типы изображений Matlab

Пакет Image Processing Toolbox Matlab работает с четырьмя типами изображений:

· Бинарное (Binary ) – логический массив, содержащий только единицы и нули, при этом единицы соответствуют черному цвету, нули – белому.

· Индексное (Indexed ) –изображение состоит из массива и палитры. Палитра – это матрица с размерами m x 3. Каждая строка палитры описывает красную, зеленую и синюю составляющие цвета пиксела. Элемент матрицы изображения является индексом для строки матрицы палитры.

· Полутоновое (Grayscale ) – двумерный массив, значения элементов которого соответствуют значениям интенсивностей изображения.

· Полноцветное (Truecolor ), другое название RGB – изображение представляется массивом с размерами m x n x 3 в формате uint8, uint16, single или double . В этом массиве хранятся компоненты цвета (красная, зеленая и синяя составляющая) для каждого пикселя изображения.
В Matlab существуют возможности (функции) преобразования одного типа изображения в другой. Например, функция rgb2ind() преобразует полноцветное изображение в индексное.

Методы обработки изображений
Обработка изображений может производиться с целью визуального улучшения качества изображения, проведения измерений на изображении или распознавания образов. В обработке изображений обычно используются изменение контраста, геометрические преобразования изображений, логические и арифметические операции над изображениями, фильтрация изображений. Ниже кратко поясняется смысл перечисленных задач.

Задание

Тема курсового проекта: Реализация в MATLAB алгоритмов построения фрактальных объектов.

Исходные данные: Журнал Exponenta Pro. Математика в приложениях. №3, 2003 г.

Основные вопросы, подлежащие исследованию:

.Применение рекурсивного алгоритма.

.Применение L-системы и терл - графики.

.Применение системы итерированных функций.

К защите представить:

·пояснительную записку объемом не менее 40 листов:

·теоретическое обоснование;

·листинг программы;

·результаты расчетов.

·электронную версию всех материалов курсового проекта;

·слайды плакатов в Ms Off PowerPoint 2003:

·тема и цель курсового проекта;

·алгоритм решения задачи;

·результаты решения задачи в виде графиков и таблиц;

·экранный вид интерфейса задачи.

Введение

1. Рекурсивный алгоритм

1.1 Ковёр Серпинского

1.1.1 Код программы "Serpinsky.m"

1.1.2 Изображения ковра Серпинского

1.2 Квадратный ковёр Серпинского

1.2.1 Код программы "Serpinsky2.m"

2.2 Изображения ковра Серпинского

3 Кривая Коха

3.1 Код программы "Koch.m"

3.2 Изображения кривой Коха

L - системы и терл - графика

1 Снежинка Коха

1.1 Код программы "RuleKoch.m" (возвращает функцию)

1.2 Код программы "Snowflake.m" (вывод изображения)

1.3 Изображение снежинки Коха

2 Дракон Хартера-Хайтвея

2.1 Код программы "Dracon.m"

2.2 Изображение дракона Хартера-Хайтвея

2.3 Изображение кривой Гильберта

2.4 Изображение кривой Госпера

2.5 Изображение кривой Серпинского

3 Ветвление

3.1 Код программы "Flower.m"

3.2 Изображение цветка

3.3 Изображение куста

3.4 Изображение Снежинки

Системы итерированных функций

1 Построение ковра Серпинского с помощью ДСИФ

3.1.1 Код программы "SerpDSIF.m"

1.2 Изображение ковра Серпинского построенного при помощи ДСИФ

2 Кристалл построенный по алгоритму РСИФ

2.1 Код программы "Cristal.m"

2.2 Изображение кристалла

2.3 Код программы "Maple.m"

2.4 Изображение Листа

2.5 Код программы "Paporotnic.m"

2.6 Изображение папоротника

Заключение

Список использованных источников

Введение

Фракталы - математические объекты дробной размерности, название которых было введено в математику Б. Мандельбротом, являются в настоящее время, как предметом самостоятельных математических исследований, так и инструментарием, используемым в целом ряде прикладных задач нелинейной динамики, теории хаоса, обработки сигналов. Однако только относительно недавно появилось первое полноценное учебное пособие по новой быстро развивающейся математической дисциплине, основой которого стал учебный курс, преподававшийся автором книги в течение ряда лет в университете Миссури Колумбия. Так как при изучении фракталов и хаоса большую роль играет компьютерное моделирование, в курсе предусмотрено параллельное изучение теоретических вопросов и проведение компьютерных экспериментов. Это отличает его структуру от традиционной структуры большинства математических курсов: теорема-доказательство-пример-задача. В обобщенном виде подробно описаны известные алгоритмы построения фрактальных объектов (L-системы и терл-графика, аффинные преобразования, системы итерированных функций, случайные системы итерированных функций). Однако соответствующих программ, созданных на каком-либо языке программирования или в математическом пакете, не приводится. В то же время опыт практической реализации алгоритмов построения фрактальных объектов, описанных в каком-либо из современных математических пакетов (MATLAB, Mathcad, Maple, Matematica и т. д.), широко используемых в настоящее время в преподавании целого ряда физико-математических дисциплин, показывает, что существует необходимость внесения в них определенных корректировок, учитывающих особенности выбранного пакета (в первую очередь графические). В курсовой работе отражены алгоритмы построения классических фракталов и их программные реализации в пакете MATLAB.

1. Рекурсивный алгоритм

1 Ковёр Серпинского

Рассматривается алгоритм, основанный на использовании рекурсивной функции. Приведён пример построения простого самоподобного фрактала - ковра Серпинского. В рассматриваемом в данном разделе алгоритме используется способ построения, основанный на последовательном удалении из начальной области внутренних подобластей в соответствии с заданными правилами.

Выберем в качестве начального множества S0 равносторонний треугольник вместе с областью, которую он замыкает. Удалим внутренность центральной треугольной области и назовем оставшееся множество S1. Затем повторим описанный процесс для каждого из трех оставшихся треугольников и получим приближение S2. Продолжая, таким образом, получим последовательность вложенных множеств, Sn пересечение которых и образует ковер Серпинского S (рис. 1). Из построения видно, что ковер является объединением N=3 непересекающихся уменьшенных в два раза копий (коэффициенты подобия по горизонтали и вертикали в данном случае оказываются одинаковыми, r = 1/2). Фрактальная размерность ковра Серпинского d равна:

Для построения рассматриваемого фрактала, очевидно, можно использовать следующий алгоритм.

Задать порядок ковра N.

Задать координаты вершин исходного треугольника ABC: (XA, YA), (XB, YB), (XC, YC).

Построить равносторонний треугольник ABC и залить его синим цветом.


5. Построить треугольник A′B′C′ и залить его красным цветом.

Повторить N раз действия, описанные в пп. 4, 5, для треугольников AA′C′, A′BB′, C′B′C, соответственно.

Наиболее просто описанный выше алгоритм можно реализовать при использовании рекурсивной процедуры, выполняющей последовательность действий, описанных в пп. 4, 5.

Для реализации алгоритма в пакете MATLAB создана специальная функция, возвращающая изображение ковра Серпинского. Для этого использовался встроенный текстовый редактор MATLAB. Код программы приведён ниже. Изображение ковра Серпинского на рисунках 1 - 6.

1.1 Код программы "Serpinsky.m"

% Листинг файла Serpinsky.mz = Serpinsky(Lmax)

% функциЯ, возвращающая изображение ковра Серпинского

% Lmax - порядок ковра

% задание координат вершин равнобедренного треугольника

x1=0; y1=0; x2=1; y2=0; x3=0.5; y3=sin(pi/3);

h=figure(1); % инициализациЯ графического окнаon; % включение режима рисования фигур в одном графическом окне

fill(,,"b");

% прорисовка равностороннего треугольника(gca,"xtick",,"ytick",); % отключение режима оцифровки осей(gca,"XColor","w","YColor","w"); % установка цвета рисования осей

Simplex(x1,y1,x2,y2,x3,y3,0,Lmax);

% обращение к функции, прорисовывающей равносторонние треугольники

% белого цветаoff % отключение режима рисования фигур в одном графическом окне

function z=Simplex(x1,y1,x2,y2,x3,y3,n,Lmax)

% рекурсивная функция, прорисовывающая равносторонние треугольники

% белого цветаn

% задание координат вершин текущего равностороннего треугольника

dx=(x2-x1)/2; dy=(y3-y1)/2; x1n=x1+dx; y1n=y1; x2n=x1+dx+dx/2;n=y1+dy;x3n=x1+dx/2; y3n=y1+dy;(,,"r");=n+1;

% рекурсия(x1,y1,x1n,y1n,x3n,y3n,n,Lmax); Simplex(x1n,y1n,x2,y2,x2n,y2n,n,Lmax);(x3n,y3n,x2n,y2n,x3,y3,n,Lmax); end

1.1.2 Изображения ковра Серпинского

Рисунок 1 - Ковёр Серпинского 0 порядка

Рисунок 2 - Ковёр Серпинского 1 порядка

Рисунок 3 - Ковёр Серпинского 2 порядка

Рисунок 4 - Ковёр Серпинского 3 порядка

Рисунок 5 - Ковёр Серпинского 4 порядка

Рисунок 6 - Ковёр Серпинского 5 порядка

2 Квадратный ковёр Серпинского

Алгоритм визуализации фрактального объекта, основные этапы построения которого представлены на рисунках 7 - 12, реализуется следующей последовательностью действий.

.Задать порядок ковра N.

.Задать координаты вершин исходного квадрата ABCD: (XA,YA), (XB, YB) (XC, YC),(XD, YD).

3.Построить квадрат ABCD и залить его синим цветом.

.Вычислить координаты точек, делящих стороны квадрата ABCD на три равные части: dx=(XB-XA)/3, dy=(YB-YA)/3, XA=XA+dx, YA=YA+dy, XB=XA+dx+dx, YB=YA+dy, XC=XA+dx+dx, YC=YA+dy+dy, XD=XA+dx, YD=YA+dy+dy.

.Построить квадрат A′B′C′D′ и залить его белым цветом.

.Повторить N раз действия, описанные в пп. 4, 5, для квадратов с вершинами, имеющими следующие координаты:

(XA,YA), (XA,YA), (XA,YA), (XA,YA),

(XA,YA), (XB,YA), (XB,YB), (XA,YB),

(XB,YA), (XB,YB), (XB,YB), (XB,YB),

(XB,YB), (XB,YB), (XB,YC), (XC,YC),

(XC,YC), (XB,YC), (XC,YC), (XC,YC),

(XD,YD), (XC,YC), (XC,YC), (XD,YC),

(XA,YD), (XD,YD), (XD,YC), (XD,YD),

(XA,YA), (XA,YD), (XD,YD), (X



Рекомендуем почитать

Наверх