Ich habe mir mal das Skript von Dako viewtopic.php?f=31&t=22783 für die der Mondphasenberechnung angeschaut und irgendwie stimmt da mit der Berechnung etwas nicht.
Gemäss diesem Link ist heute Neumond https://www.timeanddate.de/mond/phasen/ ... /allschwil, also 0% Mondphase, doch das Skript berechnet bei mir 99% Mondphase und abnehmender Mond. Das mit dem abnehmendem Mond kann ich ja noch verstehen, da der Neumond erst um 21:44 Uhr ist, aber die Mondphase müsste doch bei Vollmond bei 100% stehen.
Somit müsste die Mondphase nochmals neu gerechnet werden, da 0% = Neumond, 1% = zunehmender Neumond, 51% = zunehmender Halbmond, 100% = Vollmond, 99% = abnehmender Vollmond, 49% = abnehmender Halbmond ist.
Das mit dem Mondstand habe ich hingebracht, da ich neu auf 200% rechne und die Texte für z3 angepasst habe. Aber wie kann ich jetzt im Skript ab 101%-200% retour rechnen das es 99%-0% ergibt um die Mondphase in % richtig darzustellen?
Code: Alles auswählen
!Script zur Mondphasenberechnung von Dako
!---------------------------------------------------
!Hinweise:
!Die Berechnung erfolgt mit dem durchschnittlichen synodischen Mondmonat, weshalb keine
!Stundengenaue Berechnung erfolgen kann
!---------------------------------------------------
!Systemvariablen:
!naechster_Vollmond (Zeichenkette): naechster Vollmond
!Mondstand (Zeichenkette): Mondphase in % (Neumond = 0%)
!Mondphase (Zeichenkette): Mondphase in Textform
!---------------------------------------------------
!Variablen definieren
real a_1 = 1.0*(system.Date("%F %X").ToTime().ToInteger()); !aktueller UNIX-Timestamp (1374688453)
real a_2 = 1106652740.0;!referenz vollmond
real a_3 = 2551443.0;!synodischer mondmonat
real a_4 = 1105362167.0;!referenz neumond
!Aktuelle Mondphase
real x2 = ((a_1-a_4)/a_3);
integer x3 = x2.ToInteger();
real x4 = (x2-x3)*200;
integer x5 = x4.ToInteger();
string z3 = "Fehler!";
if(x5 <= 199){z3 = "Neumond";}
if(x5 <= 151){z3 = "abnehmender Halbmond";}
if(x5 <= 101){z3 = "abnehmender Vollmond";}
if(x5 <= 99){z3 = "Vollmond";}
if(x5 <= 51){z3 = "zunehmender Halbmond";}
if(x5 <= 1){z3 = "Neumond";}
dom.GetObject("Mondstand").State(x5.ToString(0)#" %");!Ausgabe als Prozentzahl
dom.GetObject("Mondphase").State(z3);!Ausgabe als Text
!Naechster Vollmond am:
while(a_2 <= a_1){a_2 = a_2 + a_3;}
real x1 = a_2.ToTime();
string y1 = x1.Format("%d.%m.%Y");
dom.GetObject("naechster_Vollmond").State(y1);
Kann mir hier jemand einen Tipp geben?
Grüsse aus der Schweiz