Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-16_занятия_LV8_red+.doc
Скачиваний:
38
Добавлен:
13.11.2019
Размер:
803.84 Кб
Скачать

11.1. Построение фрактальной кривой

Типичным примером геометрического фрактала является кривая Коха. Процесс её построения выглядит следующим образом: берётся единичный отрезок, делится на три равные части и средний интервал заменяется равносторонним треугольником без этого сегмента. В результате образуется ломаная, состоящая из четырех звеньев длины 1/3. На следующем шаге операция повторяется для каждого из четырёх получившихся звеньев и т. д. Предельная кривая и есть кривая Коха. Таким образом, кривая Коха состоит из четырёх равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/3. На рис. 11.1 приведены 1, 2 и 4 итерации построения кривой Коха.

Обычно для построения фрактальных структур вместо геометрического подхода используют алгебраический способ, а именно, метод “Систем итерируемых функций” (Iterated Functions System – IFS). В наиболее простом виде IFS состоит из аффинных преобразований плоскости:

X

(11.1)

= A*X0 + B*Y0 + C Y = D*X0 + E*Y0 + F,

где X0, Y0 – начальные координаты точки, X, Y – конечные координаты, а A, B, C, D, E, F – некие константы.

Создадим виртуальный прибор, который строит кривую Коха на дисплее. Как видно из рис. 11.1, эта кривая имеет четыре части, подобные целой кривой. Для ее построения требуется набор аффинных преобразований координат, состоящий из четырех преобразований:

Константы в (11.2) подобраны так, чтобы расположить фрактал на сетке координат дисплея с разрешением 640 × 350. Это существенно для построения кривой в традиционных языках программирования, когда программист сам формирует попиксельный вывод графика на экран. В то же время в LаbVIEW, где построение осуществляется средствами XY Graph, эти константы следует рассматривать только как удобные масштабные коэффициенты.

Откройте новый виртуальный прибор. Расположите на блок-диаграмме 4 узла Formula Node для каждого из сегментов кривой Коха. Запрограммируйте в них формулы аффинных преобразований координат (11.2).

  1. Добавьте входные переменные (X0 и Y0) и выходные (X и Y). Если нужно, отрегулируйте размеры узлов и выровняйте их с помощью инструментов Align Objects и Distribute Objects в строчке меню.

X = X0/3 + 13.333 Y = Y0/3 + 200

X = X0/6 + 0.289*Y0 + 130 Y = – 0.289*X0 + Y0/6 + 256 (11.2)

X = X0/6 – 0.289*Y0 + 403 Y = 0.289*X0 + Y0/6 + 71

X = X0/3 + 413.333 Y = Y0/3 + 200.

  1. Поместите все узлы Formula Node внутрь цикла For Loop. Этот цикл будет необходим для расчета текущих координат точек. Еще один, внешний цикл, сформированный структурой While Loop, будет задавать количество итераций (т. е. количество изломов). С помощью узла Greater Or Equal? обеспечьте остановку While Loop при достижении заданного числа итераций, которое будет задаваться с лицевой панели управляющ им элементом. Внутри каждой итерации количество циклов N для For Loop, естественно, будет являться функцией номера итерации, точнее N = 4 ^ i.

  2. Расчет фрактала Кох стартует с исходной координаты (X0, Y0) и далее следующие координаты получаются из предыдущих с помощью формул (11.2). Следовательно, в расчете необходимо хранить предыдущие значения, что достигается в LabVIEW использованием сдвиговых регистров (Shift Register). Спозиционируйте курсор точно на границе While Loop, нажмите правую кнопку мыши и выберите Add Shift Register из всплывающего меню. Маленькие квадратики с закрашенным треугольником появляются парой на входе и выходе While Loop, символизируя передачу данных с выхода на вход. Создайте два сдвиговых регистра. Вне While Loop с помощью Initialize Array задайте нулевые исходные значения и подсоедините к сдвиговым регистрам. Внутри While Loop соедините вход первого сдвигового регистра с переменными X0 всех Formula Node, а вход второго – с переменными Y0. Проследите, чтобы на каждом туннеле выполнялось Enable indexing.

  3. На выходе For Loop соберите обратно четыре элемента сегмента линии с помощью Build Array (отдельно для X и Y) и подсоедините к выходу соответствующего сдвигового регистра. В свойствах Build Array нужно выбрать Concatenate Inputs (В этом случае данный узел последовательно соединяет все входные массивы, длина выходного массива увеличивается, а его размерность остается неизменной).

  4. Разместите на лицевой панели дисплей XY Graph. Объедините массивы X и Y с выхода сдвиговых регистров с помощью операции Bundle (палитра Programming >> Cluster, …) и подсоедините ко входу дисплея. Задайте небольшое (3–5) количество итераций. Запустите программу.

Внимание! Количество точек фрактальной кривой очень сильно (экспоненциально) возрастает с увеличением числа итераций (при i = 9 – более 1 млн. точек). Чтобы предотвратить зависание компьютера, выбирайте небольшое количество итераций, соизмеряя его с объемом оперативной памяти и быстродействием вычислительной машины.

  1. Усовершенствуйте внешний вид виртуального прибора. Войдите в свойства XY Graph. На закладке Scales снимите видимые атрибуты X- и Y-осей (Show Scale Label, Show Scale). Здесь же уберите сетку (Grid Style and Colors). При желании смените цвета различных элементов дисплея.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]