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} type punt = record x,y : double; end; function pad(x,y : double) : punt; { Point } var p : punt; begin p.x := x; p.y := y; pad := p; end; procedure naar(p : punt); { MoveTo } begin with Form1.Image1.Canvas do begin MoveTo(x2i(p.x),y2j(p.y)); end; end; procedure lijn(p : punt); { LineTo } begin with Form1.Image1.Canvas do begin LineTo(x2i(p.x),y2j(p.y)); end; end; procedure just_doit; { Make Picture & Calculation } var k,veel : integer; L : double; begin ClearDevice; with Form1.Image1.Canvas do begin Pen.Width := 2; Pen.Color := clBlack; end; naar(pad(0,0)); lijn(pad(1,0)); lijn(pad(1,1)); lijn(pad(0,1)); lijn(pad(0,0)); with Form1.Image1.Canvas do Pen.Color := clRed; naar(pad(1,0)); lijn(pad(1/2,1)); lijn(pad(0,0)); with Form1.Image1.Canvas do Pen.Color := clGreen; veel := Round(arctan(3/4)*180); naar(pad(1,0)); for k := 0 to veel do begin lijn(pad(cos(k/180),sin(k/180))); end; naar(pad(0,0)); for k := 0 to veel do begin lijn(pad(1-cos(k/180),sin(k/180))); end; naar(pad(4/5,3/5)); lijn(pad(1/2,1)); naar(pad(1-4/5,3/5)); lijn(pad(1/2,1)); L := arctan(3/4) + 1/2; Writeln('Minimum =',2*L,' >',sqrt(5)); Form1.Image1.Picture.SaveToFile('einde.bmp'); end; procedure TForm1.Toetsdruk(Sender: TObject; var Key: Char); { On KeyPress } begin Exit; end; procedure TForm1.Scheppen(Sender: TObject); { At Creation } begin xmin := -0.1; xmax := 1.1; ymin := -0.1; ymax := 1.1; TV(Form1.Image1); just_doit; end; END.