Moon Phase Calculator
Calcola la fase lunare attuale, la percentuale di illuminazione e le informazioni del ciclo lunare per qualsiasi data.
Informazioni sullo strumento
La Calcolatrice delle Fasi Lunari ti aiuta a scoprire la fase lunare attuale, la percentuale di illuminazione e le informazioni dettagliate del ciclo lunare per qualsiasi data—passata, presente o futura. Comprendere l'aspetto e la posizione della luna nel suo ciclo di 29,5 giorni è prezioso per gli appassionati di astronomia, i giardinieri che seguono calendari lunari, i fotografi che pianificano sessioni notturne, e chiunque sia curioso del comportamento del nostro satellite naturale.
Basta inserire qualsiasi data utilizzando il selettore del calendario, e lo strumento visualizza istantaneamente il nome della fase lunare, quanto del disco lunare è illuminato, il numero di giorni nel ciclo attuale, e la data della prossima luna piena o luna nuova. Puoi esplorare l'aspetto della luna nel tuo compleanno, verificare le condizioni per i prossimi eventi astronomici, o tracciare come i cicli lunari influenzano attività come la semina o la pesca.
Questo calcolatore utilizza algoritmi astronomici per calcolare le posizioni lunari con alta precisione, rendendolo affidabile per progetti educativi, pianificazione creativa e osservazione casuale delle stelle. Tieni presente che le percentuali di illuminazione sono approssimate; la visibilità effettiva dipende dalla tua posizione, dal clima locale e dall'ora della notte.
Domande Frequenti
Implementazione del Codice
import math
from datetime import date, datetime
def calculate_moon_phase(year: int, month: int, day: int) -> dict:
"""
Calculate moon phase using the Conway algorithm.
Returns phase name, illumination percentage, and age in days.
"""
# Julian date calculation
if month <= 2:
year -= 1
month += 12
A = int(year / 100)
B = 2 - A + int(A / 4)
julian = int(365.25 * (year + 4716)) + int(30.6001 * (month + 1)) + day + B - 1524.5
# Days since known new moon (Jan 6, 2000)
known_new_moon = 2451549.5
lunation = 29.53058868
age = (julian - known_new_moon) % lunation
illumination = (1 - math.cos(2 * math.pi * age / lunation)) / 2
# Phase name
phases = [
(0.03, "New Moon"), (0.22, "Waxing Crescent"), (0.28, "First Quarter"),
(0.47, "Waxing Gibbous"), (0.53, "Full Moon"), (0.72, "Waning Gibbous"),
(0.78, "Last Quarter"), (0.97, "Waning Crescent"), (1.00, "New Moon")
]
fraction = age / lunation
phase_name = next(name for threshold, name in phases if fraction <= threshold)
return {
"age_days": round(age, 2),
"illumination_pct": round(illumination * 100, 1),
"phase": phase_name,
"fraction": round(fraction, 4)
}
result = calculate_moon_phase(2024, 1, 15)
print(f"Phase: {result['phase']}")
print(f"Age: {result['age_days']} days")
print(f"Illumination: {result['illumination_pct']}%")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.