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.