Moon Phase Calculator
모든 날짜의 현재 달 위상, 조명 백분율, 달력 주기 정보를 계산합니다.
이 도구 소개
달 위상 계산기는 과거, 현재, 미래의 어떤 날짜에 대해서도 현재의 달 위상, 조명 백분율 및 상세한 음력 주기 정보를 제공합니다. 29.5일 주기에서 달의 외형과 위치를 이해하는 것은 천문학 애호가, 음력 달력을 따르는 정원사, 야간 촬영을 계획하는 사진가, 그리고 지구의 위성 동작에 관심 있는 사람들에게 매우 유용합니다.
달력 선택기를 사용해 원하는 날짜를 입력하면, 달의 위상 이름, 달면의 조명 비율, 현재 주기 내 경과일, 그리고 다음 보름달 또는 새로운 달의 날짜가 즉시 표시됩니다. 생일의 달 모양을 확인하거나, 천문 현상 관측 조건을 체크하거나, 파종이나 낚시 같은 활동에 영향을 주는 달의 주기를 추적할 수 있습니다.
이 계산기는 천문학 알고리즘을 사용하여 달의 위치를 높은 정확도로 계산하므로, 교육 프로젝트, 창의적 계획 수립, 그리고 캐주얼한 별 관찰에 신뢰할 수 있습니다. 조명 백분율은 근사치일 뿐이며, 실제 가시성은 귀하의 위치, 지역 날씨, 그리고 밤 시간에 따라 달라질 수 있습니다.
자주 묻는 질문
코드 구현
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.