Moon Phase Calculator
Calcule a fase lunar atual, percentual de iluminação e informações do ciclo lunar para qualquer data.
Sobre esta ferramenta
A Calculadora de Fases da Lua ajuda você a descobrir a fase lunar atual, o percentual de iluminação e informações detalhadas do ciclo lunar para qualquer data—passada, presente ou futura. Compreender a aparência e posição da lua em seu ciclo de 29,5 dias é valioso para entusiastas da astronomia, jardineiros que seguem calendários lunares, fotógrafos que planejam sessões noturnas, e qualquer pessoa curiosa sobre o comportamento do nosso satélite natural.
Basta inserir qualquer data usando o seletor de calendário, e a ferramenta exibe instantaneamente o nome da fase lunar, quanto do disco lunar está iluminado, o número de dias dentro do ciclo atual, e a data da próxima lua cheia ou nova. Você pode explorar a aparência da lua em seu aniversário, verificar as condições para eventos astronômicos futuros, ou acompanhar como os ciclos lunares afetam atividades como plantio ou pesca.
Esta calculadora usa algoritmos astronômicos para calcular as posições lunares com alta precisão, tornando-a confiável para projetos educacionais, planejamento criativo e observação casual de estrelas. Tenha em mente que os percentuais de iluminação são aproximados; a visibilidade real depende de sua localização, clima local e horário da noite.
Perguntas Frequentes
Implementação de Código
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.