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.
- checksums.yaml +4 -4
- data/lib/zakuro/calculation/cycle/abstract_remainder.rb +12 -0
- data/lib/zakuro/calculation/range/full_range.rb +1 -1
- data/lib/zakuro/version.rb +1 -1
- data/lib/zakuro/version/senmyou/const/number.rb +51 -0
- data/lib/zakuro/version/senmyou/const/remainder.rb +43 -0
- data/lib/zakuro/version/senmyou/cycle/remainder.rb +4 -6
- data/lib/zakuro/version/senmyou/monthly/lunar_phase.rb +35 -54
- data/lib/zakuro/version/senmyou/range/annual_range.rb +9 -65
- data/lib/zakuro/version/senmyou/stella/lunar/adjustment.rb +237 -0
- data/lib/zakuro/version/senmyou/stella/lunar/localization.rb +45 -0
- data/lib/zakuro/version/senmyou/stella/lunar/location.rb +108 -0
- data/lib/zakuro/version/senmyou/stella/lunar/value.rb +89 -0
- data/lib/zakuro/version/senmyou/stella/origin/average_november.rb +34 -0
- data/lib/zakuro/version/senmyou/stella/origin/lunar_age.rb +62 -0
- data/lib/zakuro/version/senmyou/stella/origin/winter_solstice.rb +55 -0
- data/lib/zakuro/version/senmyou/stella/solar/adjustment.rb +93 -0
- data/lib/zakuro/version/senmyou/stella/solar/average.rb +175 -0
- data/lib/zakuro/version/senmyou/stella/solar/interval.rb +103 -0
- data/lib/zakuro/version/senmyou/stella/solar/location.rb +164 -0
- data/lib/zakuro/version/senmyou/stella/solar/value.rb +138 -0
- metadata +20 -11
- data/lib/zakuro/version/senmyou/stella/lunar_orbit.rb +0 -332
- data/lib/zakuro/version/senmyou/stella/solar_average.rb +0 -169
- data/lib/zakuro/version/senmyou/stella/solar_location.rb +0 -213
- data/lib/zakuro/version/senmyou/stella/solar_orbit.rb +0 -213
- 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
|