Schulleben


Kontakt
Albert-Einstein-Gymnasium
Schaftrift 1
21244 Buchholz i.d.N.

Tel.: 04181 / 300 98-0
Fax: 04181 / 300 98-90
sekretariat@aeg-buchholz.de

In den Ferien ist nur die Schulleitung jeweils am Dienstag und am Donnerstag in der Zeit von 10:00 bis 12:00 ereichbar.

Apfelmännchen


program apfel;{Ha 12/99}

uses crt,graph;

var itermax:integer;

l,r,u,o:extended;

treiber,modus:integer;

wunsch,neu:char;

function mandelbrot(cr,ci:extended;itermax:integer;wunsch:char;var iter:integer):boolean;

var x,y,xn,yn:extended;

abstandhoch2:extended;

fertig:boolean;

begin

fertig:=false; {Initialisierung}

iter:=0;

x:=0;y:=0;

repeat {Berechnen u. prüfen}

iter:=iter+1;

case wunsch of

'1':Begin xn:=x*x-y*y-cr;yn:=x*y+x*y-ci end; {Algorithmus für Rückkopplung bei x^2-c}

'2':Begin xn:=x*x*x-3*x*y*y-cr;yn:=3*x*x*y-y*y*y-ci end; {x^3-c}

'3':Begin xn:=x*x*x*x-6*x*x*y*y+y*y*y*y-cr;yn:=4*x*x*x*y-4*y*y*y*x-ci end; {x^4-c}

'4':Begin xn:=exp(x)*cos(y)-cr;yn:=exp(x)*sin(y)-ci end; {e^x-c}

end;

x:=xn;

y:=yn;

fertig:=(sqr(x)+sqr(y)>4); {Abstandsgrenze überschritten}

mandelbrot:=(iter=itermax);

until (iter=itermax) or fertig;

end;

procedure mapping(l,r,u,o:extended;itermax:integer);

var xbereich,ybereich,iter:integer;

x,y,deltax,deltay:extended;

begin

deltax:=(r-l)/getmaxX; {Schrittweiten}

deltay:=(o-u)/getmaxY;

y:=u;

for ybereich:=0 to getmaxY do

begin

x:=l;

for xbereich:=0 to getmaxX do

begin

if mandelbrot(x,y,itermax,wunsch,iter) then putpixel(xbereich,getmaxy-ybereich,2)

else if iter>75 then putpixel(xbereich,getmaxy-ybereich,8)

else if iter>50 then putpixel(xbereich,getmaxy-ybereich,4)

else if iter>35 then putpixel(xbereich,getmaxy-ybereich,4)

else if iter>25 then putpixel(xbereich,getmaxy-ybereich,7)

else if odd(iter) then putpixel(xbereich,getmaxy-ybereich,9)

else putpixel(xbereich,getmaxy-ybereich,1);

x:=x+deltax;

end;

y:=y+deltay;

end;

end;

procedure eingeben(var l,r,u,o:extended;var itermax:integer;var wunsch:char);

var option:char;

begin

gotoxy(3,4);writeln('Apfelmännchen oder Mandelbrotmenge in gewünschtem Ausschnitt');

gotoxy(3,5);writeln('Auswahl des Iterationstyps: ');

gotoxy(5,7);writeln('x^2-c (2.Grades sog. Apfelmännchen) wähle<1>');

gotoxy(5,8);writeln('x^3-c (3.Grades wähle<2>');

gotoxy(5,9);writeln('x^4-c (4.Grades wähle<3>');

gotoxy(5,10);writeln('e^x-c (Exponentiell wähle<4>');

gotoxy(30,5);readln(wunsch);

gotoxy(7,12);write('links:(>-1) ');readln(l);

gotoxy(7,13);write('rechts:(<2 ) ');readln(r);

gotoxy(7,14);write('unten:(>-1) ');readln(u);

gotoxy(7,15);write('oben:(<1) ');readln(o);

gotoxy(7,16);write('Iterationen:(>10) ');readln(itermax);

gotoxy(7,18);write('Einstellung der Höhenlinien und des Übergangsbereichs nur im Quelltext möglich.');

end;

begin {Hauptprogramm}

clrscr;

repeat

eingeben(l,r,u,o,itermax,wunsch);

treiber:=detect;

initgraph(treiber,modus,'c:\tp\bgi');

mapping(l,r,u,o,itermax);

readln;

closegraph;

writeln('noch einmal?');

writeln('alte werte:',l:12:8, r:12:8, u:12:8, o:12:8, itermax:6);

readln(neu);

until neu in ['N','n'];

end.

Apfelmännchen