Zdravím vás, píšu program na vykreslování fraktálů (tzv. vločka).
Tady přikládám zdroják, tento je bez problému sestaven, ale během běhu programu mi to spadne tam kde mám koment "problém" nevím proč. Hodnota argumentu u arctan může být cokoli z R takže jsem v koncích. děkuji
CreateDir('Fraktal');
for i:=1 to pocetperiod do
begin
Fname[i]:=fr+rad+IntToStr(i)+tx;
assign(F[i],Fname[i]);
rewrite(f[i]);
close(f[i]);
end;
x:=cos(pi/2);
y:=sin(pi/2);
append(f[1]);
writeln(F[1],x:0:6,',',y:0:6);
for i:=2 to poctvar+1 do
begin
x:=cos(pi/2+((i-1)*2*pi)/(poctvar));
y:=sin(pi/2+(2*pi*(i-1))/(poctvar));
writeln(F[1],x:0:6,',',y:0:6);
end;
close(f[1]);
for i:=2 to pocetperiod do
begin
reset(f[i-1]);
append(F[i]);
readln(F[i-1],Name1);
j:=0;
Aname:='';
repeat
j:=j+1;
Aname:=Aname+Name1[j];
until(Name1[j+1]=',') ;
A.x:=strtoreal(Aname);
j:=j+1;
Bname:='';
repeat
j:=j+1;
Bname:=Bname+Name1[j];
until(j=Length(Name1));
A.y:=strtoreal(Bname);
writeln(F[i],Name1);
while not eof(F[i-1]) do
begin
readln(F[i-1],Name2);
j:=0;
Aname:='';
repeat
j:=j+1;
Aname:=Aname+Name2[j];
until(Name2[j+1]=',') ;
B.x:=strtoreal(Aname);
j:=j+1;
Bname:='';
repeat
j:=j+1;
Bname:=Bname+Name2[j];
until(j=Length(Name1));
B.y:=strtoreal(Bname);
x:=(2*A.x+B.x)/3;
y:=(2*A.y+B.y)/3;
writeln(F[i],x:0:6,',',y:0:6);
x:=cos(arctan((y-A.y)/(x-A.x))-(2*pi/poctvar))+x; //problem
y:=sin(arctan((y-A.y)/(x-A.x))-(2*pi/poctvar))+y; //problem
writeln(F[i],x:0:6,',',y:0:6);
x:=(A.x+2*B.x)/3;
y:=(A.y+2*B.y)/3;
writeln(F[i],x:0:6,',',y:0:6);
writeln(F[i],B.x:0:6,',',B.y:0:6);
A:=B;
end;
close(F[i]);
close(F[i-1]);
end;
end.