Autor Beitrag
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 28.03.03 14:38 
Hi,

ich suche eine Funktion, die mehr die im Titel angegebenen Informationen ausrechnet - im Prinzip so etwas wie ein Oster-Algorithmus, der halt nicht Ostern, sondern Sonnenaufgang... berechnet.

Code wäre super - Links, die nichts bringen, kenn ich schon ;)

AXMD
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Fr 28.03.03 15:31 
AXMD wiso schreibst du denn nicht den oster algo um??? :shock:

must doch nur andere werte einflicken oder etwa nicht?
so wie ich den in erinnerung habe....

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
Adrian
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 314



BeitragVerfasst: So 30.03.03 11:20 
Titel: Sonnenauf/untergang
Hallo AXMD,

manchmal habe ich ein offenes Ohr für astronomische Fragen, und nachdem mich Deine Frage interessiert hat, habe ich ein wenig gegoogelt, um an die Grundlagen zu kommen. Unter lexikon.astronomie.info/zeitgleichung findet man dieselben, aber Du wolltest ja ein Code-Beispiel, welches hier folgt:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
procedure TForm1.Button1Click(Sender: TObject);
var
  Laenge : Real;//Längengrad des Standorts, Bogenmaß
  Breite : Real;//Breitengrad des Standorts, Bogenmaß
  h : Real;//Korrekturfaktor für Lichtbeugung in Horzontnähe
  Deklination : Real;
  Zeitdifferenz : Real;
  Zeitgleichung : Real;
  Woz_a : Real;//wahre Ortszeit Sonnenaufgang
  Woz_u : Real;//wahre Ortszeit Sonnenuntergang
  Moz_a : Real;//mittlere Ortszeit Sonnenaufgang
  Moz_u : Real;//mittlere Ortszeit Sonnenuntergang
  T : Real;//Tageszahl, 1.Jan=1, 31.Dez=365 bzw. 366
  Aufgang_Std, Aufgang_Min : Real;
  Untergang_Std, Untergang_Min : Real;
begin
  Laenge:=0.1745329;//10°ö.L.
  Breite:=0.8726646;//50°n.B.
  T:=90;//31. März
  h:=-0.0145;//Konstante, 50 Bogenminuten
  Deklination:=0.40954*sin(0.0172*(T-79.349740));
  Zeitdifferenz:=12*arccos((sin(h)-sin(Breite)*sin(Deklination))/(cos(Breite)*cos(Deklination)))/Pi;
  Woz_a:=12-Zeitdifferenz;
  Woz_u:=12+Zeitdifferenz;
  Zeitgleichung:=-0.1752*sin(0.033430*T+0.5474)-0.1340*sin(0.018234*T-0.1939);
  Moz_a:=Woz_a-Zeitgleichung+((15-(Laenge*180/Pi))*4/60);
  Moz_u:=Woz_u-Zeitgleichung+((15-(Laenge*180/Pi))*4/60);
  Aufgang_Std:=Int(Moz_a);
  Aufgang_Min:=Int(60*(Moz_a-Int(Moz_a)));
  Edit1.Text:=FloatToStr(Aufgang_Std)+' h '+FloatToStr(Aufgang_Min)+' m';
  Untergang_Std:=Int(Moz_u);
  Untergang_Min:=Int(60*(Moz_u-Int(Moz_u)));
  Edit2.Text:=FloatToStr(Untergang_Std)+' h '+FloatToStr(Untergang_Min)+' m';
end;

Wie gesagt, es ist nur ein simples Beispiel, das aber immerhin recht gut funktioniert (hab's mit dem Kosmos-Himmelsjahr verglichen, es treten Abweichungen bis zu 7 Minuten auf), für die Polarregionen sollte man es aber lieber nicht verwenden.
Nicht vergessen: Die Unit "Math" muß eingebunden werden!
Man kann noch einiges verbessern, z.B. könnten die Standortkoordinaten im normalen Grad-Modus eingegeben werden und die Tageszahl kann man auch aus dem Datum errechnen.
@Foxy: Von der Berechnung des Osterdatums zum Sonnenaufgang ist ein himmelweiter Unterschied. Ostern gibt's nur einmal im Jahr, und das überall gleichzeitig, den Sonnenauf- bzw. -untergang gibt's täglich, und dazu noch stark vom Standort abhänging.

Gruß,

Adrian

P.S.: Hoppla, da habe ich doch übersehen, daß Du auch noch Berechnungen für den Mond willst, werde mal schauen, was ich da finde...
AXMD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 31.03.03 14:25 
:shock: wow. So viel Arbeit nur für mich ;)

Nein, im Ernst: vielen, vielen Dank. Werd den Code mal testen.

THX,
AXMD
AXMD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 01.04.03 07:48 
Ach ja: ich hab den Code jetzt getestet und vermisse eine Keinigkeit: wie kann ich außer einem Tag auch noch ein Jahr eingeben - denn es macht ja einen Unterschied, ob Schaltjahr oder nicht.

AXMD
Adrian
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 314



BeitragVerfasst: Di 01.04.03 08:53 
Titel: Schaltjahr
Hallo,

Du mußt ja irgendwie der Variable T einen Wert zuweisen, da wäre es doch einfach, wenn Du Dir eine Funktion schreibst, die aus dem Datum den Tag im Jahr ausrechnet.

Gruß,

Adrian
AXMD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 02.04.03 07:45 
Hi,

hab ich schon gemacht und komme gerade drauf: es ist egal, ob Schaltjahr oder nicht, weil am 366. Tag eben die Sonne wieder etwas früher aufgeht :oops: .
Wäre super, wenn du mir auch zu den Mondphasen noch Code schicken könntest.

AXMD

PS.: Hab mal testweise ein Proggy aus dem Code gemacht: dustsigns.tripod.com/sonne.exe <-- Link nicht direkt verwenden (Tripod!)
Adrian
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 314



BeitragVerfasst: Do 03.04.03 01:34 
Titel: Die Mondphasen
Hallo AXMD,

so, jetzt habe ich auch noch was für die Mondphase bei freenet.de gefunden, was ich in ein Code-Beispiel umgesetzt habe:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
var
  Phase : Real;
  Datum : Real;
  T, Jahr : Real;
begin
  T:=90;//31.März
  Jahr:=2003;
  Datum:=(T/365)+Jahr;
  Phase:=(Datum - 2000) * 12.3685 - 0.19;
  Edit1.Text:=FloatToStr(Frac(Phase));
  {
  Hinweis:
  Es entspricht
  .00 dem Neumond
  .25 dem Ersten Viertel
  .50 dem Vollmond und
  .75 dem Letzten Viertel
  }
end;

Auch hier gilt natürlich wieder das Beispiel-Prinzip: Der Code paßt, aber die Eingabe des Datums, die Berücksichtigung eines Schaltjahrs und die graphische Umsetzung der Mondphase habe ich mir gespart, da kannst Du Deiner Kreativität freien Lauf lassen.

Gruß,

Adrian
AXMD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 03.04.03 07:47 
Wow! Vielen Dank!

So schnell und so gut funktionierenden Code habe ich noch selten bekommen. Danke

AXMD