Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KGG_LK.doc
Скачиваний:
60
Добавлен:
04.12.2018
Размер:
1.54 Mб
Скачать

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

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.

Программа для построения фрактала Джулиа

Program fr_Julia;

uses crt,graph;

const mi=511;

var gd,gm:integer;

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

begin

c:=7*(mi-index)

end;

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

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

const cx=0.36;cy=0.36;

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)+cx;

yk:=2*xx*yy+cy;

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

if i>=mi then break

end;

iteration:=i;

end;

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

procedure julia(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);

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

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

readkey;

cleardevice;

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

julia(0,0,640,480,-0.1,0.1,-0.1,0.1);

readkey;

cleardevice;

julia(0,0,640,480,-1,0,-1.2,0);

readkey;

cleardevice;

julia(0,0,640,480,-1,-0.5,-0.5,0);

readkey;

cleardevice;

julia(0,0,640,480,-0.75,-0.06,-0.5,-0.35);

readkey;

cleardevice;

julia(0,0,640,480,-0.68,-0.65,-0.37,-0.36);

readkey;

closegraph;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]