195 lines
4.1 KiB
Plaintext
195 lines
4.1 KiB
Plaintext
unit Unit1;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
|
|
Buttons, StdCtrls, Math, Types;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
BitBtn1: TBitBtn;
|
|
Button1: TButton;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
LabeledEdit1: TLabeledEdit;
|
|
LabeledEdit2: TLabeledEdit;
|
|
LabeledEdit3: TLabeledEdit;
|
|
LabeledEdit4: TLabeledEdit;
|
|
LabeledEdit5: TLabeledEdit;
|
|
LabeledEdit6: TLabeledEdit;
|
|
PageControl1: TPageControl;
|
|
ML: TTabSheet;
|
|
TabSheet1: TTabSheet;
|
|
procedure BitBtn1Click(Sender: TObject);
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure LabeledEdit1Change(Sender: TObject);
|
|
procedure LabeledEdit2Change(Sender: TObject);
|
|
procedure LabeledEdit3Change(Sender: TObject);
|
|
procedure LabeledEdit4Change(Sender: TObject);
|
|
procedure LabeledEdit4EditingDone(Sender: TObject);
|
|
procedure LabeledEdit5Change(Sender: TObject);
|
|
procedure LabeledEdit5EditingDone(Sender: TObject);
|
|
procedure LabeledEdit6Change(Sender: TObject);
|
|
procedure MLContextPopup(Sender: TObject; MousePos: TPoint;
|
|
var Handled: Boolean);
|
|
procedure PageControl1Change(Sender: TObject);
|
|
private
|
|
function CalcAbsMFromL(L: Double): Double;
|
|
function CalcLstarFromAbsM(M: Double): Double;
|
|
function CalcLFromAbsM(M: Double): Double;
|
|
function CalcLFromLstar(Lstar: Double): Double;
|
|
function CalcLstarFromL(L: Double): Double;
|
|
public
|
|
|
|
end;
|
|
const
|
|
c = 299792458;
|
|
Msun = 4.84;
|
|
Lsun = 3.828e26;
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.PageControl1Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit2Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit1Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.BitBtn1Click(Sender: TObject);
|
|
var M, Lstar, L: Double;
|
|
begin
|
|
try
|
|
M := StrToFloat(LabeledEdit1.Text);
|
|
except
|
|
ShowMessage('keine Fließkommazahl');
|
|
M := 0;
|
|
end;
|
|
Lstar := CalcLstarFromAbsM(M);//Power(10, (M-Msun)/(-2.5));
|
|
L := CalcLFromLstar(Lstar);
|
|
|
|
Lstar := RoundTo(Lstar, -4);
|
|
L := RoundTo(L,23);
|
|
LabeledEdit2.Text := FloatToStr(Lstar);
|
|
LabeledEdit3.Text := FloatToStr(L);
|
|
end;
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
var L, M: Double;
|
|
begin
|
|
try
|
|
if LabeledEdit5.Text = '' then L := Lsun
|
|
else
|
|
L := StrToFloat(LabeledEdit5.Text);
|
|
except
|
|
ShowMessage('keine Fließkommazahl');
|
|
L := Lsun;
|
|
end;
|
|
M := CalcAbsMFromL(L);
|
|
LabeledEdit6.Text := FormatFloat('#.##',M);
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit3Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit4Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit4EditingDone(Sender: TObject);
|
|
var L, Lstar: Double;
|
|
begin
|
|
try
|
|
if LabeledEdit4.Text = '' then Lstar := 1
|
|
else
|
|
Lstar := StrToFloat(LabeledEdit4.Text);
|
|
except
|
|
ShowMessage('keine Fließkommazahl');
|
|
Lstar := 1;
|
|
end;
|
|
L := CalcLFromLstar(Lstar);
|
|
LabeledEdit5.Text := FormatFloat('0.000E+00',L);
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit5Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit5EditingDone(Sender: TObject);
|
|
var L, Lstar: Double;
|
|
begin
|
|
try
|
|
if LabeledEdit5.Text = '' then L := Lsun
|
|
else
|
|
L := StrToFloat(LabeledEdit5.Text);
|
|
except
|
|
ShowMessage('keine Fließkommazahl');
|
|
L := Lsun;
|
|
end;
|
|
Lstar := CalcLStarFromL(L);
|
|
LabeledEdit4.Text := FormatFloat('#.##',Lstar);
|
|
end;
|
|
|
|
procedure TForm1.LabeledEdit6Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.MLContextPopup(Sender: TObject; MousePos: TPoint;
|
|
var Handled: Boolean);
|
|
begin
|
|
|
|
end;
|
|
|
|
function TForm1.CalcAbsMFromL(L: Double): Double;
|
|
begin
|
|
CalcAbsMFromL := -2.5 * Log10( L / Lsun )+ Msun;
|
|
end;
|
|
|
|
function TForm1.CalcLstarFromAbsM(M: Double): Double;
|
|
begin
|
|
CalcLstarFromAbsM := Power(10, (M-Msun)/(-2.5));
|
|
end;
|
|
|
|
function TForm1.CalcLFromAbsM(M: Double): Double;
|
|
begin
|
|
CalcLFromAbsM := Lsun * Power(10, (M-Msun)/(-2.5));
|
|
end;
|
|
|
|
function TForm1.CalcLFromLstar(Lstar: Double): Double;
|
|
begin
|
|
CalcLFromLstar := Lstar * Lsun;
|
|
end;
|
|
|
|
function TForm1.CalcLstarFromL(L: Double): Double;
|
|
begin
|
|
CalcLstarFromL := L / Lsun;
|
|
end;
|
|
|
|
end.
|
|
|