Pular para o conteúdo
🛠️ToolsShed

Golden Hour Calculator

Encontre janelas de fotografia golden hour e blue hour com base em sua localização e data.

Sobre esta ferramenta

A hora dourada é a breve janela logo após o nascer do sol e pouco antes do pôr do sol, quando o sol está baixo e banha tudo com uma luz quente e suave, enquanto a hora azul é o crepúsculo mais profundo antes do nascer e depois do pôr do sol, que preenche o céu com tons azuis uniformes e frios. Ambas são muito valorizadas pelos fotógrafos porque produzem imagens favoráveis e cheias de atmosfera que a luz dura do meio-dia jamais consegue igualar. Esta calculadora usa fórmulas astronômicas para apontar com precisão quando essas janelas se abrem e se fecham em qualquer data e lugar.

Para usá-la, informe a sua data e a sua localização, e a ferramenta mostra os horários de início e fim da hora dourada e da hora azul em torno do nascer e do pôr do sol. Ela foi feita para fotógrafos, videomakers e viajantes que querem planejar uma sessão no minuto certo e chegar enquanto a luz ainda está perfeita.

Lembre-se de que esses horários mudam bastante conforme a estação e a sua latitude, então confira sempre os valores para a sua data exata em vez de confiar em uma estimativa aproximada. Tudo é calculado localmente no seu navegador, de modo que nenhum dado de localização sai do seu dispositivo.

Perguntas Frequentes

Implementação de Código

import math
from datetime import datetime, timedelta, timezone

def sun_times(lat: float, lon: float, date: datetime) -> dict:
    """Calculate sunrise, sunset and golden hour times."""
    # Day of year
    N = date.timetuple().tm_yday

    # Mean longitude and anomaly
    L = (280.460 + 0.9856474 * N) % 360
    g = math.radians((357.528 + 0.9856003 * N) % 360)

    # Ecliptic longitude
    lam = math.radians(L + 1.915 * math.sin(g) + 0.020 * math.sin(2 * g))

    # Declination
    decl = math.asin(math.sin(math.radians(23.439)) * math.sin(lam))

    # Hour angle for sunrise/sunset (sun altitude = -0.833°)
    cos_ha = (math.sin(math.radians(-0.833)) - math.sin(math.radians(lat)) * math.sin(decl)) /              (math.cos(math.radians(lat)) * math.cos(decl))

    if abs(cos_ha) > 1:
        return {"error": "Midnight sun or polar night"}

    ha = math.degrees(math.acos(cos_ha))

    # Equation of time correction (simplified)
    B = math.radians(360 / 365 * (N - 81))
    eot = 9.87 * math.sin(2 * B) - 7.53 * math.cos(B) - 1.5 * math.sin(B)

    # Solar noon in minutes from midnight UTC
    solar_noon = 720 - 4 * lon - eot

    sunrise_min = solar_noon - 4 * ha
    sunset_min  = solar_noon + 4 * ha

    # Golden hour bounds: sun at 6° above horizon
    cos_gh = (math.sin(math.radians(6)) - math.sin(math.radians(lat)) * math.sin(decl)) /              (math.cos(math.radians(lat)) * math.cos(decl))
    gh_ha = math.degrees(math.acos(max(-1, min(1, cos_gh))))

    golden_end_morn = solar_noon - 4 * gh_ha
    golden_start_eve = solar_noon + 4 * gh_ha

    def mins_to_str(m):
        h, mn = divmod(int(m), 60)
        return f"{h:02d}:{mn:02d}"

    return {
        "sunrise": mins_to_str(sunrise_min),
        "golden_hour_morning_end": mins_to_str(golden_end_morn),
        "solar_noon": mins_to_str(solar_noon),
        "golden_hour_evening_start": mins_to_str(golden_start_eve),
        "sunset": mins_to_str(sunset_min),
    }

# New York City
result = sun_times(40.7128, -74.0060, datetime(2024, 6, 21))
for k, v in result.items():
    print(f"{k}: {v}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.