#! /usr/bin/python3
from pathlib import Path

# 1. Datenbasis der Navigationssterne (Name, Bayer, Bild, Mag, RA, Dec)
stars_data = [
    ("Vega", r"\alpha Lyr", "Leier", 0.03, "18h 36m 56.3s", 38.7836, "Ja"),
    ("Capella", r"\alpha Aur", "Fuhrmann", 0.08, "05h 16m 41.4s", 45.9981, "Ja"),
    ("Rigel", r"\beta Ori", "Orion", 0.12, "05h 14m 32.3s", -8.2017, "Nein"),
    ("Prokyon", r"\alpha CMi", "Kleiner Hund", 0.34, "07h 39m 18.1s", 5.2250, "Nein"),
    ("Betelgeuse", r"\alpha Ori", "Orion", 0.50, "05h 55m 10.3s", 7.4072, "Nein"),
    ("Altair", r"\alpha Aql", "Adler", 0.77, "19h 50m 47.0s", 8.8683, "Nein"),
    ("Aldebaran", r"\alpha Tau", "Stier", 0.85, "04h 35m 55.2s", 16.5092, "Nein"),
    ("Spica", r"\alpha Vir", "Jungfrau", 0.98, "13h 25m 11.6s", -11.1614, "Nein"),
    ("Pollux", r"\beta Gem", "Zwillinge", 1.14, "07h 45m 18.9s", 28.0261, "Nein"),
    ("Deneb", r"\alpha Cyg", "Schwan", 1.25, "20h 41m 25.9s", 45.2803, "Ja")
]

LATITUDE_MUNICH = 48.173333

def format_dec(dec_deg: float) -> str:
    """Wandelt Grad in ° ' '' Strings um."""
    sign = "+" if dec_deg >= 0 else "-"
    dec_abs = abs(dec_deg)
    d = int(dec_abs)
    m = int((dec_abs - d) * 60)
    s = int((dec_abs - d - m/60) * 3600)
    return f"{sign}{d:02d}^\\circ {m:02d}' {s:02d}''"

def calculate_max_altitude(dec_deg: float, lat: float) -> str:
    """Berechnet die maximale Kulminationshöhe für München."""
    h_max = 90.0 - lat + dec_deg
    if h_max > 90.0:
        h_max = 180.0 - h_max
        return f"{h_max:.1f}^\\circ \\text{{ (Nord)}}*".replace(".", ",")
    else:
        return f"{h_max:.1f}^\\circ \\text{{ (Süd)}}".replace(".", ",")

# 2. Tabellenzeilen dynamisch in Python erzeugen
table_rows = []
for name, bayer, constellation, mag, ra, dec_deg, circ in stars_data:
    mag_str = f"{mag:.2f}".replace(".", ",")
    dec_str = format_dec(dec_deg)
    alt_str = calculate_max_altitude(dec_deg, LATITUDE_MUNICH)
    
    row = f"    {name:<10} & ${bayer}$ & {constellation:<12} & ${mag_str}$ & {ra} & ${dec_str}$ & ${alt_str}$ & {circ} \\\\"
    table_rows.append(row)

rows_formatted = "\n".join(table_rows)

# 3. LaTeX-Dokumenten-Template (f-String)
latex_document = f"""\\documentclass[a4paper,11pt]{{article}}
\\usepackage[ngerman]{{babel}}
\\usepackage[margin=2.5cm]{{geometry}}
\\usepackage{{booktabs}}
\\usepackage{{array}}
\\usepackage{{amsmath}}

\\title{{\\textbf{{Navigationssterne für den Standort München}}}}
\\author{{Automatisch generiert via Python}}
\\date{{Standortkoordinaten: $48{{,}}173333^\\circ\\,\\text{{N}}$ (J2000.0)}}

\\begin{{document}}

\\maketitle

\\begin{{table}}[htbp]
  \\centering
  \\small
  \\caption{{Automatisch exportierte Tabelle der Navigationssterne.}}
  \\label{{tab:navigationssterne}}
  \\begin{{tabular}}{{lllc r r c c}}
    \\toprule
    \\textbf{{Sternname}} & \\textbf{{Bayer}} & \\textbf{{Sternbild}} & \\textbf{{Mag}} ($m_v$) & \\textbf{{RA (J2000)}} & \\textbf{{Dec (J2000)}} & \\textbf{{Max. Höhe}} & \\textbf{{Zirkumpolar}} \\\\
    \\midrule
{rows_formatted}
    \\bottomrule
  \\end{{tabular}}
  \\vspace{{2mm}}
  \\begin{{minipage}}{{0.95\\linewidth}}
  \\end{{minipage}}
\\end{{table}}

\\end{{document}}
"""

# 4. Datei auf Festplatte schreiben
output_path = Path("navigationssterne_muenchen.tex")
output_path.write_text(latex_document, encoding="utf-8")

print(f"LaTeX-Datei erfolgreich erstellt: {output_path.resolve()}")
