Witam!!
Chciałbym wykonać tzw. Płatek Kocha w Free Pascal.
Znalazłem takie funkcje:
-
Ten rysuje tylko prostą kreskę
Uses Crt,Graph;
procedure Koch(Stopien : Integer;A,B,C,D : Real);
var x,y : Real;
begin
x:=C-A; y:=D-B; if Stopien>0 then begin Dec(Stopien); Koch(Stopien, A, B, A+x/3, B+y/3); Koch(Stopien, A+x/3, B+y/3, (A+C)/2+Sqrt(3)/6*y,(B+D)/2-Sqrt(3)/6*x); Koch(Stopien, (A+C)/2+Sqrt(3)/6*y,(B+D)/2-Sqrt(3)/6*x,A+x*2/3, B+y*2/3); Koch(Stopien, A+x*2/3, B+y*2/3, C, D) end else Line(Round(A),Round(B),Round(C),Round(D))
end;
Var Sterownik,Tryb,Stopien : Integer;
Begin
InitGraph(Sterownik,Tryb,‘c:\bp\bgi’);
for Stopien:=0 to 5 do
begin ClearDevice; Koch(Stopien,0,240,639,240); ReadKey end;
CloseGraph
End.
-
Ten w ogóle nie startuje
PROGRAM Koch;
{Program rysowania platka Kocha}
uses Crt, Graph;
var
sterownik,tryb,r:Integer;
katAktualny,b:Real;
z:Char;
procedure KL;
begin
while KeyPressed do z:=ReadKey;
repeat until keypressed
end;
procedure PW (katWStopniach:real);
begin
katAktualny:=katAktualny+katWStopniach
end;
procedure LW (katWStopniach:real);
begin
PW (-katWStopniach)
end;
procedure NP (trasa:real);
var
xKonca,yKonca:integer;
begin
xKonca:=round(trasacos(katAktualnypi/180));
yKonca:=round(trasasin(katAktualnypi/180));
LineRel (xKonca,yKonca)
end;
procedure ELEMENT (rzad:integer; bok:real);
begin
if rzad=0 then NP(bok)
else
begin
ELEMENT (rzad-1,bok/3);
LW(60);
ELEMENT (rzad-1,bok/3);
PW(120);
ELEMENT (rzad-1,bok/3);
LW(60);
ELEMENT (rzad-1,bok/3)
end
end;
procedure PLATEK_KOCHA (rzad:integer; bok:real);
var
i:integer;
begin
SetGraphMode(tryb);
SetBkColor(White);
SetColor(Blue);
SetLineStyle(0,0,NormWidth);
MoveTo(100,300);
katAktualny:=270;
PW(30);
for i:=1 to 3 do
begin
ELEMENT (rzad,bok);
PW(120)
end;
KL;
CloseGraph
end;
begin
clrscr;
writeln (‘Platek Kocha’);
writeln (’------------’);
writeln;
write ('rzad fraktala r = ');
readln®;
write ('bok fraktala b = ');
readln(b);
sterownik:=Detect;
InitGraph (sterownik,tryb, ‘c:\bp\bgi’);
PLATEK_KOCHA(r,b)
end.
Proszę o pomoc w naprawieniu błędów
Z góry dziękuje