PDA

Просмотр полной версии : Помогите все по шагово прокомментировать!



cudri56
29.05.2013, 14:13
алгоритм кривой коха. фракталы.

program krm;
uses crt,graph;
var Hu,Hv,rx,ry,Sx,Sy,fi:real;
dr,mode:integer;
Procedure Init;
begin
fi:=pi/2;
dr:=detect;
initgraph(dr,mode,'');
Hu:=3; Hv:=getmaxy-3;
rx:=3.5; ry:=3.5;
Sx:=getmaxx/rx;
Sy:=getmaxy/ry;
end;
Procedure OutLine(x1,y1,x2,y2:real;color:word);
var u1,v1,u2,v2:word;
begin
u1:=round(x1*Sx+Hu);
v1:=round(-y1*Sy+Hv);
u2:=round(x2*Sx+Hu);
v2:=round(-y2*Sy+Hv);
setcolor(5);
line(u1,v1,u2,v2);

end;
Procedure Draw(x1,y1,x2,y2:real;n:word);
var x3,y3,x4,y4,x5,y5,x6,y6,dx,dy:real;
begin
if n>0 then begin
dx:=(x2-x1)/3;
dy:=(y2-y1)/3;
x3:=x1+dx;
y3:=y1+dy;
x6:=x2-dx;
y6:=y2-dy;
x4:=dx*cos(fi)-dy*sin(fi)+x3;
y4:=dx*sin(fi)+dy*cos(fi)+y3;
x5:=x4+dx;
y5:=y4+dy;

Draw(x1,y1,x3,y3, n-1);
Draw(x3,y3,x4,y4, n-1);
Draw(x4,y4,x5,y5, n-1);
Draw(x5,y5,x6,y6, n-1);
Draw(x6,y6,x2,y2, n-1);
end
else
OutLine(x1,y1,x2,y2,5);

end;

Begin
clrscr;
init;
Draw(0,0,3,0,5);

repeat until keypressed;
closegraph;
end.