unit Unit4; { This software has been designed and it is CopyLefted by Han de Bruijn: (===) @-O^O-@ #/_\# ### } INTERFACE uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Grafisch; type TForm1 = class(TForm) Image1: TImage; procedure Toetsdruk(Sender: TObject; var Key: Char); procedure Scheppen(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; IMPLEMENTATION {$R *.dfm} function macht(x,y : double) : double; { x^y } begin macht := exp(y*ln(x)); end; function tower(x : double; n : integer) : double; { Power Tower iteratively } var f : double; k : integer; begin f := x; for k := 1 to n do f := macht(x,f); tower := f; end; procedure test(n : integer; kleur : Tcolor); { Test } var i,j : integer; x,y : double; begin with Form1.Image1.Canvas do begin Pen.Color := clYellow; MoveTo(x2i(xmin),y2j(0)); LineTo(x2i(xmax),y2j(0)); MoveTo(x2i(0),y2j(ymin)); LineTo(x2i(0),y2j(ymax)); MoveTo(x2i(1),y2j(ymin)); LineTo(x2i(1),y2j(ymax)); MoveTo(x2i(xmin),y2j(1)); LineTo(x2i(xmax),y2j(1)); Pen.Color := kleur; end; if (n mod 2) = 1 then Form1.Image1.Canvas.MoveTo(x2i(0),y2j(1)) else Form1.Image1.Canvas.MoveTo(x2i(0),y2j(0)); for i := x2i(0.01) to x2i(exp(1/exp(1)))-1 do begin x := i2x(i); y := tower(x,n); Form1.Image1.Canvas.LineTo(x2i(x),y2j(y)); end; Form1.Image1.Canvas.MoveTo(x2i(0),y2j(0)); Form1.Image1.Canvas.Pen.Color := clBlack; for j := y2j(0.01) downto y2j(exp(1)) do begin y := j2y(j); x := exp(ln(y)/y); Form1.Image1.Canvas.LineTo(x2i(x),y2j(y)); end; end; procedure punt; { Bifurcation point } var i,j : integer; x,y : double; begin x := exp(-exp(1)); y := 1/exp(1); i := x2i(x); j := y2j(y); with Form1.Image1.Canvas do begin Pen.Color := clBlack; Brush.Color := clBlack; Ellipse(i-3,j-3,i+3,j+3); end; end; procedure TForm1.Toetsdruk(Sender: TObject; var Key: Char); { On KeyPress } begin Exit; end; procedure TForm1.Scheppen(Sender: TObject); { At Creation } const veel : integer = 100; var k : integer; begin xmin := -0.1; xmax := exp(1/exp(1))+0.1; ymin := -0.1; ymax := exp(1)+0.1; TV(Form1.Image1); ClearDevice; Form1.Image1.Canvas.Pen.Width := 1; for k := 0 to veel do if (k mod 2) = 1 then test(k,clRed) else test(k,clBlue); punt; Form1.Image1.Picture.SaveToFile('iteraties.bmp'); end; END.