Фракталы Курликю
21 апреля 2005
Рубрика: Обзоры и мнения.
Автор: .
pic

Занимательная математика

— Какие чудные цветы! —
воскликнула Элли.
— Они хороши! — молвил
Страшила. — Конечно, будь у меня
мозги, я восхищался бы цветами
больше, чем теперь.
А. Волков
Волшебник Изумрудного города

На потрясающие объекты с таким необычным названием обратили мое внимание завсегдатаи арбузного форума. Страничка http://mathworld.wolfram.com/CurlicueFractal.html расположена в знаменитой математической энциклопедии для непрофессионалов от Стивена Вольфрама. Об этом авторе рассказал Константин Кноп в недавней статье в Компьютере «Математические развлечения в Сети» http://arbuz.uz/t_knop.html А страничка Вольфрама ссылается на более ранние работы Клиффорда Пикоувера (того самого главного компьютерного выдумщика, первым открывшего, например, биоморфы http://sprott.physics.wisc.edu/pickover/home.htm), впрочем, это, наверное, не так важно по сравнению с волнующей красотой и не менее волнующей простотой алгоритма. К отрезку прикладывается такой же отрезок, но повернутый на некоторый угол, к этому отрезку примыкает следующий, тоже повернутый на тот же угол относительно предыдущего. И все! Никаких комплексных чисел, дифференциальных уравнений и всяких прочих интегралов-логарифмов, пугающих обывателя своими названиями.

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

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

pic

Если самим лень возиться, взгляните на готовую галерею этих самых фракталов Курликю http://arbuz.uz/t_kurliku.html И непроизвольно задумаемся в который раз над вопросом: почему красивы математические картинки? То ли мир устроен красиво, то ли математика сама по себе хороша?
Однако такие беседы можно вести бесконечно, рискуя вызвать аллергию у людей практичных. Поэтому приступим к делу. В Visual Basic’e создаем форму, «кидаем» на нее две кнопки «Start» и «End» и назначаем им код.

Private Sub Command1_Click() Для кнопки Start
DrawWidth = 3 Толщина рисуемой линии
ScaleMode = 3 Режим попиксельного вывода
xmax = 500 Сдвиг для убегающего за кадр
ymax = 10 рисунка
r = 6 Длина одного участка
X1 = 0 Координаты начальной
Y1 = 100 точки
t = 3 Показатель степени
s = 0.0001 Коэффициент
For v = -10000 To 10000 Step 2# Запускаем цикл
с заданным шагом
w = s * v ^ t Вычисляем текущий угол
для отрезка
X2 = X1 + r * Cos(w) Координаты следующей
Y2 = Y1 + r * Sin(1 * w) точки
On Error Resume Next Выход в случае ошибки
red = Abs(v / 2) Mod 255 Задание цвета
green = Abs(255 — v / 3) Mod 255
blue = Abs(0 / 1) Mod 255
Col = RGB(red, green, blue)
Line (X1 + xmax, Y1 + ymax)-(X2 + xmax, Y2 + ymax), Col
Рисование
X1 = X2 : Y1 = Y2 Передача координат новой точки
Next v Конец цикла
End Sub

Private Sub Command2_Click() Действия для кнопки «End»
End
End Sub

pic

Вот и вся программа. Алгоритм незатейлив и прост, его можно «запустить» в любом вашем привычном языке программирования от С++ до Delphi. Меняя переменные t, s, r и шаг цикла, вы каждый раз будете получать неожиданно непредсказуемые, но каждый раз обязательно красивые рисунки.

pic
Orphus system
В Telegram
В Одноклассники
ВКонтакте