Forum der Vereinigung der Sternfreunde

Forum of the German Amateur Astronomy Association
Aktuelle Zeit: 09. Januar 2026, 03:36:59 AM

Alle Zeiten sind UTC+02:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 24. Oktober 2025, 07:01:44 AM 
Offline
Meister
Benutzeravatar

Registriert: 20. Januar 2013, 20:03:54 PM
Beiträge: 1975
Wohnort: Leipzig
Liebe Sternfreunde, anbei das kleine Programm, womit man die Zentrallinie als Tabelle berechnen kann. Zur Vorbereitung für den August!
Code:
# sofiBessel2 : Zentrallinie einer Sonnenfinsternis
# Meeus, Elements of solar eclipses §13

# Besselsche Elemente
# yr=2026; mnt=8; day=12
T0 = 18
x =  [ 0.4755140, 0.5189249, -0.0000773, -0.0000080]
y =  [ 0.7711830, -0.2301680, -0.0001246, 0.0000038]
d =  [ 14.7966700, -0.0120650, -0.0000030, 0.0]
l1 = [ 0.5379550, 0.0000939, -0.0000121, 0.0]
l2 = [ -0.0081420, 0.0000935, -0.0000121, 0.0]
u =  [ 88.7477900, 15.0030900, 0.0000000, 0.0]
tanf1 = 0.0046141
tanf2 = 0.0045911

from math import *


# Winkelfunktionen in Gradmaß, wie im Meeus
def Sin(w):    return sin(pi * w / 180)
def Cos(w):    return cos(pi * w / 180)
def Tan(w):    return tan(pi * w / 180)
def Atan2(y, x):    return 180 * atan2(y, x) / pi
def Asin(x):    return 180 * asin(x) / pi
def Acos(x):    return 180 * acos(x) / pi
def Atan(x):    return 180 * atan(x) / pi
def sq(x):    return x*x


def solveQuadrant(sinX,cosX):
    if (sinX>=0 and cosX>=0): return Asin(sinX);
    if (sinX<0 and cosX>=0): return Asin(sinX);
    if (sinX<0 and cosX<0): return -Acos(cosX);
    if (sinX>=0 and cosX<0): return Acos(cosX);

def calcEclipse(t):
    # Koordinaten zum Zeitpunkt
    X = 0
    Y = 0
    D = 0
    L1 = 0
    L2 = 0
    M = 0
    for j in range(3, -1, -1):
        X = X * t + x[j]        # die Koordinaten
        Y = Y * t + y[j] 
        D = D * t + d[j]        # Deklination ...
        M = M * t + u[j]        # ... und Stundenwinkel im orstfesten Äquatorsystem
        L1 = L1 * t + l1[j]     # die Radien der Schattenkegel, Halbschatten ...
        L2 = L2 * t + l2[j]     # ... und Kernschatten
    # die Ableitungen / Veränderungen des Ortes i.f. Fundamental-E.
    XS = x[1] + 2 * x[2] * t + 3 * x[3] * t * t
    YS = y[1] + 2 * y[2] * t + 3 * y[3] * t * t
    cd = Cos(D)
    w = 1.0 / (sqrt(1 - 0.006694385 * cd * cd))
    p = u[1] / 57.2957795
    b = YS - p * X * Sin(D)
    c = XS + p * Y * Sin(D)
    y1 = w * Y
    b1 = w * Sin(D)
    b2 = 0.99664719 * w * Cos(D)
    if 1 - X * X - y1 * y1 < 0:
        return
    B = sqrt(1 - X * X - y1 * y1)
    phi1 = Asin(B * b1 + y1 * b2)
    # von Greg Miller
    sinH=X / Cos(phi1)
    cosH=(B * b2 - y1 * b1) / Cos(phi1)
    H=solveQuadrant(sinH, cosH)
   
    
    # Berechnung der topozentrischen Koordinaten der Schattenachse = Zentral-Linie
    phi = Atan(1.00336409 * Tan(phi1))
    Lambda = M - H - 0.00417807 * dt  # dt in Sekunden
    #  Berechnung des Totalitätsstreifens und der Dauer der Finsternis im Zentrum
    L2S = L2 - B * tanf2 # l2S negativ: Ringförmig
    typ="r"
    if L2S<0:
        typ="t"
    a = c - p * B * Cos(D)
    n2 = a * a + b * b
    if n2 < 0:
        n = -777  # kein n
        dauer = -777  # keine Dauer
    else:
        n=sqrt(n2)
        dauer = abs(7200 * L2S / n)
    sinh = Sin(D) * Sin(phi) + Cos(D) * Cos(phi) * Cos(H)
    h = Asin(sinh)
    K2 = B * B + (X * a + Y * b) * (X * a + Y * b) / (n * n)
    K = sqrt(K2)
    pfadbreite = 12756 * abs(L2S) / K
    # Berechnung der Breite der scheinbaren Größe des Mondes (in Sonnendurchmessern)
    L1S=l1[0]+l1[1]*t+l2[2]*t*t-B*tanf1
    A = (L1S - L2S) / (L1S + L2S)
    if Lambda>360:
        Lambda=Lambda-360
    if (Lambda>180):
        Lambda=Lambda-360
    print("%3.0f  %8.4f  %8.4f  %3.0f %4.1f    %5.1f   %5.3f       %s" %
          (t*60.0, Lambda, phi, dauer, h, pfadbreite, A, typ))

# Main
# ====
    
# für jede Minute 1h vor bis 2 h nach der Referenzstunde 10.00 h UT
dt = 0  # Abweichung TD-UT. Ich rechne hier in TD (34)
print("Zeit  Lambda    phi      Dauer  Hohe  Pfad   Monddurchm. Typ")
print("      °,<0:O    °,+:N     s     °    (km)    ")
print("---------------------------------------------------------------")
for i in range(-120, 120, 1): # von 2h vor bis 2h nach der Referenzzeit in 10-min-Schritten
    t = i/60.0  # Zeit in Stunden
    calcEclipse(t)
print("Maximum:")
calcEclipse(21/60.0+8/3600.0)
# Prompt am Ende
ende = input("Fertig.")

_________________
Uwe Pilz, Fachgruppen Kometen und Astrophysik/Algorithmen.
Oft benutzte Instrumente: Fujinon 16x70 FMT-SX-2, TMB Apo 105/650, Skywatcher Evostar 120/900 ED, Ninja Dobson 320/1440, Smartscope Dwarf-3


Nach oben
   
BeitragVerfasst: 28. Oktober 2025, 12:37:24 PM 
Offline
Neueinsteiger
Benutzeravatar

Registriert: 27. Oktober 2025, 13:09:32 PM
Beiträge: 2
Zur vielleicht besseren Verständlichkeit Erklärung der "fest verdrahteten" Konstanten im Code:

# 0.006694385 = e^2
# 57.2957795 = 180 / pi
# 0.99664719 = sqrt(1 - e^2) = 1 - f
# 1.00336409 = 1 / sqrt(1 - e^2) = 1 / (1 - f)
# 0.00417807 = 360° / (sidereal day = 86164.0905 s)

Dabei ist mir noch Folgendes aufgefallen:

L2S = L2 - B * tanf2
und
L1S=l1[0]+l1[1]*t+l2[2]*t*t-B*tanf1

B ist bei dir ja zeta_1, also der reduzierte zeta-Wert, hier müsste aber aus meiner Sicht mit L = l - zeta * tanf (1/2) der (im Skript nicht berechnete) richtige zeta-Wert stehen?

Der Unterschied ist allerdings nicht so riesig, für TT = T0:
zeta_1: <Quantity 0.4188295>
zeta: <Quantity 0.41745498>


Nach oben
   
BeitragVerfasst: 30. Oktober 2025, 17:57:59 PM 
Offline
Neueinsteiger
Benutzeravatar

Registriert: 27. Oktober 2025, 13:09:32 PM
Beiträge: 2
Ich hab noch ein bisschen unter teilweiser Verwendung von Uwes Code an eigenem geschraubt und die verschiedenen Berechnungen in ein größeres Python-Skript integriert:
https://github.com/phtnnz/astropy-workb ... bessel3.py

Das ist Teil meiner Astropy-Werkstattumgebung und braucht noch einiges "Zubehör":
https://github.com/phtnnz/astropy-workbench

Grafik mit Zentrallinie ist auch eingebaut, siehe Anhang.
Dateianhang:
plot.png
plot.png [ 256.52 KiB | 2392 mal betrachtet ]


Nach oben
   
BeitragVerfasst: 01. November 2025, 16:41:04 PM 
Offline
Meister
Benutzeravatar

Registriert: 20. Januar 2013, 20:03:54 PM
Beiträge: 1975
Wohnort: Leipzig
Im Rahmen dieser Aufsatz-Serie wird es auch eine Weltkarte geben. Nicht nur mit der Zentrallinie sondern mit dem gesamten Finsternisverlauf. Alles ohne zusätzliche Module, nacktes Python und eigener Code.

_________________
Uwe Pilz, Fachgruppen Kometen und Astrophysik/Algorithmen.
Oft benutzte Instrumente: Fujinon 16x70 FMT-SX-2, TMB Apo 105/650, Skywatcher Evostar 120/900 ED, Ninja Dobson 320/1440, Smartscope Dwarf-3


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC+02:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de