Реализация фракталов в информатике

Автор работы: Пользователь скрыл имя, 01 Мая 2012 в 10:34, курсовая работа

Краткое описание

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

Вложенные файлы: 1 файл

Реализация фракталов в информатике.docx

— 248.68 Кб (Скачать файл)
  • Программа работает с фракталами вида (Zn+Ck) * Vm
  • Далее выставляются значения действительной и мнимой частей чисел Z0, C и VМинус означает, что действительная или мнимая часть этого числа будет определяться соответственно действительной или мнимой частью точки A, принадлежность которой к фракталу будет определяться
  • Так же выставляются значения n,k,m, которые здесь считаются целыми, хотя ничто не мешает мне изменить программу так, чтоб они были не обязательно целыми.
  • Далее следуют значения, которые определяют, какой прямоугольный кусок комплексной плоскости будет показан на рисунке. Эти значения X,Y левого верхнего угла и X,Y правого нижнего угла. Ничто не мешает сделать координату Y нижнего угла больше координат верхнего, или координату X левого больше, чем правого, - в таком случае изображение просто будет отражённым.
  • Iterations – параметр, который показывает, через сколько итераций компьютер, всё ещё не получивший «бесконечность» решит, что никогда её и не получит и объявит точку чёрной.
  • Infinity – параметр, который показывает, какой модуль является «бесконечностью», то есть, если в какой-то момент Zi по модулю больше этого параметра, компьютер решает, что оно далее улетит в бесконечность. Причём номер этого Zi, то есть i, он запоминает.
  • Далее следует система окраски. В зависимости от того, на какой итерации Zi превысило infinity, у него выбирается цвет от 1 до iterations. Какие именно это цвета регулируется здесь.По умолчанию выбрана система RGB, т.е. для каждой компоненты цвета распределяются равномерно: т.е. для 30 итераций:
 
     
i 1 2 3 4 5 6 7 8
R 1 2 3 4 5 6 7 8
G 9 17 26 34 43 51 60 68
B 3 7 10 13 17 20 23 27

 

     Если  поставлена галочка FFFFFF system of color, то RGB переводится в 16-ричный код, который равномерно делится на iterations частей.

  • Crazy paint. Пожалуй, самая бессмысленная, но самая сложная в понимании галочка. Дело в том, что когда для некоторого A мы считаем его ряд Z0, Z1, Z2, … Ziterations, то если A=Z0, то существует некое A’ = Z1(A), у которого Z1(A’) = Z2(A), Z2 (A’) = Z3(A) и т.д.То есть попутно, определяя цвет точки A, можно определить цвета точек A’, A’’, A’’’, и т.д.: если у A итерация вылета равна 17, то у A’ – 16, у A’’ – 15 и т.д. Правда, если A не уходит в бесконечность, никто не гарантирует, что A’ следующей итерацией туда не вылетит (хотя это, по сути, значит, что A тоже бы вылетело в бесконечность, будь iterations больше, но здесь обратная зависимость, что довольно некрасиво реализуемо). Поэтому если A=Z0, то картинку можно нарисовать быстрее и довольно красивыми россыпями точек, а не унылым «слева направо». Но если Z0 не равно A, то красивыми россыпями будет рисоваться что-то совсем не то, что нужно, но тоже порой красиво. Поэтому галочка и называется Crazy paint.
  • Current location. Эти панели показывают действительную и мнимую части комплексной точки, на которую указывает указатель мыши, если он внутри рисунка.
  • Выпадающее меню модулей. Дело в том, что модуль комплексного числа можно определить не только как , но и, например, как
 
     
 

     Для удобства Re(Z) обозначено за X, Im(Z) – за Y.Тогда определяться, когда Zi стало больше infinity по модулю, будет несколько иначе, и раскраска будет несколько другая.

  • Следующая панель имеет в виду, что если правой кнопкой мыши щёлкнуть по какой-то точке на рисунке, её координаты (т.е. x=Re(Z) и y=Im(Z)) попадут в поля ввода координат точки C, Координаты точки Z0 заполнятся минусами, координаты прямоугольника рисунка станут (-2;-2), (2;2), поставится галочка Crazy paint.
  • Следующая панель говорит о том, что если выделить прямоугольной рамкой кусочек рисунка, он незамедлительно начнёт рисоваться уже в увеличенном масштабе вместо целого рисунка.
  • Последняя панель – мой копирайт.

     Для реализации всех этих функций я написал  некоторое количество функций, которые  выполняют действия над комплексными переменными (хотя аналогичные, есть в  некоторых библиотеках). Присутствуют функции xm, ym, которые восстанавливают соответствующие координаты на мониторе в соответствии со значениями координат прямоугольника рисунка, и обратные им xr и yr, которые восстанавливают значение комплексного числа по его координате на экране. Написано множество функций для реализации того, что указано выше, в общем, ясно как они пишутся. Основная процедура, вызываемая кнопкой Paint, просто перебирает все пиксели, переводит их в реальные xr и ym, для них выполняет итеративный процесс (с некоторыми коррекциями в случае Crazy paint). После того, как рисуется линия для одного xm, делается Refresh, чтобы вывести это на форму, чтоб процесс рисования был виден для пользователя. В качестве небольшой оптимизации по времени, значения из всех полей с формы дублируются локальными переменными. Буфер не используется, хотя можно было бы. Система Windows иногда излишне перегружена непонятно чем, и вместо того, чтоб рисовать, особенно если выбран Crazy paint, особенно, если ресурсы компьютера не такие уж хорошие, предпочитает дождаться, пока изображение дорисуется в оперативной памяти, а уж потом выводить его на экран, что есть печально.

     Фракталы  поражают своей красотой, примеры  программ и принтскринов работы программ, находятся в этой же папке. Если что-то непонятно или интересует - могу объяснить.

     Размещено на Allbest


Информация о работе Реализация фракталов в информатике