Фрактал мандельброта с масштабированием на Delphi

Автор работы: Пользователь скрыл имя, 18 Ноября 2012 в 12:18, курсовая работа

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

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

Содержание

1. Актуальность 3
2. Теоретическая часть по фракталу Мандельброта 4
3. Задача курсового проекта 6
4. Техническое задание 7
5. Назначение разработки 7
6. Основная часть 9
6. 1. Руководство программиста 9
6. 2. Руководство пользователя 14
Апробация 17
Список литературы 18

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

Курсовая работа ТРПО Баталов Д. С..docx

— 929.79 Кб (Скачать файл)

 

Федеральное государственное автономное

образовательное учреждение

высшего профессионального  образования

«СИБИРСКИЙ  ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

 

Институт  Космических и Информационных технологий

 

Кафедра информатики

 

 

 

КУРСОВОЙ  ПРОЕКТ

 

ПОСТРОЕНИЕ  ФРАКТАЛА МАНДЕЛЬБРОТА

С ЗАДАННЫМ МАСШТАБИРОВАНИЕМ

 

 

 

 

 Руководитель  17.05.2012                                                        В. В. Кукарцев

                        подпись, дата       должность, ученая степень                инициалы, фамилия

 

 Студент     КИ 10-03         031010038             17.05.2012     Д.С. Баталов

                  номер группы    номер зачетной  книжки      подпись, дата   инициалы, фамилия

 

 

 

 

Красноярск 2012

 

СОДЕРЖАНИЕ

  1. Актуальность 3
  2. Теоретическая часть по фракталу Мандельброта 4
  3. Задача курсового проекта 6
  4. Техническое задание 7
  5. Назначение разработки 7
  6. Основная часть 9

6. 1. Руководство программиста 9

6. 2. Руководство пользователя 14

  1. Апробация 17
  2. Список литературы 18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Актуальность

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

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

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

 

 

 

 

 

 

 

 

Теоретическая часть по фракталу Мандельброта

Понятия фрактал и фрактальная геометрия, появившиеся в конце 70-х, с середины 80-х прочно вошли в обиход математиков и программистов. Слово фрактал образовано от латинского fractus и в переводе означает состоящий из фрагментов. Оно было предложено Бенуа Мандельбротом в 1975 году для обозначения нерегулярных, но самоподобных структур, которыми он занимался. Рождение фрактальной геометрии принято связывать с выходом в 1977 году книги Мандельброта `The Fractal Geometry of Nature'. В его работах использованы научные результаты других ученых, работавших в период 1875-1925 годов в той же области (Пуанкаре, Фату, Жюлиа, Кантор, Хаусдорф). Но только в наше время удалось объединить их работы в единую систему.

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

Определение фрактала, данное Мандельбротом, звучит так: "Фракталом называется структура, состоящая из частей, которые в каком-то смысле подобны целому"

Всего 3 класса фракталов: геометрические фракталы, алгебраические и стохастические. Множество Мандельброта относится  к классу алгебраических фракталов.

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

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

Рисунок 1 -  Множество Мандельброта на плоскости

Алгоритм построения достаточно прост  и основан на простом итеративном  выражении:

Z[i+1] = Z[i] * Z[i] + C,

где Zi и C - комплексные переменные. Итерации выполняются для каждой стартовой точки C прямоугольной или квадратной области - подмножестве комплексной плоскости. Итерационный процесс продолжается до тех пор, пока Z[i] не выйдет за пределы окружности радиуса 2, центр которой лежит в точке (0,0), (это означает, что аттрактор динамической системы находится в бесконечности), или после достаточно большого числа итераций (например, 200-500) Z[i] сойдется к какой-нибудь точке окружности. В зависимости от количества итераций, в течении которых Z[i] оставалась внутри окружности, можно установить цвет точки C (если Z[i] остается внутри окружности в течение достаточно большого количества итераций, итерационный процесс прекращается и эта точка растра окрашивается в черный цвет).

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

Задача курсового  проекта

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

 

 

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Назначение разработки

Получение практических и теоретических навыков  разработки программного обеспечения  в рамках курсовой работы по дисциплине "Технология Разработки Программного Обеспечения".

Основная идея

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

Программное обеспечение, необходимое  для реализации проекта

Для программной  реализации данного проекта используется среда разработки программного обеспечения  BorlandDelphi 7.

Требование к функциональным характеристикам:

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

Функциональность ПО

  1. Система должна обеспечивать возможность выполнения следующих функций:
  • Задание с клавиатуры масштаба построения фрактала;
  • Отображения времени ожидания построения фрактала;
  • Вывод изображения фрактала на экран;
  • Масштабирование любого участка фрактала, путем перестроения заданной области ;
  • Инструкция по пользованию программы;
  • Организация дружественного интерфейса для просмотра и отображения данных, а так же управления ими;
  1. Входные данные:
  • Размерность поля координат;
  • Координаты мыши на поле, если необходимо изменить масштаб изображения.
  1.  Результаты:
  • Вывод графического представления фрактала Мандельброта на экран.

Требования к структуре  и организации программы

  1. В построении программного обеспечения реализовать объектно-ориентированный подход (классы, объекты);
  2. Для хранения и обработки данных необходимо разработать классы реализующие динамическое хранение данных (списки);
    1. Организовать применение виртуальных функций и итераторов;
    2. Реализовать перегрузку операторов для выполнения простейших операций с данными.

Минимальные системные требования

  1. Процессор: 1,4MHz.
  2. ОЗУ: 256Мб.
  3. ОС: WindowsXP/7/Vista.
  4. Свободный объем на диске: 10Мб.

Требование к распространению

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

 

 

 

Основная часть

Руководство программиста

Программа написана на языке ObjectPascal в среде разработки BorlandDelphi 7.0 с использованием стандартных форм.

В файле  проекта имеется следующий набор  элементов:

Форма TForm1 является связующей для всех форм, содержащихся в проекте. Форма TForm1 относится  к классу TForm.

Директива uses является директивой, хранящей информацию о том, какие модули и формы используются в проекте.

Форма TForm1 содержит в себе несколько форм класса TLabel (Label1, Label2, Label3, Label4). Данные формы относятся к классу TLabel.

Форма Label1 необходима для отображения фразы «X,min», которая нужна для создания дружественного интерфейса.

Форма Label2 необходима для отображения фразы «X,max», которая нужна для создания дружественного интерфейса.

Форма Label3 необходима для отображения фразы «Y,min», которая нужна для создания дружественного интерфейса.

Форма Labe4 необходима для отображения фразы «Y,max», которая нужна для создания дружественного интерфейса.

Форма Label5 необходима для отображения фразы «Прогресс построения», которая нужна для создания дружественного интерфейса.

Форма Button1 вычисляет значения точек. Данная форма управляется событиемOnButtonClick.

Форма Edit1 выполняет изменение координат поля в системе.

Форма Edit2 выполняет изменение координат поля в системе.

Форма Edit3 выполняет изменение координат поля в системе.

Форма Edit4 выполняет изменение координат поля в системе.

 

Описание функций

Меню. Автоматическая функция Delphi. Выводит на экран поле формы с размещенными на ней объектами.

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ComCtrls, ExtCtrls, StdCtrls, ExtDlgs, DBCtrls;

type

  TForm1 = class(TForm) //Окно программы

    Edit1: TEdit; //Поле ввода минимального значения Х

    Edit2: TEdit; //Поле ввода максимального значения Х

    Edit3: TEdit; //Поле ввода минимального значения Y

    Edit4: TEdit;//Поле ввода максимального значения Y

    Button1: TButton;//Кнопка запуска построения фрактала

    Image1: TImage;//Поле вывода фрактала на экран

    ProgressBar1: TProgressBar;//Строка прогресса построения фрактала

    Label1: TLabel;//Поясняющие надписи

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

Функция построения фрактала Мандельброта.

Функция считывает начальные координаты поля построения. Относительно них  рассчитывается точка центра поля построения. После начинается цикл вычисления координат  точек, принадлежащих полю. Каждой точке  присваивается цвет, соответствующий  координатному положению точки  относительно начального множества  Мандельброта.

Информация о работе Фрактал мандельброта с масштабированием на Delphi