Свойства фракталов

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

2. Характер большинства фрактальных алгоритмов преимущественно рекурсивный.

3. Теоретически глубина рекурсии фрактала бесконечна.

4. Независимо от природы и метода построения у всех фракталов есть одно важное общее свойство, характеризующее степень их раздробленности и предельные свойства. Это – фрактальная размерность. Согласно идее Мандельброта ее можно определить подсчетом числа элементов N, принадлежащих фрактальному множеству, при различных разрешениях d – минимальных линейных размерах элементов.

5. Размерность фрактала может быть дробной

Тексты программ для построения фрактальных
изображений

Программа для построения фрактала Мандельброта

Program fr_mandelbrot;

uses crt,graph;

const mi=511;

var gd,gm:integer;

function c(index:integer):integer; {определение цвета точки}

begin

c:=1*(mi-index)

end;

{** функция подсчета количества итераций **}

function iteration(x,y:double):integer;

var i:integer; xx,yy,xk,yk:double;

begin

xx:=x; yy:=y; i:=0;

while (sqr(xx)+sqr(yy)<=4) do

begin

xk:=sqr(xx)-sqr(yy)+x;

yk:=2*xx*yy+y;

xx:=xk; yy:=yk; i:=i+1;

if i>=mi then break

end;

iteration:=i;

end;

{*** процедура формирования фрактала ***}

procedure mand(xx,yy,cx,cy:integer; minx,maxx,miny,maxy:double);

var stepx, stepy,x,y:double; i,j,iter:integer;

begin

stepx:=(maxx-minx)/cx;

stepy:=(maxy-miny)/cy;

y:=miny;

for j:=0 to cy do

begin

x:=minx;

for i:=0 to cx do

begin

iter:=iteration(x,y);

putpixel(xx+i,yy+j,c(iter));

x:=x+stepx;

end;

y:=y+stepy

end;

end;

begin

gd:=Detect;

initgraph(gd,gm,'C:\BP\BGI');

setBkcolor(1);

{формирование фрактала с разной степенью детализации}

mand(0,0,640,480,-2.2,1,-1.2,1.2); {весь фрактал}

readkey;

cleardevice;

{увеличенные фрагменты фрактала}

mand(0,0,640,480,-0.85,-0.7,0.1,0.25);

readkey;

cleardevice;

mand(0,0,640,480,-0.8,-0.7,0.2,0.3);

readkey;

cleardevice;

mand(0,0,640,480,-1.25,-1,-0.5,-0.25);

readkey;

cleardevice;

mand(0,0,640,480,-1.05,-1,-0.35,-0.3);

readkey;

closegraph;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: