記号と共通式
地理緯度 φ、太陽(または月)の赤緯 δ、時角 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()
等で直接返します)。
薄明・日の出/日の入り
定義(高度境界)
- 日の出/日の入り:h0 = −0.833°(大気差・太陽視半径を含む近似)
- 市民薄明:開始/終了で h0 = −6°
- 航海薄明(BMNT/EENT):h0 = −12°
- 天文薄明:h0 = −18°
上の cos H 式に各 h0 を代入して時角を求め、時刻へ変換します。
簡易アルゴリズムの骨子
- 対象日 0時UT 近傍の太陽黄経から赤緯 δ を求める(離心率・章動は近似)。
- 緯度 φ と h0 を用いて時角 H を得る。
- 均時差(Equation of Time)から地方時へ補正し、日の出・日の入り、各薄明境界の時刻を得る。
月齢・月の出/月の入
月齢
実装では SunCalc の位相 phase ∈ [0,1]
を用いて、
月齢(日) ≈ phase × 29.530588853
(平均朔望月 29.530588853 日)。輝面比は月‐太陽位相角 ψ から
輝面比 f = (1 + cos ψ) / 2
月の出/月の入
太陽と同様に高度式を用い、h0 ≈ 0°(近似のため小さな補正を入れることがある)で日内探索して交差(rise/set)時刻を求めます。SunCalc の getMoonTimes()
はこの探索を内部で行います。
用語
- BMNT (Begin Morning Nautical Twilight):朝の航海薄明の開始(太陽高度 −12°)。
- EENT (End Evening Nautical Twilight):夕方の航海薄明の終了(太陽高度 −12°)。
- 市民薄明:太陽高度 −6° から日の出(または日の入りから −6°)まで。
- 天文薄明:太陽高度 −18° を境に夜空が最も暗い時間帯。
実際の実装は SunCalc
を用いており、ここに示す式を内部で多数の補正とともに数値的に解いて時刻を返します。
関連ファイル
計算ツール(astronomy-tides.html) に対応しています。