Program fr_paporotnik;
uses crt, graph;
const alfa=80;beta=2.1; k=0.3; k1=0.5; lmin=1;
var a,b,c,d,e,f,g,h:real; gd,gm:integer;
{*** рекурсивная процедура на основе метода IFS ***}
procedure step(x1,y1,x2,y2:real; nom:integer);
var x3,y3,x4,y4,x5,y5,x6,y6,x7,y7:real;
begin
if sqr(x1-x2)+sqr(y1-y2)>lmin then
begin
{координаты точек вычисляются по формулам}
x3:=(x2-x1)*a-(y2-y1)*b+x1; y3:=(x2-x1)*b+(y2-y1)*a+y1;
x4:=x1*c+x3*d; y4:=y1*c+y3*d;
x5:=x4*e+x3*f; y5:=y4*e+y3*f;
x6:=(x5-x4)*g-(y5-y4)*h+x4; y6:=(x5-x4)*h+(y5-y4)*g+y4;
x7:=(x5-x4)*g+(y5-y4)*h+x4; y7:=(x5-x4)*(-h)+(y5-y4)*g+y4;
line(round(x1),round(y1),round(x4),round(y4));
{рекурсивные вызовы для рисования фрагментов фрактала}
step(x4,y4,x3,y3,nom);
step(x4,y4,x6,y6,nom+1);
step(x4,y4,x7,y7,nom+1);
end;
end;
begin
gd:=Detect;
initgraph(gd,gm,'C:\BP\BGI');
setBkcolor(1);
{вычисление коэффициентов}
a:=cos(pi/alfa); b:=sin(pi/alfa);
c:=1-k; d:=k;
e:=1-k1; f:=k1;
g:=cos(pi/beta); h:=sin(pi/beta);
step(200,350,225,70,0); {рисование ветки папоротника}
readkey;
closegraph
end.
Программа построения треугольника Серпинского
program fr_treug_serpinsky;
uses graph,crt;
const m=2500; { количество точек фрактала }
type koord=array[1..3] of integer;
var gd,gm: integer;
x,y: koord; { массивы координат }
{**** Процедура заполнения заданного треугольника точками ****}
procedure serpinsky(xs,ys:koord);
var x0,y0,xk,yk: real; n,k: integer;
begin
randomize;
x0:=(xs[1]+xs[2]+xs[3])/3; { координаты начальной точки }
y0:=(ys[1]+ys[2]+ys[3])/3;
for k:=1 to m do
begin
n:=random(3)+1; { случайная вершина }
xk:=(x0+xs[n])/2; { середина отрезка, соединяющего }
yk:=(y0+ys[n])/2; { начальную точку с вершиной }
putpixel(round(xk), round(yk), 12); { вывод точки }
x0:=xk; { новые координаты для начальной точки }
y0:=yk
end;
end;
begin
gd:=Detect;
initgraph(gd,gm,'C:\BP\BGI');
setcolor(10);
setviewport(20,20,500,250, true);
x[1]:=320; y[1]:=50; { координаты вершин треугольника }
x[2]:=150; y[2]:=200;
x[3]:=450; y[3]:=200;
serpinsky(x,y); { процедура вывода треугольника Серпинского }
readkey;
closegraph
end.