diff --git a/astroCalc b/astroCalc
new file mode 100755
index 0000000..f52dd51
Binary files /dev/null and b/astroCalc differ
diff --git a/astroCalc.ico b/astroCalc.ico
new file mode 100644
index 0000000..0341321
Binary files /dev/null and b/astroCalc.ico differ
diff --git a/astroCalc.lpi b/astroCalc.lpi
new file mode 100644
index 0000000..abad6b7
--- /dev/null
+++ b/astroCalc.lpi
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/astroCalc.lpr b/astroCalc.lpr
new file mode 100644
index 0000000..70683db
--- /dev/null
+++ b/astroCalc.lpr
@@ -0,0 +1,22 @@
+program astroCalc;
+
+{$mode objfpc}{$H+}
+
+uses
+ {$IFDEF UNIX}{$IFDEF UseCThreads}
+ cthreads,
+ {$ENDIF}{$ENDIF}
+ Interfaces, // this includes the LCL widgetset
+ Forms, Unit1
+ { you can add units after this };
+
+{$R *.res}
+
+begin
+ RequireDerivedFormResource:=True;
+ Application.Scaled:=True;
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
+
diff --git a/astroCalc.lps b/astroCalc.lps
new file mode 100644
index 0000000..3ea35e3
--- /dev/null
+++ b/astroCalc.lps
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/astroCalc.res b/astroCalc.res
new file mode 100644
index 0000000..bec39b4
Binary files /dev/null and b/astroCalc.res differ
diff --git a/backup/astroCalc.lpi b/backup/astroCalc.lpi
new file mode 100644
index 0000000..4180b2e
--- /dev/null
+++ b/backup/astroCalc.lpi
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backup/astroCalc.lps b/backup/astroCalc.lps
new file mode 100644
index 0000000..92ab886
--- /dev/null
+++ b/backup/astroCalc.lps
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backup/unit1.lfm b/backup/unit1.lfm
new file mode 100644
index 0000000..30a7487
--- /dev/null
+++ b/backup/unit1.lfm
@@ -0,0 +1,154 @@
+object Form1: TForm1
+ Left = 269
+ Height = 240
+ Top = 152
+ Width = 320
+ Caption = 'Form1'
+ ClientHeight = 240
+ ClientWidth = 320
+ LCLVersion = '2.0.12.0'
+ object PageControl1: TPageControl
+ AnchorSideRight.Side = asrBottom
+ AnchorSideBottom.Side = asrBottom
+ Left = 0
+ Height = 248
+ Top = 0
+ Width = 320
+ ActivePage = TabSheet1
+ Align = alCustom
+ Anchors = [akTop, akLeft, akRight, akBottom]
+ TabIndex = 1
+ TabOrder = 0
+ OnChange = PageControl1Change
+ object ML: TTabSheet
+ Caption = 'M->L'
+ ClientHeight = 223
+ ClientWidth = 320
+ OnContextPopup = MLContextPopup
+ object LabeledEdit1: TLabeledEdit
+ Left = 248
+ Height = 29
+ Top = 24
+ Width = 48
+ EditLabel.Height = 17
+ EditLabel.Width = 189
+ EditLabel.Caption = 'Absolute Helligkeit M = '
+ EditLabel.ParentColor = False
+ LabelPosition = lpLeft
+ TabOrder = 0
+ Text = '0'
+ OnChange = LabeledEdit1Change
+ end
+ object LabeledEdit2: TLabeledEdit
+ Left = 192
+ Height = 29
+ Top = 112
+ Width = 104
+ EditLabel.Height = 17
+ EditLabel.Width = 166
+ EditLabel.Caption = 'rel. Leuchtkraft L* = '
+ EditLabel.Color = clHighlightText
+ EditLabel.ParentColor = False
+ LabelPosition = lpLeft
+ TabOrder = 1
+ OnChange = LabeledEdit2Change
+ end
+ object LabeledEdit3: TLabeledEdit
+ Left = 136
+ Height = 29
+ Top = 152
+ Width = 137
+ EditLabel.Height = 17
+ EditLabel.Width = 128
+ EditLabel.Caption = 'Leuchtkraft L = '
+ EditLabel.Color = clYellow
+ EditLabel.ParentColor = False
+ LabelPosition = lpLeft
+ TabOrder = 2
+ OnChange = LabeledEdit3Change
+ end
+ object BitBtn1: TBitBtn
+ Left = 72
+ Height = 30
+ Top = 72
+ Width = 164
+ Caption = 'Berechne'
+ OnClick = BitBtn1Click
+ TabOrder = 3
+ end
+ object Label1: TLabel
+ Left = 280
+ Height = 17
+ Top = 160
+ Width = 16
+ Caption = 'W'
+ ParentColor = False
+ end
+ end
+ object TabSheet1: TTabSheet
+ Caption = 'L->M'
+ ClientHeight = 223
+ ClientWidth = 320
+ object LabeledEdit4: TLabeledEdit
+ Left = 192
+ Height = 29
+ Top = 16
+ Width = 104
+ EditLabel.Height = 17
+ EditLabel.Width = 170
+ EditLabel.Caption = 'Rel. Leuchtkraft L* = '
+ EditLabel.ParentColor = False
+ LabelPosition = lpLeft
+ TabOrder = 0
+ Text = '1'
+ OnChange = LabeledEdit4Change
+ OnEditingDone = LabeledEdit4EditingDone
+ end
+ object LabeledEdit5: TLabeledEdit
+ Left = 144
+ Height = 29
+ Top = 56
+ Width = 128
+ EditLabel.Height = 17
+ EditLabel.Width = 128
+ EditLabel.Caption = 'Leuchtkraft L = '
+ EditLabel.ParentColor = False
+ LabelPosition = lpLeft
+ TabOrder = 1
+ Text = '3.828e26'
+ OnChange = LabeledEdit5Change
+ OnEditingDone = LabeledEdit5EditingDone
+ end
+ object Label2: TLabel
+ Left = 280
+ Height = 17
+ Top = 64
+ Width = 16
+ Caption = 'W'
+ ParentColor = False
+ end
+ object Button1: TButton
+ Left = 80
+ Height = 25
+ Top = 104
+ Width = 152
+ Caption = 'Berechne'
+ OnClick = Button1Click
+ TabOrder = 2
+ end
+ object LabeledEdit6: TLabeledEdit
+ Left = 208
+ Height = 29
+ Top = 152
+ Width = 88
+ EditLabel.Height = 17
+ EditLabel.Width = 189
+ EditLabel.Caption = 'Absolute Helligkeit M = '
+ EditLabel.ParentColor = False
+ LabelPosition = lpLeft
+ TabOrder = 3
+ OnChange = LabeledEdit6Change
+ end
+ end
+ end
+end
diff --git a/backup/unit1.pas b/backup/unit1.pas
new file mode 100644
index 0000000..9df7c98
--- /dev/null
+++ b/backup/unit1.pas
@@ -0,0 +1,194 @@
+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.
+
diff --git a/lib/x86_64-linux/astroCalc.compiled b/lib/x86_64-linux/astroCalc.compiled
new file mode 100644
index 0000000..e1ca881
--- /dev/null
+++ b/lib/x86_64-linux/astroCalc.compiled
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/lib/x86_64-linux/astroCalc.o b/lib/x86_64-linux/astroCalc.o
new file mode 100644
index 0000000..a6003a9
Binary files /dev/null and b/lib/x86_64-linux/astroCalc.o differ
diff --git a/lib/x86_64-linux/astroCalc.or b/lib/x86_64-linux/astroCalc.or
new file mode 100644
index 0000000..bae02c6
Binary files /dev/null and b/lib/x86_64-linux/astroCalc.or differ
diff --git a/lib/x86_64-linux/astroCalc.res b/lib/x86_64-linux/astroCalc.res
new file mode 100644
index 0000000..bec39b4
Binary files /dev/null and b/lib/x86_64-linux/astroCalc.res differ
diff --git a/lib/x86_64-linux/unit1.lfm b/lib/x86_64-linux/unit1.lfm
new file mode 100644
index 0000000..ffddad0
--- /dev/null
+++ b/lib/x86_64-linux/unit1.lfm
@@ -0,0 +1,146 @@
+object Form1: TForm1
+ Left = 421
+ Height = 240
+ Top = 140
+ Width = 320
+ Caption = 'Form1'
+ ClientHeight = 240
+ ClientWidth = 320
+ LCLVersion = '2.2.0.4'
+ object PageControl1: TPageControl
+ AnchorSideRight.Side = asrBottom
+ AnchorSideBottom.Side = asrBottom
+ Left = 0
+ Height = 248
+ Top = 0
+ Width = 320
+ ActivePage = TabSheet1
+ Align = alCustom
+ Anchors = [akTop, akLeft, akRight, akBottom]
+ TabIndex = 1
+ TabOrder = 0
+ OnChange = PageControl1Change
+ object ML: TTabSheet
+ Caption = 'M->L'
+ ClientHeight = 209
+ ClientWidth = 310
+ OnContextPopup = MLContextPopup
+ object LabeledEdit1: TLabeledEdit
+ Left = 248
+ Height = 37
+ Top = 24
+ Width = 48
+ EditLabel.Height = 25
+ EditLabel.Width = 192
+ EditLabel.Caption = 'Absolute Helligkeit M = '
+ LabelPosition = lpLeft
+ TabOrder = 0
+ Text = '0'
+ OnChange = LabeledEdit1Change
+ end
+ object LabeledEdit2: TLabeledEdit
+ Left = 192
+ Height = 37
+ Top = 112
+ Width = 104
+ EditLabel.Height = 25
+ EditLabel.Width = 168
+ EditLabel.Caption = 'rel. Leuchtkraft L* = '
+ EditLabel.Color = clHighlightText
+ LabelPosition = lpLeft
+ TabOrder = 1
+ OnChange = LabeledEdit2Change
+ end
+ object LabeledEdit3: TLabeledEdit
+ Left = 136
+ Height = 37
+ Top = 152
+ Width = 137
+ EditLabel.Height = 25
+ EditLabel.Width = 127
+ EditLabel.Caption = 'Leuchtkraft L = '
+ EditLabel.Color = clYellow
+ LabelPosition = lpLeft
+ TabOrder = 2
+ OnChange = LabeledEdit3Change
+ end
+ object BitBtn1: TBitBtn
+ Left = 72
+ Height = 30
+ Top = 72
+ Width = 164
+ Caption = 'Berechne'
+ OnClick = BitBtn1Click
+ TabOrder = 3
+ end
+ object Label1: TLabel
+ Left = 280
+ Height = 25
+ Top = 160
+ Width = 16
+ Caption = 'W'
+ end
+ end
+ object TabSheet1: TTabSheet
+ Caption = 'L->M'
+ ClientHeight = 209
+ ClientWidth = 310
+ object LabeledEdit4: TLabeledEdit
+ Left = 192
+ Height = 37
+ Top = 16
+ Width = 104
+ EditLabel.Height = 25
+ EditLabel.Width = 172
+ EditLabel.Caption = 'Rel. Leuchtkraft L* = '
+ LabelPosition = lpLeft
+ TabOrder = 0
+ Text = '1'
+ OnChange = LabeledEdit4Change
+ OnEditingDone = LabeledEdit4EditingDone
+ end
+ object LabeledEdit5: TLabeledEdit
+ Left = 144
+ Height = 37
+ Top = 56
+ Width = 128
+ EditLabel.Height = 25
+ EditLabel.Width = 127
+ EditLabel.Caption = 'Leuchtkraft L = '
+ LabelPosition = lpLeft
+ TabOrder = 1
+ Text = '3.828e26'
+ OnChange = LabeledEdit5Change
+ OnEditingDone = LabeledEdit5EditingDone
+ end
+ object Label2: TLabel
+ Left = 280
+ Height = 25
+ Top = 64
+ Width = 16
+ Caption = 'W'
+ end
+ object Button1: TButton
+ Left = 80
+ Height = 25
+ Top = 104
+ Width = 152
+ Caption = 'Berechne'
+ OnClick = Button1Click
+ TabOrder = 2
+ end
+ object LabeledEdit6: TLabeledEdit
+ Left = 208
+ Height = 37
+ Top = 152
+ Width = 88
+ EditLabel.Height = 25
+ EditLabel.Width = 192
+ EditLabel.Caption = 'Absolute Helligkeit M = '
+ LabelPosition = lpLeft
+ TabOrder = 3
+ OnChange = LabeledEdit6Change
+ end
+ end
+ end
+end
diff --git a/lib/x86_64-linux/unit1.o b/lib/x86_64-linux/unit1.o
new file mode 100644
index 0000000..c64d593
Binary files /dev/null and b/lib/x86_64-linux/unit1.o differ
diff --git a/lib/x86_64-linux/unit1.ppu b/lib/x86_64-linux/unit1.ppu
new file mode 100644
index 0000000..0e9c653
Binary files /dev/null and b/lib/x86_64-linux/unit1.ppu differ
diff --git a/unit1.lfm b/unit1.lfm
new file mode 100644
index 0000000..ffddad0
--- /dev/null
+++ b/unit1.lfm
@@ -0,0 +1,146 @@
+object Form1: TForm1
+ Left = 421
+ Height = 240
+ Top = 140
+ Width = 320
+ Caption = 'Form1'
+ ClientHeight = 240
+ ClientWidth = 320
+ LCLVersion = '2.2.0.4'
+ object PageControl1: TPageControl
+ AnchorSideRight.Side = asrBottom
+ AnchorSideBottom.Side = asrBottom
+ Left = 0
+ Height = 248
+ Top = 0
+ Width = 320
+ ActivePage = TabSheet1
+ Align = alCustom
+ Anchors = [akTop, akLeft, akRight, akBottom]
+ TabIndex = 1
+ TabOrder = 0
+ OnChange = PageControl1Change
+ object ML: TTabSheet
+ Caption = 'M->L'
+ ClientHeight = 209
+ ClientWidth = 310
+ OnContextPopup = MLContextPopup
+ object LabeledEdit1: TLabeledEdit
+ Left = 248
+ Height = 37
+ Top = 24
+ Width = 48
+ EditLabel.Height = 25
+ EditLabel.Width = 192
+ EditLabel.Caption = 'Absolute Helligkeit M = '
+ LabelPosition = lpLeft
+ TabOrder = 0
+ Text = '0'
+ OnChange = LabeledEdit1Change
+ end
+ object LabeledEdit2: TLabeledEdit
+ Left = 192
+ Height = 37
+ Top = 112
+ Width = 104
+ EditLabel.Height = 25
+ EditLabel.Width = 168
+ EditLabel.Caption = 'rel. Leuchtkraft L* = '
+ EditLabel.Color = clHighlightText
+ LabelPosition = lpLeft
+ TabOrder = 1
+ OnChange = LabeledEdit2Change
+ end
+ object LabeledEdit3: TLabeledEdit
+ Left = 136
+ Height = 37
+ Top = 152
+ Width = 137
+ EditLabel.Height = 25
+ EditLabel.Width = 127
+ EditLabel.Caption = 'Leuchtkraft L = '
+ EditLabel.Color = clYellow
+ LabelPosition = lpLeft
+ TabOrder = 2
+ OnChange = LabeledEdit3Change
+ end
+ object BitBtn1: TBitBtn
+ Left = 72
+ Height = 30
+ Top = 72
+ Width = 164
+ Caption = 'Berechne'
+ OnClick = BitBtn1Click
+ TabOrder = 3
+ end
+ object Label1: TLabel
+ Left = 280
+ Height = 25
+ Top = 160
+ Width = 16
+ Caption = 'W'
+ end
+ end
+ object TabSheet1: TTabSheet
+ Caption = 'L->M'
+ ClientHeight = 209
+ ClientWidth = 310
+ object LabeledEdit4: TLabeledEdit
+ Left = 192
+ Height = 37
+ Top = 16
+ Width = 104
+ EditLabel.Height = 25
+ EditLabel.Width = 172
+ EditLabel.Caption = 'Rel. Leuchtkraft L* = '
+ LabelPosition = lpLeft
+ TabOrder = 0
+ Text = '1'
+ OnChange = LabeledEdit4Change
+ OnEditingDone = LabeledEdit4EditingDone
+ end
+ object LabeledEdit5: TLabeledEdit
+ Left = 144
+ Height = 37
+ Top = 56
+ Width = 128
+ EditLabel.Height = 25
+ EditLabel.Width = 127
+ EditLabel.Caption = 'Leuchtkraft L = '
+ LabelPosition = lpLeft
+ TabOrder = 1
+ Text = '3.828e26'
+ OnChange = LabeledEdit5Change
+ OnEditingDone = LabeledEdit5EditingDone
+ end
+ object Label2: TLabel
+ Left = 280
+ Height = 25
+ Top = 64
+ Width = 16
+ Caption = 'W'
+ end
+ object Button1: TButton
+ Left = 80
+ Height = 25
+ Top = 104
+ Width = 152
+ Caption = 'Berechne'
+ OnClick = Button1Click
+ TabOrder = 2
+ end
+ object LabeledEdit6: TLabeledEdit
+ Left = 208
+ Height = 37
+ Top = 152
+ Width = 88
+ EditLabel.Height = 25
+ EditLabel.Width = 192
+ EditLabel.Caption = 'Absolute Helligkeit M = '
+ LabelPosition = lpLeft
+ TabOrder = 3
+ OnChange = LabeledEdit6Change
+ end
+ end
+ end
+end
diff --git a/unit1.pas b/unit1.pas
new file mode 100644
index 0000000..9df7c98
--- /dev/null
+++ b/unit1.pas
@@ -0,0 +1,194 @@
+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.
+