Генерирование фракталов
Понятие фрактала, способы его использования в компьютерной науке, в механике жидкостей, в телекоммуникациях, медицине, физике поверхностей, биологии. Множество Мандельброта и фрактальное дерево. Разработка кода программы в среде программирования Delрhi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.06.2013 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
20
Размещено на http://www.allbest.ru/
Курсовая работа
Генерирование фракталов
ВВЕДЕНИЕ
Разветвления трубочек трахей, листья на деревьях, вены в руке, река, бурлящая и изгибающаяся, рынок ценных бумаг - это все фракталы. От представителей древних цивилизаций до Майкла Джексона, ученые, математики и артисты, как и все остальные обитатели этой планеты, были зачарованы фракталами и применяли из в своей работе.
Программисты и специалисты в области компьютерной техники так же без ума от фракталов, так как фракталы бесконечной сложности и красоты могут быть сгенерированы простыми формулами на простых домашних компьютерах. Открытие фракталов было открытием новой эстетики искусства, науки и математики, а так же революцией в человеческом восприятии мира.
ПОСТАНОВКА ЗАДАЧИ И ОПИСАНИЕ
Цель курсовой работы разработать программу, генерирующую один из видов фракталов с помощью приложения Delphi. Программа должна работать следующим образом:
1) При открытии программы должна открываться главная форма
2) Пользователь вводит данные
3) Программа обрабатывает данные, если данные введены не верно то программа выдает пользователю сообщение об ошибке. Если же ошибки нет то программа прорисовывает фрактал.
4) При нажатии на кнопку закрыть программа закрывается.
1.ПОНЯТИЕ «ФРАКТАЛ»
Понятия фрактал и фрактальная геометрия, появившиеся в конце 70-х, с середины 80-х прочно вошли в обиход математиков и программистов. Слово фрактал образовано от латинского fractus и в переводе означает состоящий из фрагментов. Оно было предложено Бенуа Мандельбротом в 1975 году для обозначения нерегулярных, но самоподобных структур, которыми он занимался. Рождение фрактальной геометрии принято связывать с выходом в 1977 году книги Мандельброта `The Fractal Geometry of Nature. В его работах использованы научные результаты других ученых, работавших в период 1875-1925 годов в той же области (Пуанкаре, Фату, Жюлиа, Кантор, Хаусдорф). Но только в наше время удалось объединить их работы в единую систему.
Роль фракталов в машинной графике сегодня достаточно велика. Они приходят на помощь, например, когда требуется, с помощью нескольких коэффициентов, задать линии и поверхности очень сложной формы. С точки зрения машинной графики, фрактальная геометрия незаменима при генерации искусственных облаков, гор, поверхности моря. Фактически найден способ легкого представления сложных неевклидовых объектов, образы которых весьма похожи на природные.
Одним из основных свойств фракталов является самоподобие. В самом простом случае небольшая часть фрактала содержит информацию о всем фрактале.
Фракталы находят все большее и большее применение в науке. Основная причина этого заключается в том, что они описывают реальный мир иногда даже лучше, чем традиционная физика или математика[1].
2.ПРИМЕНЕНИЕ ФРАКТАЛОВ
2.1 Компьютерные системы
Наиболее полезным использованием фракталов в компьютерной науке является фрактальное сжатие данных. В основе этого вида сжатия лежит тот факт, что реальный мир хорошо описывается фрактальной геометрией. При этом, картинки сжимаются гораздо лучше, чем это делается обычными методами (такими как jpeg или gif). Другое преимущество фрактального сжатия в том, что при увеличении картинки, не наблюдается эффекта пикселизации (увеличения размеров точек до размеров, искажающих изображение). При фрактальном же сжатии, после увеличения, картинка часто выглядит даже лучше, чем до него.
2.2Механика жидкостей
Изучение турбулентности в потоках очень хорошо подстраивается под фракталы. Турбулентные потоки хаотичны и поэтому их сложно точно смоделировать. И здесь помогает переход к из фрактальному представлению, что сильно облегчает работу инженерам и физикам, позволяя им лучше понять динамику сложных процессов. Изучение турбулентности в потоках очень хорошо подстраивается под фракталы. Турбулентные потоки хаотичны и поэтому их сложно точно смоделировать. И здесь помогает переход к из фрактальному представлению, что сильно облегчает работу инженерам и физикам, позволяя им лучше понять динамику сложных потоков. При помощи фракталов также можно смоделировать языки пламени. Пористые материалы хорошо представляются в фрактальной форме в связи с тем, что они имеют очень сложную геометрию. Это используется в нефтяной науке.
2.3Телекоммуникации
Для передачи данных на расстояния используются антенны, имеющие фрактальные формы, что сильно уменьшает их размеры и вес.
2.4 Физика поверхностей
Фракталы используются для описания кривизны поверхностей. Неровная поверхность характеризуется комбинацией из двух разных фракталов.
2.5 Медицина
1. Биосенсорные взаимодействия
2. Биения сердца
2.6 Биология
Моделирование хаотических процессов, в частности при описании моделей популяций[2].
3.МНОЖЕСТВО МАНДЕЛЬБРОТА
Мандельброт исследовал предельное (при k>?) поведение последовательности комплексных чисел
zk+1=z2k+c; k=0,1,2…; z0=c
при различных значениях комплексных чисел с. Вместо арифметических операций с комплексными числами можно моделировать на плоскости ху движение точек zk = [xk уk], задаваемое двумя рекуррентными уравнениями координат:
xk+1=x2k-y2k+cx; yk+1=2xkyk+cy; k=0,1,2…; x0=cx; y0=cy
Последовательность zk с ростом числа итераций демонстрирует повеление двух типов (рис. 3.62) в зависимости от выбора начальной точки с=[cx cy]. Ee элементы, эволюционируя по плоскости, либо постепенно уходят в бесконечность, либо всегда остаются в определенной замкнутой области, совершая циклическое движение или сходясь в точку . Математиками строго доказано, что если при некотором k модуль |zk|>rmin, где rmin=2--минимальный радиус расходимости множества Мандельброта, то далее последовательность расходится.
Множество точек с, для которых последовательность
zk+1=z2k+c; k=0,1,2…; z0=c
не расходится, называется множеством Мандельброта. Весьма сложно доказывается , что это множество связно.
Графическая интерпретация множества Мандельброта удивительно красива и бесконечно разнообразна. Для ее получения зададим исходныеданные итерационного процесса :
· прямоугольное окно С с разрешением mxn точек;
· значение rmin = 2;
· максимальное число итераций kmax.
Условимся, что если точка zk вышла за пределы круга радиуса rmin, то расходимость достигнута за k<kmax итераций и процесс останавливается.
Для каждой точки
сij є C i=1..m, j=`1..n
запустим итерационный процесс и сформируем матрицу М, элемент которой mij є [1, kmax] равен номеру итерации к, на которой процесс был остановлен. Далее возможны варианты изображения фрактального множества на плоскости или в пространстве.
В плоском варианте визуализации выведем матрицу М на экран как растр, сопоставив элементам mij, некоторую палитру из kmax цветов. Например, можно выбрать радужную палитру, у которой цвета и оттенки от фиолетового до красного (или градации серого цвета) распределены по диапазону чисел матрицы либо линейно (чем быстрее расходится последовательность в некоторой точке сij, тем темнее ее цвет), либо по другому закону. Яркие изображения дают палитры с чередующимися контрастными цветами.
Полагая числа mij высотами некоторой поверхности в точках сij, можно по- строить объемное изображение множества Мандельброта или его части, которое при специально подобранном освещении может выглядеть и как скала с плоской вершиной , и как водопад, и как горная пещера[3, С.348-350].
4.ФРАКТАЛЬНОЕ ДЕРЕВО
Фигуры и формы, о которых пойдет речь в этой главе, заинтересовали еще древних греков. Пифагор доказал свою знаменитую теорему, построив фигуру, в которой на сторонах прямоугольного треугольника расположены квадраты. В наш век эта фигура Пифагора выросла в «дерево». Внимание Архимеда привлекли спирали: он даже написал о них трактат. Один из видов спиралей носит его имя. Спирали являются строительными блоками живого мира. Ядро клетки состоит из двойной спиральной структуры - ДНК. содержащей в себе генетический код формирующегося организма. Иногда и сами организмы имеют спиральную структуру, например, улитки.
В неживой природе примером спиральной структуры может служить спиральная галактика.
Впервые дерево Пифагора построил А.Е. Босман в 1891 - во время второй мировой войны, используя для этого обычную чертежную линейку.
Пример Пифагорова дерева дан на рисунке {р - 12). Если мы пронумеруем квадраты, то обнаружим, что квадрат с индексом n «держит на себе» равнобедренный треугольник, от которого произрастают два более мелких квадрата. Квадраты слева имеют индекс 2n, справа - (2л+1). Вместе прямоугольный треугольник, два квадрата на его катетах и квадрат на гипотенузе дают геометрическое представление теоремы Пифагора. Пели площадь первоначального квадрата равна единице, то общая площадь квадратов 2 и 3 также будет единица. То же самое получим для каждого следующего уровня. Тогда квадраты с номерами 8. 9, 10. 11, 12, 13, 14, 15 имеют общую площадь ту же, что и основной квадрат.
Можно упростить дерево Пифагора, отбросив квадраты и рисуя только отрезки, которые соединяют «центры» треугольников. Сами треугольники не рисуются. В результате получим обнаженное дерево[4, C.45-48].
5.КОД ПРОГРАММЫ НА DELPHI
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
Edit3: TEdit;
Edit4: TEdit;
Edit6: TEdit;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
BitBtn1: TBitBtn;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure fract(x,y,a,l,k,a1:integer);
var
p:integer;
begin
p := a1;
if k mod 2 = 0 then
p := -a1;
while l > 3 do
begin
with form1.Canvas do
begin
pen.Width := 6-k;
pen.Color := rgb(random(255),random(255),random(255));
moveto(x,y);
lineto(x+round(cos(degtorad(a))*l),y+round(sin(degtorad(a))*l));
x := x+round(cos(degtorad(a))*l);
y := y+round(sin(degtorad(a))*l);
a := a + p;
l := round(l / 1.17);
fract(x,y,a-(p*2),round(l / 1.2),k+1,a1+1);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var q, w, e, r, t, u :Integer;
begin
q:=600;
w:=500;
e:=StrToInt(Edit3.Text);
r:=StrToInt(Edit4.Text);
t:=0;
u:=StrToInt(Edit6.Text);
fract(q,w,e,r,t,u);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
cc: integer;
tgx, tgy, rX1, rY1: extended;
x, y, l, n, q, w, e:integer;
c_real, c_img, x1, X2,Y1,Y2: Double;
xx, zm, zr, zi: Double;
begin
n:=300;
L:=10;
x1:=-2.4;
x2:=0.8;
y1:=-1.2;
y2:=1.2;
if x1<0 then
begin
if x2>0 then
tgx:=abs(x1)+abs(x2);
end;
if x1<0 then
begin
if x2<0 then
tgx:=abs(x1)-abs(x2);
end;
if x1>0 then
begin
if x2>0 then
tgx:=x2-x1;
end;
if y1<0 then
begin
if y2>0 then
tgy:=abs(y1)+abs(y2);
end;
if y1<0 then
begin
if y2<0 then
tgy:=abs(y1)-abs(y2);
end;
if y1>0 then
begin
if y2>0 then
tgy:=y2-y1;
end;
begin
screen.Cursor:=crHourGlass;
for x:=0 to image1.Width do
begin
rX1:=X1+(tgx / image1.Width)*x;
for y:=0 to image1.Height do
begin
rY1:=Y1+(tgy / Image1.Height)*y;
zr:=0;
zi:=0;
zm:=0;
for cc:=0 to n do
begin
xx:=zr;
zr:=sqr(xx)-sqr(zi)+ rX1;
zi:=2*xx*zi+rY1;
zm:=sqr(zr)+sqr(zi);
if zm>L then break;
end;
q:=StrToInt(Edit1.Text);
w:=StrToInt(Edit2.Text);
e:=StrToInt(Edit3.Text);
if zm<L then image1.Canvas.Pixels[x,y]:=clblack else image1.Canvas.Pixels[x,y]:=rgb(cc*q,cc*w,cc*e);
end;
end;
screen.cursor:=crDefault;
end;
end;
end.
ЗАКЛЮЧЕНИЕ
фрактал программирование delрhi
При проведение данной рабаты были освоены навыки работы со средой программирования Delphi. Также были изучены темы, связанные с фрактальной графикой. Было разработано приложение, позволяющее делать прорисовку фрактального дерева и множества Мандельброта.
СПИСОК ЛИТЕРАТУРЫ
1) Интернет ресурс. Точка доступа : http://www.fractals-main.ru/intro.htm
2) Интернет ресурс. Точка доступа : http://ru.wikipedia.org
3) Никулин Е.Л. Компьютерная геометрия и алгоритмы машинной графики. -- СПб.; БХВ-Петербург, 2003. - 560 е.: ил.
4) Морозов Л.Л. Введение в теорию фракталов. -- Москва-Ижевск: Институт компьютерных исследований, 2002. 160 стр.
Размещено на Allbest.ru
Подобные документы
Определение и классификация фракталов. Геометрические, стохастические, алгебраические их виды. Множество Мандельброта, множество Жулиа. Другие способы получения алгебраических фракталов. Метод побитовых операций. Реализация алгебраических фракталов.
лекция [1,2 M], добавлен 29.12.2011Классификация основных фракталов: алгебраические, геометрические и стохастические. Рассмотрение нескольких распространённых видов фракталов: решетка и треугольник Серпинского, крива Коха, фрактал и множество Мандельброта, кривая Дракона и модель Джулии.
курсовая работа [735,1 K], добавлен 11.02.2015Понятие фрактала, принципы создания изображения. Разработка алгоритма и режимов генерации ландшафта. Описание программы FracLandscapes.exe. в среде разработки Delphi 10. Примеры построения ландшафта с использованием различных режимов и количества изгибов.
курсовая работа [688,9 K], добавлен 04.05.2014Сведения о фракталах, способы их построения. Неизменность геометрических особенностей фрактала при изменении масштаба. Алгоритм построения фрактала и его реализация в программе. Длина береговой линии и понятие фрактала. Салфетка и ковер Серпинского.
курсовая работа [579,4 K], добавлен 12.01.2012Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014Постановка задачи. Математическое обоснование. Последовательность разбиений множества. Язык программирования. Реализация алгоритмов. Генерирование разбиений множества. Генерирование всех понятий.
курсовая работа [29,9 K], добавлен 20.06.2003Понятие фрактала и фрактальной геометрии. Роль фракталов в машинной графике, самоподобие как основное свойство. Области применения фракталов. Учение о сложных нелинейных динамических системах (теория хаоса). Интеграция детерминированных фракталов и хаос.
курсовая работа [1,0 M], добавлен 20.08.2009Сущность, основные свойства и классификация фракталов. Построение триадной кривой Коха и "дракона" Хартера-Хейтуэя, треугольник Серпинского и множество Жюлиа. Сущность L-кодирования. Создание программы на языке BorlandPascal для построения фракталов.
курсовая работа [1,2 M], добавлен 13.04.2015Система программирования LabVIEW и ее использование в системах сбора и обработки данных. Программирование, основанное на потоках данных. Генерирование детерминированных процессов. Способность инструментов программы изменяться. Расчет значений массива.
контрольная работа [424,4 K], добавлен 18.03.2011Понятие о кинематике. Относительность, траектория и виды движений. Движение тела, брошенного под углом к горизонту. Разработка компьютерной программы для моделирования. Описание интерфейса программы и программного кода. Инструкция пользования интерфейсом.
курсовая работа [1,6 M], добавлен 25.11.2013