Aktuelle Mondphase
Posted
#7641
(In Topic #782)
Andromedaner
Ich habe vor ein Programm zu schreiben, das die aktuelle Mondphase anzeigt.
(http://tycho.usno.navy.mil/cgi-bin/phase.gif)
Das ganze soll dann anstatt dem jetztigen Bild auf der Androhp erscheinen
Dazu fehlen mir noch entsprechende Bilder, die aber kein goßes Problem sein sollten, da man sie notfalls auch erzeugen kann (CdC, The Sky, ect.) Realbilder wären aber schon etwas schönes.
Vieleicht hat jemand ja eine ganze Serie zuhause herumliegen?!
Das wonach ich momentan suche, ist eine Art "Mondformel", die mir die aktuelle Mondphase berechnen kann.
Also z.B. "AktuellesDatum + Formel = Mondphase"
Hat zufällig jamand davon eine Ahnung?
bis dann
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Andromedaner
AW: Aktuelle Mondphase
Hier meine beiden Ideen:1. Ausrechnen.
Man lässt das Script mit einer genauigkeit die den Achteln des Mondes entspricht (also 12 Fotos, 1. Achtel, 2. Achtel…) rechnen und dann das entsprechende Bild anzeigen.
2. "Eigener" Mond
In dieser Idee schreibt man einfach ein Script, welches alle 2 Tage ein anderes Mondbild anzeigt (Neumond + 2Tage = 1. Achtelbild) und das wiederholt sich jeden kompletten Mondumlauf (Waren das nicht 28 Tage?).
Das Mondscript startet man dann genau syncron zur echten Mondphase.
Dann zeigen wir eine eigene Mondphase an, die mit der des echten Mondes syncron läuft…
letzeres ist nathülich viel weniger Arbeit, aber sehr viel ungenauer.
Gegebenenfalls muss man dann die Mondanzeige entsprechend berichtigen, und neu syncronisieren, wegen nicht miteinberechneten Sekunden, Stunden, Minuten, ect.
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Site director
AW: Aktuelle Mondphase
Hallo Nicolas!Deine Idee finde ich richtig klasse. Also ich persönlich würde deine erste Idee bevorzugen. Allerdings brächten wir da nach meiner Rechnung 16 Bilder (Vollmond, 7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8, Neumond, 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8). So da hab ich mir jetzt mal die Synodische Umlaufzeit des Mondes herausgesucht. Das ist die Zeit von Vollmond zu Vollmond. Diese beträgt 29 Tage 12 Stunden 44 Minuten 02,9 Sekunden. Damit man die Phasen dann Sekunden genau ändern kann habe ich das mal in Sekunden umgerechnet:
29 Tage = 2505600
12 Sunden = 43200
44 Minuten = 2640
+ 02,9
Die Gesamtzeit beträgt dann 2551442,9 Sekunden. Dann habe ich das ganze durch 16 geteilt, um zu berechnen nach wie viel Sekunden jeweils die Mondphase wechseln muss. Da bin ich dann auf 159465,18125 Sekunden gekommen. Jetzt musst du mit dem Vollmond anfangen und nach 159465,18125 Sekunden wechselst du zur nächsten Phase. So müsste das meiner Meinung nach eigentlich relativ gut funzen. Nur beim programmieren kann ich dir noch nicht helfen. Wenn du mir etwas Zeit geben würdest, könnte ich mich in dieses Gebiet ein bissl reinarbeiten.
Gruß
Falko
Posted
Andromedaner
AW: Aktuelle Mondphase
Hmm…Ich habe nochmal bei google nach einer Formel gesucht und haben das hier gefunden:
http://freenet.meome.d…s_article.jsp?catId=79424
Möchte man rechnerisch Abschätzen, welche Mondphase man zu einem gegebenen Zeitpunkt vorfinden wird, kann folgende Näherungsformel nützlich sein:
k = (Jahr - 2000) * 12,3685 - 0,19
Unter Jahr ist einfach das Jahr mit Dezimalen einzutragen (beispielsweise entspricht der 9. Februar 2002 gleich dem 40. Tag des Jahres = 2002.1096). Aus der Nachkommastelle von k lässt sich die Mondphase ablesen, wobei
.00 dem Neumond
.25 dem Ersten Viertel
.50 dem Vollmond und
.75 dem Letzten Viertel entspricht!
Klingt einfach, eine genauere Formel gibts garnicht.
Das einzige was jetzt massiv stört, ist das man zur Berechnung das Datum in Dezimalform braucht.
Hat jemand eine Formel??
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Guest user
AW: Aktuelle Mondphase
In welcher Sprache willst du das denn Programmieren?Die meisten Sprachen haben ja umfangreiche Funktion für Zeit und Datum, damit könnte man das bestimmt lösem, hängt dann aber halt von der Sprache ab.
Posted
Andromedaner
AW: Aktuelle Mondphase
Ok, ich habs mit ein paar Minuten stillem Nachdenken gelöst.Sie meinen wohl die Anzahl der Jahre, Tage und Monate als Dezimalzahl.
Wenn 1 Jahr dem Wert 1 entspricht, sind 0,1 Jahre 36,5 Tage.
D.h. der Jahrestag einfach geteilt durch 365.
Da 2004 ein Schaltjahr ist, geteilt durch 366…
PS:
Ich programmiere das ganze in PHP.
Leider gibt es da keine Möglichkeit direkt die dezimalzahl auszugeben..abver ich kann sie ja mit den restlichen Datumsfunktionen rechnen
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Guest user
AW: Aktuelle Mondphase
Achso, irgendwie hat ich das anders verstanden, aber die Lösung ist ja denkbar einfach
Posted
Andromedaner
AW: Aktuelle Mondphase
So weit so viel:[php]
<?php
$jahrestage = 366;
$jahr = date("Y");
$wochentage = date("W")*7;
$wochentag = date("w");
$jahrestag = $wochentage+$wochentag/$jahrestage;
$dezidatum = $jahr.$jahrestag;
$werta = 12.3685;
$wertb = 0.19;
$schritta = ($dezidatum-2000);
$schrittb = $schritta*$werta-$wertb;
echo "$schrittb";
?>[/php]
Diese Funktion soll eigentlich die da genannte Kommazahl ausspucken.
Leider kommt da zur Zeit 57,3813699 raus, was nicht stimmen kann (Wir haben ja Vollmond, also müsste ein Wert um ..,…50 rauskommen.
Findet jemand einen Fehler?
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Guest user
Re: AW: Aktuelle Mondphase
Ich würde da nicht groß mit Schaltjahren hantieren - nimm ein Jahr als 365,25 Tage, dann fällt das Problem weg!Nicolas Ziob hat gesagt
D.h. der Jahrestag einfach geteilt durch 365.
Da 2004 ein Schaltjahr ist, geteilt durch 366…
Christoph
Posted
Guest user
AW: Aktuelle Mondphase
Nicolas Ziob hat gesagt
So weit so viel:
[php]
<?php
$jahrestage = 366;
$jahr = date("Y");
$wochentage = date("W")*7;
$wochentag = date("w");
$jahrestag = $wochentage+$wochentag/$jahrestage;
$dezidatum = $jahr.$jahrestag;
$werta = 12.3685;
$wertb = 0.19;
$schritta = ($dezidatum-2000);
$schrittb = $schritta*$werta-$wertb;
echo "$schrittb";
?>[/php]
Diese Funktion soll eigentlich die da genannte Kommazahl ausspucken.
Leider kommt da zur Zeit 57,3813699 raus, was nicht stimmen kann (Wir haben ja Vollmond, also müsste ein Wert um ..,…50 rauskommen.
Findet jemand einen Fehler?
$jahrestag = $wochentage+$wochentag/$jahrestage;
Hast du das die Klammern vergessen? So teilst du nur den Wochentag durch die Anzahl der Tage im Jahr.
Ich hab mir außerdem mal kurz die time() Funktion in PHP angeguckt, ich kann zwar kein PHP, aber ist ja alles sehr verwandt zu C. Mit time("z") bekommst sofort den Tag des Jahres. Das heißt du kannst dann in deine Formeln direkt
(time("Y") + time("z") / 365.25)
einsetzen in die Variable Jahr deiner Ausgangsgleichung. Wenn ich denn soweit jetzt verstanden habe was du willst (nämlich die Jahreszahl addiert mit der Anzahl der vergangen Tage als Dezimalzahl zwischen 0 und 1 - Also würde 2004.5 genau die Mitte des Jahres 2004 entsprechen).
Posted
Andromedaner
AW: Aktuelle Mondphase
Hallo!Chris, mit der Formel hattest du recht, allerdings stimmten die Befehle nicht, aber die Attribute
Da warst du aber ganz schön schnell drin in PHP…
Programmierst du selbst irgenteine andere Sprache?
Der richtige Befehl ist date(), aber das Attribut "z" liefert den Jahrestag…
Soweit das Erzeugen den Dezimaldatums:
[php]
$dezidatum = (date("Y") + date("z") / 365.25);
$phase = ($dezidatum-2000)*12,3685-0.19;
echo "$phase";
[/php]
Die ganzen Variablen, die für mich eine Hilfe zum entwickeln sind, habe ich rausgenommen, verbleiben tut das…^^
Bei dem Script kommt jetzt der Wert 57.512735112938 raus…
Sehr gut!
Ich werde nun nurnoch hinzufügen, das das Script gefälligst nur die beiden letzten Kommastellen auslesen soll, und dann die entsprechenden Bilder auswählt.
Hat jemand zufällig noch ein paar Bilder von jeder Phase zuhause rumliegen?
Ich wäre dafür wenn man sie in das einheitliche Format 100x100 bringt..
Aber das kann ich auch machen..
Hauptsache Bilder….
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Erdling
AW: Aktuelle Mondphase
hoiklasse Idee, hoffentlich klappts!
für Linux gibt es auch ein netets Programm, dass (bei win heißt das glaub ich Taskleiste) immer als kleines symbol die akt. Mondphase anzeigt
Beim ASL 2004 ahben wir die ASL-Zeit zuendeentwickelt, auch eine sehr interessante zeitrechnung. Evtl könnten wir dazu ja auchwas kleines basteln
VlG,
Raphael
Posted
Guest user
Re: AW: Aktuelle Mondphase
Kurze Frage: Warum ist es so gut, dass 57.512735112938 rauskommt? Bei Vollmond müsste doch eigentlich eine Phase von 180° rauskommen, oder benutzt du eine andere Einheit?
Posted
Andromedaner
AW: Aktuelle Mondphase
Aus der Nachkommastelle von k lässt sich die Mondphase ablesen, wobei
.00 dem Neumond
.25 dem Ersten Viertel
.50 dem Vollmond und
.75 dem Letzten Viertel entspricht!
Wir haben knapp nach Vollmond, oder?
Also kanpp nach xxx,50..
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Guest user
AW: Aktuelle Mondphase
Joa, wenn alles funzt, dann freuts mich :-)Da warst du aber ganz schön schnell drin in PHP… Programmierst du selbst irgenteine andere Sprache?
Bevor ich wirklich ein so starkes Interesse an der Astronomie hatte, hatte ich viel mit Informatik am Hut, und hab daher auch viel programmiert. Ich habe viele Sprachen ausprobiert, kann aber flüssig im Moment nur in C, C++ und ganz besonders Python programmieren. Grundlagen von Basic und Assembler kann ich auch noch, aber die Sprache braucht man heute sowieso in der Regel nicht mehr…
Naja, aber in letzter Zeit hab ich's nicht mehr so mit der Programmierung, höchstens mal um irgendwelche kleinen Sachen schnell zu schreiben (z.B. Umrechnung von dezimalen Gradangaben wie 13.4352° in die Form XX° XX' XX"). Astronomie ist halt viel spannender
Posted
Andromedaner
AW: Aktuelle Mondphase
So hier findet man nun den Prototyp:http://andromedaforum.terraforming.net/phase.php
Ich habe nun eingebaut, das nur die ersten beiden Kommastellen ausgegeben werden:
[php]
<?php
$dezidatum = (date("Y") + date("z") / 365.25);
$zphase = ($dezidatum-2000)*12.3685-0.19;
$phase = substr(round($zphase, 2) , -2);
echo "$phase";
?>
[/php]
Für welche Phasen wollen wir denn Bidler ausgeben lassen?
Alle 6,25 "Phasenwertveränderungen" wären achtel…
Also 1,84 Tage sind 6,25 "Phasenwertveränderungen"
Wie siehts mit Fotos aus?
@Christian
Ich arbeite zwar generell etwas Webbezogener, aber ich hätte schon mal daran interesse C/C++ zu lernen…
Wo fängt man damit am besten an?
Bis dann!
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Guest user
Re: AW: Aktuelle Mondphase
Hmpf natürlich :IE:Nicolas Ziob hat gesagt
Wir haben knapp nach Vollmond, oder?
Also kanpp nach xxx,50..
Posted
Guest user
AW: Aktuelle Mondphase
Gibt's eigentlich Informationen darüber, wie lange die Formel als Näherung verwendbar ist? Da es ja keine exakte Formel ist, und mehrere Magic Numbers drin sind, dessen Ursprung unbekannt ist, frage ich mich, wie lange man sie benutzen kann
Posted
Andromedaner
AW: Aktuelle Mondphase
Zur Genauigkeit kann ich nichts sagen.Es scheint aber nicht mit der Zeit zu wechseln (also je länger das script läuft, desto ungenauer wird es, ist nich….)
Hier nun der Endgültige Betatester:
http://andromedaforum.terraforming.net/phasenc.php
Bitte immer kontrollieren obs wechselt…
Genauigkeit ist 1/8
[php]
<?php
$dezidatum = (date("Y") + date("z") / 365.25);
$zphase = ($dezidatum-2000)*12.3685-0.19;
$phase = substr(round($zphase, 2) , -2);
$a = "Neumond";
$b = "1/8 Mond";
$c = "1/4 Mond";
$d = "3/8 Mond";
$e = "1/2 Mond";
$f = "5/8 Mond";
$g = "3/4 Mond";
$h = "7/8 Mond";
$i = "Vollmond";
$ba = "-1/8 Mond";
$ca = "-1/4 Mond";
$da = "-3/8 Mond";
$ea = "-1/2 Mond";
$fa = "-5/8 Mond";
$ga = "-3/4 Mond";
$ha = "-7/8 Mond";
$phasen = array($a,$a,$a,$b,
$b,
$b,
$b,
$b,
$b,
$c,
$c,
$c,
$c,
$c,
$c,
$c,
$c,
$d,
$d,
$d,
$d,
$d,
$d,
$e,
$e,
$e,
$e,
$e,
$e,
$f,
$f,
$f,
$f,
$f,
$f,
$f,
$f,
$g,
$g,
$g,
$g,
$g,
$g,
$h,
$h,
$h,
$h,
$h,
$i,
$i,
$i,
$i,
$i,
$i,
$ha,
$ha,
$ha,
$ha,
$ha,
$ga,
$ga,
$ga,
$ga,
$ga,
$ga,
$fa,
$fa,
$fa,
$fa,
$fa,
$fa,
$fa,
$fa,
$fa,
$fa,
$fa,
$ea,
$ea,
$ea,
$ea,
$ea,
$ea,
$da,
$da,
$da,
$da,
$da,
$da,
$ca,
$ca,
$ca,
$ca,
$ca,
$ca,
$ba,
$ba,
$ba,
$ba,
$ba,
$a,
$a);
echo "<b>$phasen[$phase]</b><br>";
echo "Das aktuelle Mondintervall ist zu $phase Prozent abgeschlossen";
?>
[/php]
mfg
Nicolas Ziob
Nicolas Ziob
Posted
Guest user
AW: Aktuelle Mondphase
Fein, funktioniert prima, das Script!Aber kann man das Array nicht irgendwie schöner initalisieren, das ist unglaublich lang dafür und sieht auch umständlich aus. Gerade das mehrfache hintereinander von gleichen Werten könnte man vielleicht in for-schleifen auslagern. Ich weiß aber nicht wie Zeitintensiv das dann läuft, da ich recht wenig über die Geschwindigkeit eines PHP Scripts weiß (wohl nicht soo schnell, nehme ich an ).
Aber trotzdem, wenn jetzt noch ein paar hübsche Bildchen dazu kommen, hat man mit einem kurzen Blick die aktuelle Mondphase!
Posted
Andromedaner
AW: Aktuelle Mondphase
Also ich habs mit while-Schleifen und if-Klauseln probiert, aber ich finde das weitgehend am übersichtlichsten…Manche Phasen sind ja kleiner als die anderen, Vollmond und Neumond zum Beispiel.
PHP läuft eigentlich verhältnismäßig schnell, im Vergleich zu den anderen serverseitigen Websprachen…
aber hat nicht jemand noch ne ganze Bilderserie da?
oder muss ich die jetzt "generieren"?
mfg
Nicolas Ziob
Nicolas Ziob
1 guest and 0 members have just viewed this.