BMNT/EENT・日の出/日の入り・月齢 — 計算式リファレンス

このページは、提供した計算ツールが用いる定義と数式(および簡易近似)をまとめたものです。実装自体は SunCalc ライブラリを用いて数値的に時刻を求めています。

記号と共通式

地理緯度 φ、太陽(または月)の赤緯 δ、時角 H(南中=0、1時間=15°)、天体高度 h

sin h = sin φ · sin δ + cos φ · cos δ · cos H

高度が指定値 h0 になる時角は

cos H = (sin h0 − sin φ · sin δ) / (cos φ · cos δ)

この H から、地方恒星時→地方時に換算して時刻を得ます(実装では SunCalc が日周運動・赤緯変化・大気差等を織り込んで getTimes() 等で直接返します)。

薄明・日の出/日の入り

定義(高度境界)

上の cos H 式に各 h0 を代入して時角を求め、時刻へ変換します。

簡易アルゴリズムの骨子
  1. 対象日 0時UT 近傍の太陽黄経から赤緯 δ を求める(離心率・章動は近似)。
  2. 緯度 φh0 を用いて時角 H を得る。
  3. 均時差(Equation of Time)から地方時へ補正し、日の出・日の入り、各薄明境界の時刻を得る。

月齢・月の出/月の入

月齢

実装では SunCalc の位相 phase ∈ [0,1] を用いて、

月齢(日) ≈ phase × 29.530588853

(平均朔望月 29.530588853 日)。輝面比は月‐太陽位相角 ψ から

輝面比 f = (1 + cos ψ) / 2

月の出/月の入

太陽と同様に高度式を用い、h0 ≈ 0°(近似のため小さな補正を入れることがある)で日内探索して交差(rise/set)時刻を求めます。SunCalc の getMoonTimes() はこの探索を内部で行います。

用語

実際の実装は SunCalc を用いており、ここに示す式を内部で多数の補正とともに数値的に解いて時刻を返します。

関連ファイル

計算ツール(astronomy-tides.html) に対応しています。