Skip to content

Instantly share code, notes, and snippets.

@suchowan
Created August 6, 2021 00:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suchowan/a696cdf3bfa81f0f058cbaea1aac29a7 to your computer and use it in GitHub Desktop.
Save suchowan/a696cdf3bfa81f0f058cbaea1aac29a7 to your computer and use it in GitHub Desktop.
寛政暦時代二十四節気日時の確認
# -*- coding: utf-8 -*-
=begin
寛政暦時代の二十四節気日時の確認
参考 https://eco.mtk.nao.ac.jp/koyomi/wiki/BEC3C4B9CBA1.html
寛政暦では暦定数を10年ごとに更新するので、まず10年目ごとの
天正冬至の日時を正確に計算し、すべての二十四節気は、その間
を時間で240等分して求める。
=end
module SolarTerms寛政暦
C十二支 = %(子丑寅卯辰巳午未申酉戌亥子)
C十干 = %(甲乙丙丁戊己庚辛壬癸)
C紀元 = 1797 # 寛政九年
C暦元 = 2377391.107112 # ユリウス通日に時差補正
C歳周 = 365.242347071 # 365.241622615342+0.00000043537×(C紀元 -133)
C消長 = 0.43537E-6 / 2 # 平均年長に用いるので 2 で割る
C単位 = 10 # 十年ごとに更新
module_function
C確認角度 = (0...24).to_a.map {|d| 15 * d}
def 確認
(1797...1844).each do |年次|
C確認角度.each do |角度|
消長あり = 表記(通日(年次, 角度, true))
消長なし = 表記(通日(年次, 角度, false))
unless 消長あり[/-.*\d /] == 消長なし[/-.*\d /]
puts "%d %3d : 消長あり %s : 消長なし %s" %
[年次, 角度, 消長あり, 消長なし]
end
end
end
end
# 寛政暦表記体系での日時
def 表記(通日)
周期, 周期内通日 = (通日 - 11).divmod(60)
大余, 小余 = 周期内通日.divmod(1)
辰刻, 刻分 = (小余 * 12 + 0.5).divmod(1)
刻, 分 = (刻分 * 100 / 12 + 0.5).divmod(1)
return "%s%s - %s %d (%4.2f)" %
[C十干[大余 % 10], C十二支[大余 % 12], C十二支[辰刻], 刻, 分*10]
end
# 指定の太陽位置になる通日
def 通日(西暦年, 冬至からの角度, 消長=true)
単位年紀, 単位年紀内の年次 = (西暦年 - C紀元).divmod(C単位)
直前 = 単位年紀天正冬至(単位年紀 , 消長)
直後 = 単位年紀天正冬至(単位年紀+1, 消長)
return 直前 + (直後 - 直前) *
(単位年紀内の年次* 360 + 冬至からの角度) / (360 * C単位)
end
# 単位年目ごとの天正冬至の通日
def 単位年紀天正冬至(単位年紀, 消長)
平均年長 = C歳周
平均年長 += (単位年紀 - 1) * C単位 * C消長 if 消長
return C暦元 + C単位 * 単位年紀 * 平均年長
end
end
SolarTerms寛政暦.確認 #=>
# 1827 120 : 消長あり 癸卯 - 寅 0 (5.11) : 消長なし 癸卯 - 丑 8 (8.31)
# 1829 150 : 消長あり 甲申 - 丑 1 (0.03) : 消長なし 甲申 - 丑 0 (9.86)
# 1830 300 : 消長あり 辛酉 - 午 2 (0.04) : 消長なし 辛酉 - 午 1 (9.85)
# 1832 90 : 消長あり 戊戌 - 亥 3 (0.05) : 消長なし 戊戌 - 亥 2 (9.85)
# 1833 240 : 消長あり 丙子 - 辰 4 (0.06) : 消長なし 丙子 - 辰 3 (9.84)
# 1835 30 : 消長あり 癸丑 - 酉 5 (0.07) : 消長なし 癸丑 - 酉 4 (9.83)
# 1836 180 : 消長あり 辛卯 - 寅 6 (0.08) : 消長なし 辛卯 - 寅 5 (9.82)
# 1837 330 : 消長あり 戊辰 - 未 7 (0.09) : 消長なし 戊辰 - 未 6 (9.81)
# 1839 120 : 消長あり 丙午 - 子 8 (0.11) : 消長なし 丙午 - 子 7 (9.80)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment