In­halt

Prolog Vollvenus, Sichelvenus? Neuvenus?
Einstieg Welche Planeten zeigen denn Phasen?
  Innensicht Außensicht
Modell! Wie könnte man das Problem angehen?
  Gitter Farbe Verläufe Tabelle Rotation
Welt Was noch fehlt? - Die reale Welt!
Resultat Und so sieht das Ergebnis aus ...
  CelestLab Stellarium
Danke Hat Spaß gemacht!
Dinge Quellcode zum Ausprobieren


Pro­log

Vollvenus, Sichelvenus? Oder auch die Neuvenus?

Das unser Erdtrabant sich als Neumond fast un­sicht­bar ma­chen kann, ist wohl­be­kannt, nicht zu über­se­hen und auch leicht alle vier Wo­chen zu be­ob­ach­ten. Daß an un­se­rem Him­mel auch Planeten ein Le­ben in Pha­sen füh­ren, ist nicht so of­fen­sicht­lich.

Die Werkzeugkomponente CelestLab in­ner­halb der wis­sen­schaft­li­chen Werk­bank SciLab bringt ein De­mo-Pro­gramm 'Mond­pha­sen' mit sich, dass ich aus­bau­en mö­ch­te, um die Pha­sen des Pla­ne­ten Ve­nus aus­ge­ben zu kön­nen.



Ein­stieg

Welche Planeten zeigen einen Phasenablauf?

Die von der Sonne beschienene Seite der Ve­nus nen­ne ich Vor­der­sei­te. Schon eine schnel­le Skiz­ze zeigt, dass wir auf der Er­de die Venus nicht nur von vor­ne son­dern auch von der Seite be­trach­ten kön­nen.

Wir auf der Erde werden also Licht und Schat­ten auf der Ve­nus se­hen: ih­re Pha­sen eben.

In­nen­sicht

Sonne, Venus und Erde sollen nun für ei­ne kleine Rechnerei in ei­ner Ebe­ne kreisen, die Erde kreist außen, die Venus innen.

Der Winkel Φ zwischen der Licht­ach­se Sonne - Venus und der Sicht­ach­se Erde - Venus be­stimmt, wie wir die Venus sehen.

Hat dieser Winkel den Wert 0 oder π (pi), so liegen die drei Himmelskörper auf einer Ge­ra­den, im Prinzip hät­ten wir dann Vollvenus oder Neu­ve­nus - wenn nicht die helle Sonne die Venus überstrahlen würde.

Sonne, Venus und Erde in einer Ebene

Die beiden Vektoren r1 und r2 ge­hen je­weils von der Sonne zur Ve­nus und zur Erde. Der Vektor r12 geht von der Erde zur Sonne.
Damit hat man eine Gleichung für den Winkel Φ in Ab­hän­gig­keit von der Stel­lung der beiden Planeten.

Man kann ohne Weiteres den Azimuthwinkel für die Er­de gleich null setzen und erhält dann den dar­ge­stell­ten Kur­ven­ver­lauf für Φ in Ab­hän­gig­keit vom Venuswinkel φ1.

Das Verhältnis der Radien für Venus und Erde ist q=0,72.

Venus: Der Verlauf des Winkels Φ
zwischen Licht- und Sichtachse

"Mit Hilfe eines Teleskops kann man erkennen, dass die Venus Pha­sen hat, ähnlich wie der Mond. Als volle Scheibe ist sie am klein­sten, weil sie dann – von der Erde aus ge­se­hen – hinter der Sonne steht, also am weitesten von uns entfernt ist. Die Venus hat bei zu­ne­hmen­der Phase ihre ma­xi­ma­le Helligkeit und dabei die Grö­ßen­klas­se -4,4; sie ist dann 15-mal heller als der hellste Fixstern. Die Pha­sen und Po­si­tio­nen der Venus am Himmel wiederholen sich mit ei­ner ... Periode von 1,6 Jahren." Microsoft Encarta 2002

Au­ßen­sicht

Und wie sieht das Bild nun für äußere Planeten, etwa für den Mars, aus? Es ist ein leichtes die obige Rechnung für den Mars zu wiederholen, hier sei gleich das Ergebnis auf­ge­zeigt.

Die Größe q ist nun der Quotient aus dem Erdradius und dem Ra­dius des äu­ße­ren Pla­ne­ten, ist also kleiner als Eins.

Das Verhältnis der Radien für Er­de und Mars ist q=0,66. Für klei­ne q geht der Winkel Φ gegen null, man kann dem weit ent­fern­ten, äu­ße­ren Planeten nicht in die Flanke schauen. Und für den Mars, der ja nicht so weit weg ist, wie sieht es da aus?

Mars: Der Verlauf des Winkels Φ
zwischen Licht- und Sichtachse

Der Winkels Φ wird also höchstens 11° groß, nämlich wenn Son­ne, Mars und Er­de einen rechten Winkel bilden - 11° ist wohl ein zu kleiner Wert, um zu ei­nem Phasenverlauf zu führen, der auf der Er­de dem bloßen Auge auffallen würde.



Mo­dell

Wie könnte man das Problem denn nun angehen?

Als ich mir die ClestLab-Demo "Moon Phases" zum ersten Mal anschaute, begann der Phy­si­ker­kopf natürlich so­fort nach Lö­sungs­we­gen zu suchen. Dass, was ein Be­ob­ach­ter auf der Erde vom Mond oder von der Venus sieht, müsste als Schnittmenge zwei­er Halbkugeln zu beschreiben sein, oder?

Aber bitte zuerst den SciLab-Quellcode des Herrn "Auteur: A. Lamy" an­schau­en! Wie hat er das Problem an­g­egan­gen: Er hat keinen Al­go­rith­mus auf die Beine gestellt, son­dern ein Modell gebaut.

Zudem: Die SciLab-Skriptsprache ist doch etwas Anderes als eine ge­wöhn­li­che Pro­gram­mier­spra­che. Ein wenig Quellcode-Stu­di­um hilft einem doch mäch­tig auf die Sprünge.

Git­ter­draht

Ein dreidimensionales Drahtgittermodell für die Kugel muss her!

Ich orientiere mich hier an der CelestLab-Demo, habe aber auch ein wenig ex­pe­ri­men­tiert, um zu verstehen, was in der Demo wie abläuft.

Die Funktion fShereData gibt drei Vektoren der Länge 101 zu­rück, die die Ko­or­di­na­ten einer Kugel be­schrei­ben, an­schlie­ßend wird diese Funk­tion aufgerufen und das Ergebnis mit plot3d2 gra­phisch ausgegeben. Wun­der­schön kompakt der Code, da die Ope­ra­tio­nen als Vek­tor­ope­ra­tio­nen ausgeführt werden. Das Ergebnis sieht so aus:

Die Kugel als Gittergeflecht

Far­be

Damit man die Kacheln des Gittermodel besser erkennt, kann man sie mit einem kleinen Algorithmus '10*(fcData.z)+1' einfärben - das Gan­ze ist wieder vektoriell zu verstehen:

Die Kugel als Gittergeflecht - eingefärbt

Ver­läu­fe

Die Venus oder der Mond hat eine helle gelbe und eine dunk­le graue Seite. Ich benötige also zwei Grundfarben gelb und grau und Farb­ver­läu­fe für einen natürlichen Farb­über­gang. 63 Farben werden spen­diert, über die mit Farbindizes zugegriffen wird.

Die Funktion setColor nimmt die Verteilung der Farben ent­spre­chend dem Ein­strahl­win­kels des Lichts auf die Kachel vor. Der Funktion wird ein Vektor mit dem cosinus des Ein­strahl­win­kels des Lichts und ein Vektor mit den 63 Farb­in­di­zes übergeben.

Das erste find im Quellcode unten findet alle Indizes, für die der co­si­nus des Einstrahlwinkels kleiner oder gleich als -0,03 ist. Im Farb­vek­tor col, der von setColor zu­rück­ge­ge­ben wird, erhält der Teil­vek­tor col(I) die erste Farbe grau zu­ge­wie­sen.

Beim zweiten find wird der schmale Über­gangs­be­reich von grau nach gelb abgehandelt.

Beim dritten find wird ein Farbverlauf von ei­nem dunklen Gelb zu einem hellen Gelb definiert.

Um die Berechnung einfach zu gestalten, wird hierfür ein Be­zugs­sys­tem gewählt, in dem die Sonne und der be­leuch­te­te Himmelskörper auf der z-Achse liegen.

Die Kacheln werden mit der co­si­nus-Funkt­ion cos(Θ) ein­ge­färbt, es ist ja cos(0)=1, da wird das helle Gelb genommen und bei ei­nem Winkel, für den cos(Θ)=0,03 gilt, wird das dunk­le Gelb verwendet.

Kugeleinfärbung

Zwei (falsch-)farbige Halbkugeln mit einem Übergangsbereich

Farb­ta­belle

Die Farben stimmen noch nicht, es muss noch die richtige Farb­ta­bel­le gesetzt werden. p ist ein Vektor mit 31 Werten äquidistanten Werten zwischen 0 und 30. CL_dMult ist die kom­po­nen­ten­wei­se Mul­ti­pli­ka­tion.

Für die beiden Farbtabellen Cmap1 und Cmap2 wird jeweils zwi­schen den Grenzwerten c0 und c1, beziehungsweise c1 und c2 interpoliert.

Das sieht doch bestens aus!

Ro­ta­tion

Wir haben eine wunschgemäß eingefärbte Kugel - in drei Di­men­sio­nen natürlich. Wir können nun sozusagen um die Ku­gel herum gehen und könnten so Venusphasen betrachten.

Oder wir unterwerfen die eingefärbten Kacheln des Git­ter­mo­dells einer Rotation. Wir drehen die beleuchtete Kugel auf den Be­ob­ach­ter zu, der Rotationswinkel ist offensichtlich, es ist der Winkel zwi­schen Licht- und Sichtachse.

Im Testbeispiel ist diese Rotationsmatrix fest und heißt im Quell­code unten rotM. Die Kacheldaten werden mit fcData)=e.data aus dem mit plot3d2 erzeugten Grafik-Objeckt aus­ge­lesen.

Jede der 9801 Kacheln wird durch 4 Punkte definiert, also durch ins­ge­samt 4x3=12 Koordinaten. Die Größe fcData.x ist hier ei­ne Da­ten­struk­tur, die aus 9801 Spalten zu je 4 x-Koordinaten für je eine Kachel besteht. Das Hochkomma ' erzeugt die trans­po­nier­te Größe, fcData.x(:)' sind dann 9801 Zeilen mit je 4 x-Koordinaten.

Die Größe [1;2;3] definiert in SciLab einen Spaltenvektor, [fcData.x(:)'; fcData.y(:)'; fcData.z(:)'] ergeben dann einen Mul­ti­vek­tor, das sind 39204 Spaltenvektoren mit den x-, y- und z-Kom­po­nen­ten der Kacheln. Die Matrix-Multiplikation mit RotM iteriert über den Multivektor und erzeugt 39204 transformierte Vektoren.

Mittels der matrix-Operation wird die Ausgangsstruktur x, y und z zu­rück gewonnen, die nun wieder in das Grafikobjeckt geschreiben wer­den kann.

Und das Result sieht schließlich wie gewünscht aus! Famos.

Fast ein Halbmond



Welt

Was noch fehlt? - Die Anbindung an die reale Welt

Ein Modell haben wir für unseren Zweck und der Weg zur Sichel ist eine Ro­ta­tion. Wir brauchen noch die Him­mels­po­si­tio­nen von Sonne und Venus zum Beobachtungszeitpunkt und müssen diese Po­si­tio­nen zum Standort des Beobachters in Bezug setzen.

Hier ein Ausschnitt aus einem kommentierten Testprogramm zur Sa­che. M' ist die zu M inverse Matrix. Die CelestLab-Routine CL_rot_defFrameVec erzeugt aus den Argumenten ein Dreibein und gibt die zugeordnete Rotationsmatrix zurück.

Der Ursprungscode der CelestLab-Demo sieht etwas anders auf. Per Au­gen­schein decken sich die Ergebnisse.



Re­sul­tat

Und so sieht das schlussendliche Ergebnis aus ...

... und zwar am Sonnabend, den 8. März 2014 um kurz nach 9 Uhr (Winterzeit).

Celest­Lab

Die Venus als Halbvenus

Als Testwerkzeug verwende ich das frei verfügbare Stel­la­rium. Der Himmel ist als Nachthimmel eingestellt.

Stella­rium

Die Venus ebenfalls als Halbvenus

Ein Blick noch auf das Paar Sonne und Venus - mit dem Mer­kur da­zwi­schen - in einer per­spek­ti­vi­schen Projektion, hier bil­det der Ho­ri­zont eine gerade Linie: das Bild ist stim­mig.

Sonne und Venus am frühen Morgen - stimmig!



Dan­ke

Hat Spaß gemacht!

Ein Dankeschön an die Ersteller von CelestLab!!


Res­sour­cen

Der SciLab-Quellcode (zip) - ausführbar mit einer SciLab-Installation

Der SciLab-Quellcode (pdf) - als pdf-Datei zum Anschauen