zakuro 0.8.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -160
  3. data/VERSION +1 -1
  4. data/doc/condition.md +36 -0
  5. data/doc/dropped_date.md +41 -0
  6. data/doc/expection.md +108 -0
  7. data/doc/operation/csv/month.csv +100 -79
  8. data/doc/operation/operation.xlsx +0 -0
  9. data/doc/usage.md +120 -0
  10. data/doc/vanished_date.md +86 -0
  11. data/doc/version/daien.md +163 -0
  12. data/doc/version/genka.md +116 -0
  13. data/doc/version/gihou.md +172 -0
  14. data/doc/version/section/common_post_process.md +60 -0
  15. data/doc/version/section/common_pre_process.md +185 -0
  16. data/doc/version/section/const.md +45 -0
  17. data/doc/version/section/decimal.md +101 -0
  18. data/doc/version/section/lunisolar_calendar.md +55 -0
  19. data/doc/version/section/senmyou_november_1st.md +41 -0
  20. data/{lib/zakuro/version/senmyou/README.md → doc/version/senmyou.md} +15 -168
  21. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +58 -0
  22. data/lib/zakuro/calculation/monthly/first_day.rb +9 -1
  23. data/lib/zakuro/calculation/option/vanished_date/abstract_parameter.rb +40 -0
  24. data/lib/zakuro/calculation/option/vanished_date/location.rb +84 -0
  25. data/lib/zakuro/calculation/range/medieval_annual_range.rb +5 -3
  26. data/lib/zakuro/calculation/range/transfer/gengou_scroller.rb +1 -0
  27. data/lib/zakuro/calculation/stella/lunar/abstract_location.rb +6 -2
  28. data/lib/zakuro/calculation/stella/lunar/choukei_value.rb +14 -0
  29. data/lib/zakuro/calculation/summary/internal/option.rb +59 -4
  30. data/lib/zakuro/context/option.rb +17 -0
  31. data/lib/zakuro/context/version_class_resolver.rb +17 -1
  32. data/lib/zakuro/operation/yaml/month.yaml +955 -281
  33. data/lib/zakuro/result/data/option/vanished_date/calculation.rb +45 -0
  34. data/lib/zakuro/result/data/option/vanished_date/option.rb +47 -0
  35. data/lib/zakuro/result/data/single_day.rb +2 -0
  36. data/lib/zakuro/version/daien/const/number.rb +2 -0
  37. data/lib/zakuro/version/daien/const/remainder.rb +7 -2
  38. data/lib/zakuro/version/daien/cycle/remainder.rb +38 -20
  39. data/lib/zakuro/version/daien/monthly/lunar_phase.rb +2 -4
  40. data/lib/zakuro/version/daien/option/dropped_date/parameter.rb +5 -3
  41. data/lib/zakuro/version/daien/option/vanished_date/parameter.rb +33 -0
  42. data/lib/zakuro/version/daien/stella/lunar/location.rb +5 -8
  43. data/lib/zakuro/version/genka/cycle/remainder.rb +6 -2
  44. data/lib/zakuro/version/genka/monthly/lunar_phase.rb +14 -3
  45. data/lib/zakuro/version/genka/option/vanished_date/parameter.rb +31 -0
  46. data/lib/zakuro/version/gihou/const/remainder.rb +1 -5
  47. data/lib/zakuro/version/gihou/cycle/remainder.rb +0 -26
  48. data/lib/zakuro/version/gihou/monthly/lunar_phase.rb +2 -4
  49. data/lib/zakuro/version/gihou/option/vanished_date/parameter.rb +31 -0
  50. data/lib/zakuro/version/gihou/stella/lunar/location.rb +5 -8
  51. data/lib/zakuro/version/senmyou/const/number.rb +3 -1
  52. data/lib/zakuro/version/senmyou/const/remainder.rb +3 -0
  53. data/lib/zakuro/version/senmyou/cycle/remainder.rb +17 -34
  54. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +5 -5
  55. data/lib/zakuro/version/senmyou/option/vanished_date/parameter.rb +33 -0
  56. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +6 -8
  57. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +9 -0
  58. metadata +24 -3
data/doc/usage.md ADDED
@@ -0,0 +1,120 @@
1
+ # 使用方法
2
+
3
+ 使用例は後述しております。
4
+
5
+ ## 手順
6
+
7
+ ### 条件設定
8
+
9
+ 期待する結果を得るためには、適切な条件を渡す必要があります。
10
+
11
+ 条件はHash型で渡します。
12
+
13
+ ```
14
+ require 'zakuro'
15
+
16
+ # 初期化時の設定
17
+ merchant = Zakuro::Merchant.new(condition: { date: Date.new(862, 2, 3) })
18
+ ```
19
+
20
+ 詳細は、 [条件](./condition.md) を参照してください。
21
+
22
+ ### 条件再設定
23
+
24
+ 一度設定した条件を書き換えることが可能です。
25
+
26
+ ```
27
+ # 再設定
28
+ merchant.offer(condition: { date: western_date })
29
+
30
+ # 条件を指定しない初期化
31
+ merchant = Zakuro::Merchant.new
32
+
33
+ # 後付けで条件を設定する
34
+ merchant.offer(condition: { date: western_date })
35
+ ```
36
+
37
+ ### 結果取得
38
+
39
+ #### JSON(整形なし)
40
+ ```
41
+ puts merchant.commit.to_json
42
+ # => {"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}}}}
43
+ ```
44
+
45
+ #### JSON(整形あり)
46
+
47
+ 行数が多いため結果は省略します。
48
+ ```
49
+ puts merchant.commit.to_pretty_json
50
+ # => {
51
+ "data": {
52
+ "year": {
53
+ "first_gengou": {
54
+ "name": "貞観",
55
+ "number": 4
56
+ },
57
+ "second_gengou": {
58
+ "name": "",
59
+ "number": -1
60
+ },
61
+ "zodiac_name": "壬午",
62
+ "total_days": 354
63
+ },
64
+ # 中略
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## 使用例
70
+
71
+ ### 一日検索(西暦 -> 和暦)
72
+
73
+ ```
74
+ require 'zakuro'
75
+
76
+ # 条件となる西暦日を準備する
77
+ western_date = Date.new(862, 2, 3)
78
+
79
+ # ざくろ商人(Zakuro::Merchant)に西暦日を渡す
80
+ merchant = Zakuro::Merchant.new(condition: { date: western_date })
81
+
82
+ # 結果の和暦日を取得する
83
+ puts merchant.commit.to_json
84
+ # => {"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}}}}
85
+
86
+ ```
87
+
88
+ ### 一日検索(和暦 -> 和暦)
89
+
90
+ ```
91
+ require 'zakuro'
92
+
93
+ # 条件となる和暦日を準備する
94
+ japan_date = '貞観4年1月1日'
95
+
96
+ # ざくろ商人(Zakuro::Merchant)に和暦日を渡す
97
+ merchant = Zakuro::Merchant.new(condition: { date: japan_date })
98
+
99
+ # 結果の和暦日を取得する
100
+ puts merchant.commit.to_json
101
+ # => {"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}}}}
102
+ ```
103
+
104
+ ### 範囲検索(西暦 -> 和暦)
105
+
106
+ ```
107
+ merchant = Zakuro::Merchant.new(condition: { range: {start: Date.new(862, 2, 3), last: Date.new(862, 2, 4)
108
+ } })
109
+
110
+ puts merchant.commit.to_json
111
+ # => {"list":[{"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}}}},{"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":2,"zodiac_name":"辛未","remainder":"7-1282","western_date":"0862-02-04"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":2,"zodiac_name":"辛未","remainder":"7-1282","western_date":"0862-02-04"},"options":{}}}}]}
112
+ ```
113
+
114
+ ### 範囲検索(和暦 -> 和暦)
115
+
116
+ ```
117
+ merchant = Zakuro::Merchant.new(condition: { range: {start: '貞観4年1月1日', last: '貞観4年1月2日' } })
118
+ puts merchant.commit.to_json
119
+ # => {"list":[{"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"options":{}}}},{"data":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":2,"zodiac_name":"辛未","remainder":"7-1282","western_date":"0862-02-04"},"options":{}},"operation":{"operated":false,"month":{"current":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]},"parent":{"id":"","western_date":"","page":-1,"number":-1,"annotations":[]}},"original":{"year":{"first_gengou":{"name":"貞観","number":4},"second_gengou":{"name":"","number":-1},"zodiac_name":"壬午","total_days":354},"month":{"number":1,"leaped":false,"days_name":"大","first_day":{"number":1,"zodiac_name":"庚午","remainder":"6-1282","western_date":"0862-02-03"},"odd_solar_terms":[{"index":5,"remainder":"34-5368"}],"even_solar_terms":[{"index":4,"remainder":"19-3532"}]},"day":{"number":2,"zodiac_name":"辛未","remainder":"7-1282","western_date":"0862-02-04"},"options":{}}}}]}
120
+ ```
@@ -0,0 +1,86 @@
1
+ # 滅日
2
+
3
+ 没日を端的に説明すると、1朔望月(29.5..日)を30日で表わすために、一定の法則で `不足した日` として配置された日である
4
+
5
+ 経朔(平均値で求めた月初日)をもとに計算を行う
6
+
7
+ ## 計算
8
+ ### 宣明暦
9
+ 「長慶宣明暦算法」に従う
10
+
11
+ 下記は該当箇所の引用と、それに対応する計算を示している
12
+
13
+ ```
14
+ ◯滅日ヲ求ルノ術
15
+ ```
16
+
17
+ ```
18
+ 経朔之小余朔虚分ノ三千九百四十三ヨリ巳下ハ者之ヲ置キテ三十ヲ以テ之ヲ乗シ朔虚分ヲ以テ之ヲ除シ商ヲ以テ日ト為ス経朔ノ大余ヲ加フ甲子ヨリ命スル事右ノ如シ
19
+ ```
20
+
21
+ * 滅日あり
22
+ * 経朔の小余 < 3943
23
+ * 計算方法
24
+ * (経朔の小余 * 30) / 3943 = 大余(正数) ... A
25
+ * (経朔の小余 * 30) % 3943 = 小余 ... B
26
+ * 滅余
27
+ * (A + 経朔の大余) % 60 = 大余
28
+ * B = 小余
29
+
30
+ ```
31
+ 第一段ノ経朔ノ小余ノ數三千九百四十三ヨリ少クハ滅日ヲ求メヨト云フナリ則チ己丑ノ十二月ノ小余三百二十アリコレ朔虚分ノ數ヨリ少キ故ニ滅日ヲ求ムコノ三百二十置キテ三十ヲ以テ乗スレハ九千六百トナルコレヲ朔虚分ノ三千九百四十三ニテワレハ商ニトナリ不盡一千七百一十四アリ此ノ商ニニ経朔ノ大余二十二ヲクワエテ滅日ノ大余二十四小余一千七百十四トナルモシ経朔ノ大余ヲ加エテ甲子ノ六十にミツレハコレヲ去モシ小余ニ三十ヲ乗ソモ朔虚分ノ數ニタラサル時ハ経朔ノ大余ヲ直ニ用ユヘシ支干ヲ付ルフツ子ノ如ク紀法ノ圖ニテモトムヘシ二十四ハ戊子ナリ
32
+ ```
33
+
34
+ * 経朔: 大余22小余320
35
+ * 滅日あり
36
+ * 320 < 3943
37
+ * 計算
38
+ * 30 * 320 = 9600
39
+ * 9600 / 3943 = 2
40
+ * 9600 % 3943 = 1714
41
+ * 滅余
42
+ * (2 + 22) % 60 = 24
43
+ * 1714
44
+
45
+ ```
46
+ 大余ニ二 小余ニ三千五百九十一
47
+ ```
48
+
49
+ * 大余2小余3591
50
+
51
+ ```
52
+ 滅日ノ大小余ニ此ノ如ク加フレハ其次ノ滅日ノ大小余トナルモシクワエテ大余甲子ノ六十ニナレハ減去ス又小余朔虚分ノ三千九百四十三ニナレハ減去シテ大余三ヲ加フヘシサテ滅日ノアル月ハ経朔ノ小余朔虚分ノ數ヨリ以下ノ處ナリ
53
+ ```
54
+
55
+ * 次の滅余
56
+ * (小余1714 + 小余3591) % 3943 = 1362
57
+ * (大余24 + 大余2 + 繰り上げ1) % 60 = 27
58
+
59
+ ## 大衍暦
60
+ 『歴代天文律暦等志彙編 七』に従う
61
+
62
+ ### 本文
63
+
64
+ ```
65
+ 推滅日 以有滅之朔経小餘, 減大衍通法。餘, 倍参伍乗之, 用減滅法。餘, 満朔虚分, 為日。不満, 為滅餘。命起経朔初日算外, 即合朔後滅日也。凡経朔小餘不満朔虚分者, 為有滅之朔。
66
+ ```
67
+ p.2056
68
+
69
+ ```
70
+ 大衍通法:三千四十。
71
+ 四象之策:二十九:餘, 一千六百一十三。
72
+ ```
73
+ p.2055-2056
74
+
75
+ ### 定数
76
+ 計算方法は宣明暦と変わらない。定数のみ取りだす
77
+
78
+ #### 朔虚分
79
+
80
+ 本文中に言及はないが、宣明暦と変わらないと見て良い
81
+
82
+ `理想の月日数` (30) * `大衍通法` (3040) - ( `四象之策` (29 * 3040 + 1613) ) = 1427
83
+
84
+ #### 小余倍率
85
+
86
+ `倍参伍` (2 * 3 * 5) = 30
@@ -0,0 +1,163 @@
1
+ # 大衍暦
2
+
3
+ 天平宝字8年1月1日(764/02/07)- 貞観3年12月30日(862/02/02)
4
+
5
+ # 著者
6
+
7
+ [pldb](https://github.com/pldb)
8
+
9
+ # 前提
10
+
11
+ 大衍暦は太陰太陽暦である
12
+
13
+ 詳細は [太陰太陽暦](./section/lunisolar_calendar.md) に記載してある
14
+
15
+ # 計算
16
+
17
+ 計算にあたって、暦共通の計算と、大衍暦固有の計算がある
18
+
19
+ 暦共通の計算は前処理/後処理として説明する
20
+
21
+ その間に大衍暦固有の計算を説明することとする
22
+
23
+ ## 共通前処理
24
+
25
+ 詳細は [共通前処理](./section/common_pre_process.md) に記載してある
26
+
27
+ ## 大衍暦固有の計算
28
+
29
+ 計算手順を以下に示す
30
+
31
+ 1. 11月定朔(補正後の月初日)を求める
32
+ 1. 対象の西暦年から前年冬至を求める
33
+ 2. 対象の西暦年から冬至の月齢を求める
34
+ 3. 前年冬至から11月経朔(補正前の月初日)を求める
35
+ 4. 二十四節気から太陽の運動の補正値を求める
36
+ 5. 月の進退から月の運動の補正値を求める
37
+ 6. 太陽・月の運動の補正値から11月定朔(補正後の月初日)を求める
38
+ 2. 12月定朔(補正後の月初日)を求める
39
+ 1. 11月経朔を進めて12月経朔を求める
40
+ 2. 11月の二十四節気を進めて12月の二十四節気を求める
41
+ 3. 12月の二十四節気から太陽の運動の補正値を求める
42
+ 4. 11月の月の進退を進めて12月の月の進退を求める
43
+ 5. 12月の月の進退から月の運動の補正値を求める
44
+ 6. 太陽・月の運動の補正値から12月定朔(補正後の月初日)を求める
45
+
46
+ 1の計算方法は『日本暦日原典』p.516-521に依拠する
47
+
48
+ 基本的に [宣明暦](./senmyou.md) と手順は変わらない
49
+
50
+ 使用する定数の差分は [定数](./section/const.md) に記載してある
51
+
52
+ 上記のうち、宣明暦との差分のみ記載する
53
+
54
+ ### 二十四節気から太陽の運動の補正値を求める
55
+
56
+ 「24気損益眺朒数」は次の通りである
57
+
58
+ |-|a(眺朒数の初日の値)|b(損益率初日の値)|c(一日ごとの差)|
59
+ |:----|:----|:----|:----|
60
+ |冬至(とうじ)|0.0|+13.4524|-0.1886|
61
+ |小寒(しょうかん)|+176.0|+10.5564|-0.1634|
62
+ |大寒(だいかん)|+314.0|+8.0408|-0.1446|
63
+ |立春(りっしゅん)|+418.0|+5.8160|-0.1318|
64
+ |雨水(うすい)|+491.0|+3.7987|-0.1240|
65
+ |啓蟄(けいちつ)|+535.0|+1.9265|-0.1240|
66
+ |春分(しゅんぶん)|+551.0|-0.2048|-0.1178|
67
+ |清明(せいめい)|+535.0|-1.9968|-0.1190|
68
+ |穀雨(こくう)|+491.0|-3.7956|-0.1240|
69
+ |立夏(りっか)|+418.0|-5.6626|-0.1324|
70
+ |小満(しょうまん)|+314.0|-7.6555|-0.1436|
71
+ |芒種(ぼうしゅ)|+176.0|-9.9405|-0.1436|
72
+ |夏至(げし)|0.0|-12.0819|+0.1436|
73
+ |小暑(しょうしょ)|-176.0|-9.7018|+0.1324|
74
+ |大暑(たいしょ)|-314.0|-7.5450|+0.1240|
75
+ |立秋(りっしゅう)|-418.0|-5.5634|+0.1190|
76
+ |処暑(しょしょ)|-491.0|-3.7038|+0.1178|
77
+ |白露(はくろ)|-535.0|-1.8954|+0.1178|
78
+ |秋分(しゅうぶん)|-551.0|+0.1783|+0.1240|
79
+ |寒露(かんろ)|-535.0|+2.0042|+0.1318|
80
+ |霜降(そうこう)|-491.0|+3.8950|+0.1446|
81
+ |立冬(りっとう)|-418.0|+5.9214|+0.1634|
82
+ |小雪(しょうせつ)|-314.0|+8.1610|+0.1886|
83
+ |大雪(たいせつ)|-176.0|+10.9010|+0.1886|
84
+
85
+ #### 月の進退から月の運動の補正値を求める
86
+
87
+ 宣明暦とは異なり、次の表を用いる
88
+
89
+ |入暦|小余(下限)|小余(上限)|増減率|遅速積|備考|
90
+ |:----|:----|:----|:----|:----|:----|
91
+ |01日|0|3040|+297|0|-|
92
+ |02日|0|3040|+259|+297|-|
93
+ |03日|0|3040|+220|+556|-|
94
+ |04日|0|3040|+180|+776|-|
95
+ |05日|0|3040|+139|+956|-|
96
+ |06日|0|3040|+97|+1095|-|
97
+ |07日|0|2701|+48|+1192|-|
98
+ |07日|2701|3040|-6|+1240|+1192 + 48|
99
+ |08日|0|3040|-64|+1234|-|
100
+ |09日|0|3040|-106|+1170|-|
101
+ |10日|0|3040|-148|+1064|-|
102
+ |11日|0|3040|-189|+916|-|
103
+ |12日|0|3040|-229|+727|-|
104
+ |13日|0|3040|-267|+498|-|
105
+ |14日|0|2363|-231|+231|-|
106
+ |14日|2363|3040|-66|0|+232 - 231|
107
+ |15日|0|3040|-289|-66|-|
108
+ |16日|0|3040|-250|-355|-|
109
+ |17日|0|3040|-211|-605|-|
110
+ |18日|0|3040|-171|-816|-|
111
+ |19日|0|3040|-130|-987|-|
112
+ |20日|0|3040|-87|-1117|-|
113
+ |21日|0|2024|-36|-1204|-|
114
+ |21日|2024|3040|+18|-1240|-1204 - 36|
115
+ |22日|0|3040|+73|-1222|-|
116
+ |23日|0|3040|+116|-1149|-|
117
+ |24日|0|3040|+157|-1033|-|
118
+ |25日|0|3040|+198|-876|-|
119
+ |26日|0|3040|+237|-678|-|
120
+ |27日|0|3040|+276|-441|-|
121
+ |28日|0|1686|+165|-165|-|
122
+
123
+ 『歴代天文律暦等志彙編 七』中華書房 p.2228-2230 により作成した
124
+
125
+ 宣明暦とは異なり進退の列がないが、それは無視して入暦だけを求めればよい
126
+
127
+ これは『日本暦日原典』の中で計算方法Aとされている
128
+
129
+ 他の計算方法B,Cも掲載されているが、ここでは一旦割愛する
130
+
131
+ #### 11月の二十四節気を進めて12月の二十四節気を求める
132
+
133
+ 「入気定日加減数」は次の通りである
134
+
135
+ |二十四節気|経過|
136
+ |:----|:----|
137
+ | 冬至(とうじ)・大雪(たいせつ)|14 日 1351 分 7 秒|
138
+ | 小寒(しょうかん)・小雪(しょうせつ)|14 日 1859 分 7 秒
139
+ | 大寒(だいかん)・立冬(りっとう)|14 日 2314 分 7 秒|
140
+ | 立春(りっしゅん)・霜降(そうこう)|14 日 2728 分 7 秒|
141
+ | 雨水(うすい)・寒露(かんろ)|15 日 76 分 7 秒|
142
+ | 啓蟄(けいちつ)・秋分(しゅうぶん)|15 日 450 分 7 秒|
143
+ | 春分(しゅんぶん)・白露(はくろ)|15 日 878 分 7 秒|
144
+ | 清明(せいめい)・処暑(しょしょ)|15 日 1252 分 7 秒|
145
+ | 穀雨(こくう)・立秋(りっしゅう)|15 日 1640 分 7 秒|
146
+ | 立夏(りっか)・大暑(たいしょ)|15 日 2054 分 7 秒|
147
+ | 小満(しょうまん)・小暑(しょうしょ)|15 日 2509 分 7 秒|
148
+ | 芒種(ぼうしゅ)・夏至(げし)|15 日 3017 分 7 秒|
149
+
150
+ 気策の 15-664.7 に対して、『歴代天文律暦等志彙編 七』中華書房 p.2224 盈縮分の行で加減している
151
+
152
+ ## 共通後処理
153
+
154
+ 詳細は [共通後処理](./section/common_post_process.md) に記載してある
155
+
156
+ # 結語
157
+
158
+ 暦共通・大衍暦の暦算は以上である
159
+
160
+ # 参考文献
161
+
162
+ * 内田 正男『日本暦日原典』雄山閣出版 1975(1975)
163
+ * 『歴代天文律暦等志彙編 七』中華書房
@@ -0,0 +1,116 @@
1
+ # 元嘉暦
2
+
3
+ 允恭天皇34年1月1日(445/01/24)-文武天皇1年12月29日(698/02/15)
4
+
5
+ # 著者
6
+
7
+ [pldb](https://github.com/pldb)
8
+
9
+ # 前提
10
+
11
+ 元嘉暦は太陰太陽暦である
12
+
13
+ 詳細は [太陰太陽暦](./section/lunisolar_calendar.md) に記載してある
14
+
15
+ # 計算
16
+
17
+ 計算にあたって、暦共通の計算と、元嘉暦固有の計算がある
18
+
19
+ 暦共通の計算は前処理/後処理として説明する
20
+
21
+ その間に元嘉暦固有の計算を説明することとする
22
+
23
+ ## 共通前処理
24
+
25
+ 詳細は [共通前処理](./section/common_pre_process.md) に記載してある
26
+
27
+ ## 元嘉暦固有の計算
28
+
29
+ 計算手順を以下に示す
30
+
31
+ 1. 正月朔を求める
32
+ 2. 正月中気を求める
33
+
34
+ 1の計算方法は『日本暦日原典』p.522-523に依拠する
35
+
36
+ 2の計算方法は『日本暦日原典』、『歴代天文律暦等志彙編 六』p.1728 に依拠する
37
+
38
+ ### 正月朔を求める
39
+
40
+ 前提として、 `西暦0年の積年` (1612) を使用する
41
+
42
+ これは次の式により求められる
43
+
44
+ `積年` (5703) - `元嘉20年` (443) - ( `紀法` (608) * `干支` (60) )
45
+
46
+ 次に、西暦x年の正月朔の大余小余を求める
47
+
48
+ 1. ( `西暦0年の積年` (1612) + x ) * `メトン周期(19年=235朔望月)` ( 235 / 19 ) = A ...余り
49
+
50
+ 2. A * `1年(紀日 / 紀法)` ( 22207 / 752 ) = B ...余りが朔の小余
51
+
52
+ 3. B / `大余上限` (60) = C ...余りが朔の大余
53
+
54
+ 『日本暦日原典』に挙げられている西暦529年の場合は次の通りとなる
55
+
56
+ 1. (1612 + 529) * 235 / 19 = 26480 ...15
57
+
58
+ 2. 26480 * 22207 / 752 = 781969 ...672
59
+
60
+ 3. 781969 / 60 = 13032 ...49
61
+
62
+ これにより、大余49、小余 672 / `小余上限` (752) = 0.8936 が求められる
63
+
64
+ ### 正月中気を求める
65
+
66
+ こちらは宋書(『歴代天文律暦等志彙編 六』)を参考にする
67
+
68
+ 西暦x年の正月中気の大余小余を求める
69
+
70
+ 1. ( `西暦0年の積年` (1612) + x) * `餘数 / 度法` (1595 / 304) = A' ...余りが中気の小余
71
+
72
+ 2. A' / 60 = B' ...余りが朔の大余
73
+
74
+ 西暦529年の場合は次の通りとなる
75
+
76
+ 1. (1612 + 529) * 1595 / 304 = 11233 ...63
77
+
78
+ 2. 11233 / 60 = 13033 ...13
79
+
80
+ これにより、大余13、小余 126 / `度法` (304) = 0.2072 が求められる
81
+
82
+ #### 計算方法の相違
83
+
84
+ 『日本暦日原典』の場合は次のようになる
85
+
86
+ 1. ( `西暦0年の積年` (1612) + x) * `紀日 / 紀法` (222070 / 608) = A' ...余りが中気の小余
87
+
88
+ 2. A' / 60 = B' ...余りが朔の大余
89
+
90
+ 『日本暦日原典』では分母を `紀法` にしているが、当ライブラリでは宋書にならって `度法` としたため採用しなかった
91
+
92
+ 両者は計算方法は異なるが、結果の大余小余は変わらない
93
+
94
+ #### 餘数とは
95
+
96
+ 先述の `餘数` (1595) については注釈がないが、次のように求めることができた
97
+
98
+ `紀日` (222070) = `紀法` (608) * 360 + 3190
99
+
100
+ この 3190 が余りとなるが、分母が `紀法` (608) ではなく `度法` (304) のため2で割る
101
+
102
+ これにより 3190 / 2 = 1595 となる
103
+
104
+ ## 共通後処理
105
+
106
+ 詳細は [共通後処理](./section/common_post_process.md) に記載してある
107
+
108
+ # 結語
109
+
110
+ 暦共通・元嘉暦の暦算は以上である
111
+
112
+ # 参考文献
113
+
114
+ * 内田 正男『日本暦日原典』雄山閣出版 1975(1975)
115
+ * 『歴代天文律暦等志彙編 六』中華書房
116
+
@@ -0,0 +1,172 @@
1
+ # 儀鳳暦
2
+
3
+ 文武天皇2年1月1日(698/02/16)-天平宝字7年12月30日(764/02/06)
4
+
5
+ # 著者
6
+
7
+ [pldb](https://github.com/pldb)
8
+
9
+ # 前提
10
+
11
+ 儀鳳暦は太陰太陽暦である
12
+
13
+ 詳細は [太陰太陽暦](./section/lunisolar_calendar.md) に記載してある
14
+
15
+ # 計算
16
+
17
+ 計算にあたって、暦共通の計算と、儀鳳暦固有の計算がある
18
+
19
+ 暦共通の計算は前処理/後処理として説明する
20
+
21
+ その間に儀鳳暦固有の計算を説明することとする
22
+
23
+ ## 共通前処理
24
+
25
+ 詳細は [共通前処理](./section/common_pre_process.md) に記載してある
26
+
27
+ ## 儀鳳暦固有の計算
28
+
29
+ 計算手順を以下に示す
30
+
31
+ 1. 11月定朔(補正後の月初日)を求める
32
+ 1. 対象の西暦年から前年冬至を求める
33
+ 2. 対象の西暦年から冬至の月齢を求める
34
+ 3. 前年冬至から11月経朔(補正前の月初日)を求める
35
+ 4. 二十四節気から太陽の運動の補正値を求める
36
+ 5. 月の進退から月の運動の補正値を求める
37
+ 6. 太陽・月の運動の補正値から11月定朔(補正後の月初日)を求める
38
+ 2. 12月定朔(補正後の月初日)を求める
39
+ 1. 11月経朔を進めて12月経朔を求める
40
+ 2. 11月の二十四節気を進めて12月の二十四節気を求める
41
+ 3. 12月の二十四節気から太陽の運動の補正値を求める
42
+ 4. 11月の月の進退を進めて12月の月の進退を求める
43
+ 5. 12月の月の進退から月の運動の補正値を求める
44
+ 6. 太陽・月の運動の補正値から12月定朔(補正後の月初日)を求める
45
+
46
+ 1の計算方法は『日本暦日原典』p.516-520に依拠する
47
+
48
+ 基本的に [宣明暦](./senmyou.md) と手順は変わらない
49
+
50
+ 使用する定数の差分は [定数](./section/const.md) に記載してある
51
+
52
+ 上記のうち、宣明暦との差分のみ記載する
53
+
54
+ ### 二十四節気から太陽の運動の補正値を求める
55
+
56
+ 「24気損益眺朒数」は次の通りである
57
+
58
+ |-|a(眺朒数の初日の値)|b(損益率初日の値)|c(一日ごとの差)|
59
+ |:----|:----|:----|:----|
60
+ |冬至(とうじ)|0.0|+3.9546|-0.0372|
61
+ |小寒(しょうかん)|+54.0|+3.4091|-0.0372|
62
+ |大寒(だいかん)|+100.0|+2.8636|-0.0372|
63
+ |立春(りっしゅん)|+138.0|+2.3181|+0.0372|
64
+ |雨水(うすい)|+176.0|+2.8636|+0.0372|
65
+ |啓蟄(けいちつ)|+222.0|+3.4091|+0.0372|
66
+ |春分(しゅんぶん)|+276.0|-3.7220|+0.0329|
67
+ |清明(せいめい)|+222.0|-3.2086|+0.0329|
68
+ |穀雨(こくう)|+176.0|-2.6952|+0.0329|
69
+ |立夏(りっか)|+138.0|-2.1818|-0.0329|
70
+ |小満(しょうまん)|+100.0|-2.6952|-0.0329|
71
+ |芒種(ぼうしゅ)|+54.0|-3.2086|-0.0329|
72
+ |夏至(げし)|0.0|-3.7220|+0.0329|
73
+ |小暑(しょうしょ)|-54.0|-3.2086|+0.0329|
74
+ |大暑(たいしょ)|-100.0|-2.6952|+0.0329|
75
+ |立秋(りっしゅう)|-138.0|-2.1818|-0.0329|
76
+ |処暑(しょしょ)|-176.0|-2.6952|-0.0329|
77
+ |白露(はくろ)|-222.0|-3.2086|-0.0329|
78
+ |秋分(しゅうぶん)|-276.0|+3.9546|-0.0372|
79
+ |寒露(かんろ)|-222.0|+3.4091|-0.0372|
80
+ |霜降(そうこう)|-176.0|+2.8636|-0.0372|
81
+ |立冬(りっとう)|-138.0|+2.3181|+0.0372|
82
+ |小雪(しょうせつ)|-100.0|+2.8636|+0.0372|
83
+ |大雪(たいせつ)|-54.0|+3.4091|+0.0372|
84
+
85
+ #### 月の進退から月の運動の補正値を求める
86
+
87
+ 宣明暦とは異なり、次の表を用いる
88
+
89
+ |入暦|小余(下限)|小余(上限)|増減率|遅速積|備考|
90
+ |:----|:----|:----|:----|:----|:----|
91
+ |01日|0|1340|-134|0|-|
92
+ |02日|0|1340|-117|-134|-|
93
+ |03日|0|1340|-99|-251|-|
94
+ |04日|0|1340|-78|-350|-|
95
+ |05日|0|1340|-56|-428|-|
96
+ |06日|0|1340|-33|-484|-|
97
+ |07日|0|1191|-9|-517|-|
98
+ |07日|1191|1340|0|-526|-|
99
+ |08日|0|1340|+14|-526|-|
100
+ |09日|0|1340|+38|-512|-|
101
+ |10日|0|1340|+62|-474|-|
102
+ |11日|0|1340|+85|-412|-|
103
+ |12日|0|1340|+104|-327|-|
104
+ |13日|0|1340|+121|-223|-|
105
+ |14日|0|1042|+102|-102|-|
106
+ |14日|1042|1340|+29|0|-|
107
+ |15日|0|1340|+128|+29|-|
108
+ |16日|0|1340|+115|+157|-|
109
+ |17日|0|1340|+95|+272|-|
110
+ |18日|0|1340|+74|+367|-|
111
+ |19日|0|1340|+52|+441|-|
112
+ |20日|0|1340|+28|+493|-|
113
+ |21日|0|892|+4|+521|-|
114
+ |21日|892|1340|0|+525|-|
115
+ |22日|0|1340|-20|+525|-|
116
+ |23日|0|1340|-44|+505|-|
117
+ |24日|0|1340|-68|+461|-|
118
+ |25日|0|1340|-89|+393|-|
119
+ |26日|0|1340|-108|+304|-|
120
+ |27日|0|1340|-125|+196|-|
121
+ |28日|0|743.06|-71|+71|-|
122
+
123
+ 『歴代天文律暦等志彙編 七』中華書房 p.2010-2013 により作成した
124
+
125
+ ただし、引用元を次のように訂正する
126
+
127
+ * 14日の小余上限が 1402 となっているが、これは 1042 の誤り
128
+ * 宣明暦の定数と比較するとこの誤りが分かる
129
+ * 宣明暦の7日の小余は7465(初益)である。入暦は1始まりなので、0始まりで表現すると 6-7465 となる
130
+ * 6 * 8400(統法) + 7465(初益) = 57865
131
+ * 57865 * 2 = 115730
132
+ * 115730 / 1340(総法) = 13 余り 1041.690476
133
+ * 0始まりを1始まりにして少数部を丸めると 14-1042
134
+ * 28日の小余上限が 743 となっているが、これを 743.06 とする
135
+ * 天平13年(741年) 2月 の計算により 743.06 とした
136
+
137
+ 宣明暦とは異なり進退の列がないが、それは無視して入暦だけを求めればよい
138
+
139
+ これは『日本暦日原典』の中で計算方法Aとされている
140
+
141
+ 他の計算方法B,Cも掲載されているが、ここでは一旦割愛する
142
+
143
+ #### 11月の二十四節気を進めて12月の二十四節気を求める
144
+
145
+ 「入気定日加減数」は次の通りである
146
+
147
+ |二十四節気|経過|
148
+ |:----|:----|
149
+ | 冬至(とうじ)・大雪(たいせつ) | 14 日 910 分 5 秒 |
150
+ | 小寒(しょうかん)・小雪(しょうせつ) | 14 日 1014 分 5 秒 |
151
+ | 大寒(だいかん)・立冬(りっとう) | 14 日 1118 分 5 秒 |
152
+ | 立春(りっしゅん)・霜降(そうこう) | 14 日 1118 分 5 秒 |
153
+ | 雨水(うすい)・寒露(かんろ) | 14 日 1014 分 5 秒 |
154
+ | 啓蟄(けいちつ)・秋分(しゅうぶん) | 14 日 910 分 5 秒 |
155
+ | 春分(しゅんぶん)・白露(はくろ) | 15 日 1014 分 5 秒 |
156
+ | 清明(せいめい)・処暑(しょしょ) | 15 日 910 分 5 秒 |
157
+ | 穀雨(こくう)・立秋(りっしゅう) | 15 日 806 分 5 秒 |
158
+ | 立夏(りっか)・大暑(たいしょ) | 15 日 806 分 5 秒 |
159
+ | 小満(しょうまん)・小暑(しょうしょ) | 15 日 910 分 5 秒 |
160
+ | 芒種(ぼうしゅ)・夏至(げし) | 15 日 1014 分 5 秒 |
161
+
162
+ ## 共通後処理
163
+
164
+ 詳細は [共通後処理](./section/common_post_process.md) に記載してある
165
+
166
+ # 結語
167
+
168
+ 暦共通・儀鳳暦の暦算は以上である
169
+
170
+ # 参考文献
171
+
172
+ * 内田 正男『日本暦日原典』雄山閣出版 1975(1975)