Wie berechnet man den genauen Winkel zum Mond?

Ich baue ein Gerät als Geschenk für meine Freundin.

Damit dieses Gerät funktioniert, muss ich in der Lage sein, den Winkel zu berechnen, in den ich schauen sollte (3D-Winkel), um den Mond zu sehen.

Dieser Winkel wird beeinflusst von (und vielleicht nicht nur):

  • Die Jahreszeit.

  • Die Stunde.

  • Der Ort auf der Erde, von dem aus ich schaue.

Ich bin sicher, es gibt eine Formel, die den Winkel annähert.

Ich brauche keinen genauen Wert, ich kann mit +-1 Grad leben.

Ich baue ein Gerät als Geschenk für meine Freundin. - Teilt sie Ihre Leidenschaft für die Sterne?
Meinst du mit "Ich muss rechnen" 1) Ich möchte eine Methode mit Stift und Papier. oder 2) ich möchte etwas, das ich in Low-Level-Code auf einem eingebetteten Gerät ausführen kann, oder 3) ich verwende gerne eine Python-Bibliothek, um dies zu tun, oder 4) ich bin zufrieden mit einer laufenden Planetariumssoftware.
Die Position des Mondes variiert je nach Standort auf der Erde um +-1 Grad. Die Bewegung des Mondes ist auch ziemlich komplex, daher sehe ich keine einfache Formel, die ein gewisses Maß an Genauigkeit hätte. Außerdem meinen Sie wahrscheinlich "Winkel" Plural: Azimut und Elevation. Ich nehme an, ein fester Winkel (3D-Winkel) würde funktionieren, aber es ist traditioneller, zwei Winkel zu verwenden. Hat Ihr Gerät auch einen Kompass, damit es weiß, wo Nord/Süd ist? Hat es GPS?
@JamesK Etwas, das ich in ein Excel-Blatt stecken könnte, wäre das Beste für mich. Das Gerät hat keine Software oder Engines, nur eine komplexe Anordnung von Spiegeln. Ich möchte in der Lage sein, die Position des Mondes vorherzusagen, bevor ich tatsächlich etwas baue oder platziere.
@barrycarter Da das, was ich baue, für immer gebaut wird, ohne bewegt zu werden, könnten Sie einen genauen GPS-Standort annehmen. und ja, ich meinte "Winkel". Gibt es nicht eine komplexe Formel, die ich einfach in Excel/Python/was auch immer einfügen kann?
Für eine grobe Schätzung könnten Sie es für einen metonischen Zyklus laufen lassen und dann wiederholen. en.wikipedia.org/wiki/Metonic_cycle
Nur zur Verdeutlichung: Ist Ihr Gerät für einen bestimmten Zeitpunkt konzipiert oder funktioniert es für jedes Datum und jede Uhrzeit? Der Astronomical Almanac gibt die Gleichungen, die Sie brauchen (habe ich nicht dabei :-)). Es kann ein Dutzend Gleichungen geben, um die Position des Mondes (geozentrisch) zu berechnen, ein halbes Dutzend für seine topozentrische Position, dann ein halbes Dutzend, um seinen Azimut und seine Höhe zu erhalten. Für ein Gerät, das für jedes Datum und zu jeder Zeit funktioniert, wäre eine Art Echtzeitberechnung erforderlich.
Bitte bearbeiten Sie alle Ihre Kommentarantworten in der Frage; Kommentare können verschwinden

Antworten (2)

Für eine einmalige Berechnung wäre die einfachste Lösung die Verwendung einer Planetariumssoftware, wie z. B. Stellarium.

Für eine Programmierlösung ist ein Python-Paket wie pyephem eine effiziente Möglichkeit, die Position des Mondes mehrmals zu berechnen, so dass sie in eine Tabellenkalkulation importiert werden kann.

Die scheinbare Bewegung des Mondes ist komplexer als Sie vielleicht denken. Der Mond bewegt sich aufgrund der Rotation der Erde um etwa 15 Grad pro Stunde. Aber zu dieser ziemlich einfachen Bewegung kommt noch die tatsächliche Umlaufbahn des Mondes um die Erde, die elliptisch ist (und daher ist diese Bewegung nicht gleichmäßig, der Mond bewegt sich schneller, wenn er sich der Erde nähert) und die Position und Neigung der Umlaufbahn ist von der Sonne gestört. Die Störungen sind ziemlich regelmäßig und können berechnet werden, aber diese Effekte (Rotation der Erde, Umlaufbahn des Mondes, Exzentrizität der Umlaufbahn, Störung der Umlaufbahn) machen zusammen die eigentliche Berechnung komplexer als "eine Formel". kann problemlos in eine Tabellenkalkulation passen, weshalb ein Paket wie pyephem empfohlen wird.

In dieser Antwort erwähne ich eine Quelle, in der eine praktische Formel für das ungefähre Verhalten von Himmelsobjekten zu finden ist.

Astronomische Algorithmen von Jean Meeus

Ich habe persönlich keine Kopie, daher kann ich nicht überprüfen, ob genau das, was Sie brauchen, dort zu finden ist oder nicht, aber dieses PDF mit einer kleinen Teilmenge von Seiten aus der vierten Ausgabe enthält das Inhaltsverzeichnis, das Folgendes enthält:

30. Position of the moon....................... 147
31. Illuminated Fraction of the Moon’s Disk.... 155
32. Phases of the Moon......................... 159

Es besteht also eine gute Chance, dass auf diesen sieben oder acht Seiten für Kapitel 30 genau das enthalten ist, wonach Sie suchen.

Ich denke, die von Ihnen erwähnten "3D-Winkel" wären nur Höhe (oder Höhenwinkel) und Azimut. Der erste ist der Winkel über (oder unter) dem Horizont, und der zweite ist wie die "Kompassrichtung", außer dass er beim wahren Norden beginnt, nicht beim magnetischen Norden, also nur 2D.

Wenn Sie mit Python, einer der einfachsten Computersprachen, vertraut sind, gibt es ein Paket namens Skyfield . Ich glaube, Sie sollten es zum Beispiel auf einem Raspberry Pi zum Laufen bringen können, wenn Ihre Kreation elektromechanisch ist. Das Paket ist sehr präzise, ​​so dass es im Allgemeinen eine Verbindung zum Internet benötigt, um "Sachen zu überprüfen", was manchmal etwas frustrierend ist.

Sie können auch eine Tabelle für Ihren Standort berechnen, diese dann speichern und zum Ausführen eines kleinen Computers oder Controllers verwenden, falls Sie einen verwenden.

GREEN  = Moon (being made of green Cheese of course)
YELLOW = Sun

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Loader, Topos

halfpi, pi, twopi = [f*np.pi for f in 0.5, 1, 2]
degs, rads        = 180/pi, pi/180

load   = Loader('~/Documents/fishing/SkyData')
data   = load('de421.bsp')
ts     = load.timescale()

de421  = load('de421.bsp')
earth  = de421['earth']
sun    = de421['sun']
moon   = de421['moon']

Haifa   = earth + Topos(32.82, 34.98)
minutes = np.arange(60*24)
times   = ts.utc(2018, 9, 24, 0, minutes)

salt, saz, sd = Haifa.at(times).observe(sun).apparent().altaz()
malt, maz, md = Haifa.at(times).observe(moon).apparent().altaz()

saltr, sazr, maltr, mazr = [x.radians for x in (salt, saz, malt, maz)]

sr, mr = [1. - x/halfpi for x in (saltr, maltr)]

sx, sy = [sr * f(sazr) for f in (np.sin, np.cos)]
mx, my = [mr * f(mazr) for f in (np.sin, np.cos)]

theta = np.linspace(0, twopi, 201)
xc, yc = [f(theta) for f in (np.cos, np.sin)]

if True:
    plt.figure()
    plt.plot(sx, sy, '-y')
    plt.plot(mx, my, '-g')
    plt.plot(xc, yc, '-k', linewidth=2)
    plt.plot([0], [0], 'ok')
    plt.xlim(-1.8, 1.8)
    plt.ylim(-1.8, 1.8)
    plt.text(-0.15, 0.1, 'Zenith', fontsize=16)
    plt.text(-0.02, 1.04, 'N', fontsize=16)
    #plt.text(-1.6, 1.0, 'North is up', fontsize=16)
    plt.show()


saltd, sazd, maltd, mazd = [x.degrees for x in (salt, saz, malt, maz)]
mbreaks = np.where(np.abs(mazd[1:]-mazd[:-1] < 0))
sbreaks = np.where(np.abs(sazd[1:]-sazd[:-1] < 0))

saltd, sazd, maltd, mazd = [x[:-1] for x in (saltd, sazd, maltd, mazd)]
sazd[sbreaks] = np.nan
mazd[mbreaks] = np.nan

if True:
    plt.figure()
    plt.plot(sazd, saltd, '-y')
    plt.plot(mazd, maltd, '-g')
    plt.plot([0, 360], [0, 0], '-k')
    plt.xlabel('azimuth (degs)', fontsize=18)
    plt.ylabel('altitude/elevation (degs)', fontsize=18)
    plt.xlim(0, 360)
    plt.show()

if True:
    plt.figure()
    hours = minutes[:-1]/60.

    plt.subplot(2, 1, 1)

    plt.plot(hours, sazd, '-y')
    plt.plot(hours, mazd, '-g')
    # plt.xlabel('UTC hours', fontsize=16)
    plt.ylabel('azimuth (degs)', fontsize=16)

    plt.subplot(2, 1, 2)

    plt.plot(hours, saltd, '-y')
    plt.plot(hours, maltd, '-g')
    plt.xlabel('UTC hours', fontsize=16)
    plt.ylabel('altitude/elevation (degs)', fontsize=16)

    plt.suptitle("Haifa 24/9/2018", fontsize=16)

    plt.show()