zakuro 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zakuro/calculation/cycle/abstract_remainder.rb +12 -0
  3. data/lib/zakuro/calculation/range/full_range.rb +1 -1
  4. data/lib/zakuro/version.rb +1 -1
  5. data/lib/zakuro/version/senmyou/const/number.rb +51 -0
  6. data/lib/zakuro/version/senmyou/const/remainder.rb +43 -0
  7. data/lib/zakuro/version/senmyou/cycle/remainder.rb +4 -6
  8. data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +35 -54
  9. data/lib/zakuro/version/senmyou/range/annual_range.rb +9 -65
  10. data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +237 -0
  11. data/lib/zakuro/version/senmyou/stella/lunar/localization.rb +45 -0
  12. data/lib/zakuro/version/senmyou/stella/lunar/location.rb +108 -0
  13. data/lib/zakuro/version/senmyou/stella/lunar/value.rb +89 -0
  14. data/lib/zakuro/version/senmyou/stella/origin/average_november.rb +34 -0
  15. data/lib/zakuro/version/senmyou/stella/origin/lunar_age.rb +62 -0
  16. data/lib/zakuro/version/senmyou/stella/origin/winter_solstice.rb +55 -0
  17. data/lib/zakuro/version/senmyou/stella/solar/adjustment.rb +93 -0
  18. data/lib/zakuro/version/senmyou/stella/solar/average.rb +175 -0
  19. data/lib/zakuro/version/senmyou/stella/solar/interval.rb +103 -0
  20. data/lib/zakuro/version/senmyou/stella/solar/location.rb +164 -0
  21. data/lib/zakuro/version/senmyou/stella/solar/value.rb +138 -0
  22. metadata +20 -11
  23. data/lib/zakuro/version/senmyou/stella/lunar_orbit.rb +0 -332
  24. data/lib/zakuro/version/senmyou/stella/solar_average.rb +0 -169
  25. data/lib/zakuro/version/senmyou/stella/solar_location.rb +0 -213
  26. data/lib/zakuro/version/senmyou/stella/solar_orbit.rb +0 -213
  27. data/lib/zakuro/version/senmyou/stella/winter_solstice.rb +0 -106
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../output/logger'
4
-
5
- # :nodoc:
6
- module Zakuro
7
- # :nodoc:
8
- module Senmyou
9
- # :reek:TooManyConstants
10
-
11
- #
12
- # WinterSolstice 冬至
13
- #
14
- module WinterSolstice
15
- # @return [Integer] 統法(1日=8400分)
16
- DAY = 8400
17
- # @return [Integer] 朔望月
18
- SYNODIC_MONTH = 248_057
19
- # @return [Integer] 一年
20
- YEAR = 3_068_055
21
- # @return [Integer] 通余: (YEAR - DAY * 12 * 30) = 44055
22
- REMAINDER_ALL_YEAR = 44_055
23
- # @return [Integer] 旬周(60日) 8400 * 60
24
- SIXTY_DAYS = 504_000
25
- # @return [Integer] 積年(甲子夜半朔旦冬至〜暦の開始前)
26
- TOTAL_YEAR = 7_070_138
27
- # @return [Integer] 暦の開始年(長慶2年)
28
- BEGIN_YEAR = 822
29
-
30
- # @return [Output::Logger] ロガー
31
- LOGGER = Output::Logger.new(location: 'winter_solstice')
32
-
33
- # :reek:TooManyStatements { max_statements: 6 }
34
-
35
- #
36
- # 対象年の前年の冬至を求める
37
- #
38
- # @param [Integer] western_year 西暦年
39
- #
40
- # @return [Remainder] 前年の冬至
41
- #
42
- def self.calc(western_year:)
43
- # 積年の開始から対象年までの年数
44
- total = TOTAL_YEAR + western_year - BEGIN_YEAR
45
- remainder_year = total % SIXTY_DAYS
46
-
47
- LOGGER.debug("[a01]:#{remainder_year}")
48
-
49
- # 通余を使う
50
- winter_solstice_minute = (remainder_year * REMAINDER_ALL_YEAR) % SIXTY_DAYS
51
-
52
- LOGGER.debug("[a02]:#{winter_solstice_minute}")
53
-
54
- Cycle::Remainder.new(total: winter_solstice_minute)
55
- end
56
-
57
- # :reek:TooManyStatements { max_statements: 7 }
58
-
59
- #
60
- # 対象年の天正閏余(冬至より前にある11月経朔との差 = 月齢)を算出する
61
- # 太陽と月の運動による補正値を算出し、その補正結果を返す
62
- #
63
- # @param [Integer] western_year 西暦年
64
- #
65
- # @return [Remainder] 天正閏余
66
- #
67
- def self.calc_moon_age(western_year:)
68
- # 積年の開始から対象年までの年数
69
- total = TOTAL_YEAR + western_year - BEGIN_YEAR
70
-
71
- # 12朔望月に対する1年の余り(単位:分)
72
- remainder_minute = YEAR - (SYNODIC_MONTH * 12)
73
-
74
- # 朔望月に含まれなかった余り(単位:年)
75
- remainder_year = total % SYNODIC_MONTH
76
-
77
- LOGGER.debug("[b01]: #{remainder_year}")
78
-
79
- # 天正閏余
80
- winter_solstice_age = remainder_minute * remainder_year % SYNODIC_MONTH
81
-
82
- LOGGER.debug("[b02]: #{winter_solstice_age}")
83
-
84
- # 大余・小余に変換する
85
- Cycle::Remainder.new(total: winter_solstice_age)
86
- end
87
-
88
- #
89
- # 11月経朔(冬至が含まれる月の1日)を求める
90
- #
91
- # @param [Integer] western_year 西暦年
92
- #
93
- # @return [Remainder] 11月経朔
94
- #
95
- def self.calc_averaged_last_november_1st(western_year:)
96
- # 冬至
97
- winter_solstice = calc(western_year: western_year)
98
- # 天正閏余
99
- winter_solstice_age = calc_moon_age(western_year: western_year)
100
-
101
- # 11月経朔
102
- winter_solstice.sub(winter_solstice_age)
103
- end
104
- end
105
- end
106
- end