Aktuelle Mondphase

Beitrag

Posted
Bewertung:
#7641 (In Topic #782)
Avatar
Andromedaner
Hallo!

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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7652
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7654
Avatar
Site director
Falko ist in der Nutzergruppe 'Administratoren'

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
Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7697
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7698
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.
Zurück nach oben

Beitrag

Posted
Bewertung:
#7699
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7700
Guest user

AW: Aktuelle Mondphase

Achso, irgendwie hat ich das anders verstanden, aber die Lösung ist ja denkbar einfach :)
Zurück nach oben

Beitrag

Posted
Bewertung:
#7701
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7702
Guest user

Re: AW: Aktuelle Mondphase

Nicolas Ziob hat gesagt

D.h. der Jahrestag einfach geteilt durch 365.
Da 2004 ein Schaltjahr ist, geteilt durch 366…
Ich würde da nicht groß mit Schaltjahren hantieren - nimm ein Jahr als 365,25 Tage, dann fällt das Problem weg!

Christoph
Zurück nach oben

Beitrag

Posted
Bewertung:
#7705
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).
Zurück nach oben

Beitrag

Posted
Bewertung:
#7708
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7710
Avatar
Erdling

AW: Aktuelle Mondphase

hoi :)

klasse 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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7711
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?
Zurück nach oben

Beitrag

Posted
Bewertung:
#7712
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7713
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 :)
Zurück nach oben

Beitrag

Posted
Bewertung:
#7714
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7716
Guest user

Re: AW: Aktuelle Mondphase

Nicolas Ziob hat gesagt

Wir haben knapp nach Vollmond, oder?
Also kanpp nach xxx,50..
Hmpf natürlich  :IE:
Zurück nach oben

Beitrag

Posted
Bewertung:
#7717
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  :)
Zurück nach oben

Beitrag

Posted
Bewertung:
#7728
Avatar
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

Online now: Nein Zurück nach oben

Beitrag

Posted
Bewertung:
#7733
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!
Zurück nach oben

Beitrag

Posted
Bewertung:
#7734
Avatar
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

Online now: Nein Zurück nach oben
1 guest and 0 members have just viewed this.