unit Unit9; { This software has been designed and is CopyLefted by Han de Bruijn: (===) @-O^O-@ #/_\# ### Least Squares best fit to a Hyperbola y = B/(x-A) of the Year/Light-speed data from relevant tables in * The Atomic Constants, Light, and Time * http://www.setterfield.org/report/report.html } interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Grafisch, tabellen, algemeen, rekenen; type TForm1 = class(TForm) Image1: TImage; procedure Scheppen(Sender: TObject); procedure Toetsdruk(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var keer : byte; procedure plaatje(A,B : double; kleur : TColor); var x,y : double; i,j : integer; begin Form1.Image1.Canvas.Pen.Color := kleur; x := i2x(0); y := B/(x-A); j := y2j(y); Form1.Image1.Canvas.MoveTo(0,j); for i := 1 to Wijd-1 do begin x := i2x(i); y := B/(x-A); j := y2j(y); if x > A then Form1.Image1.Canvas.LineTo(i,j); if x <= A then Form1.Image1.Canvas.MoveTo(i,j); end; if A < xmin then Exit; if A > xmax then Exit; Form1.Image1.Canvas.Pen.Color := clBlack; Form1.Image1.Canvas.MoveTo(x2i(A),0); Form1.Image1.Canvas.LineTo(x2i(A),Hoog-1); end; procedure Tekenen; const delta : double = 1; var i,j,L,k,maal : integer; A,B,R,fout : double; jaar,licht,w : lijst; eps : punt; begin SetLength(jaar,0); SetLength(licht,0); Gegevens(keer,jaar,licht); L := Length(jaar); SetLength(w,L); Form1.Image1.Canvas.Pen.Color := clBlack; Form1.Image1.Canvas.Pen.Width := 2; { Display Data } for k := 0 to L-1 do begin if licht[k] = 0 then Continue; i := x2i(jaar[k]); j := y2j(licht[k]); Form1.Image1.Canvas.Ellipse(i-3,j-3,i+3,j+3); w[k] := 1; end; if not(keer in [5,6,9,10]) then begin uitkijken(jaar,licht,A,B); { Plaatje(A,B,clOlive); } Plaatje(A,B,clGreen); kijkuit(jaar,licht,A,B,R); Plaatje(A,B,clGreen); end; if not(keer in [6]) then begin Raaklijn(jaar,licht,w,A,B,R); Plaatje(A,B,clBlue); end; if not(keer in [2,5,6,9,10,13]) then begin Jacquelin(jaar,licht,A,B); Plaatje(A,B,clBlue); end; uitkijken(jaar,licht,A,B); if (A < 0) and (keer in [1,3,4,7,8,11,12]) then begin for maal := 0 to 20 do begin NewtonHdB(jaar,licht,A,B,eps); if (eps.x < delta) then Break; end; { Plaatje(A,B,clMaroon); } Plaatje(A,B,clRed); end; uitkijken(jaar,licht,A,B); if (A < 0) and (keer in [1,3,4,7,11,12]) then begin for maal := 0 to 20 do begin Leibovici(jaar,licht,A,B,fout); if (fout < delta) then Break; end; Plaatje(A,B,clRed); end; Form1.Image1.Picture.SaveToFile('uit'+Letterlijk(keer)+'.bmp'); end; procedure TForm1.Scheppen(Sender: TObject); begin ForceCurrentDirectory := true; keer := 1; TV(Form1.Image1); ClearDevice; xmin := 1600; xmax := 2000; ymin := 290000; ymax := 310000; { ymin := 280000; ymax := 360000; } { xmin := -60000; xmax := 2000; ymin := 0; ymax := 13600000; } { xmin := 1730; xmax := 1950; ymin := 290000; ymax := 310000; } Tekenen; Writeln; end; procedure TForm1.Toetsdruk(Sender: TObject; var Key: Char); begin ClearDevice; keer := keer + 1; if keer = 14 then Halt; Tekenen; Writeln; end; end.