Class: Zakuro::Version::Senmyou::Solar::Average
- Inherits:
-
Calculation::Solar::AbstractAverage
- Object
- Calculation::Solar::AbstractAverage
- Zakuro::Version::Senmyou::Solar::Average
- Defined in:
- lib/zakuro/version/senmyou/stella/solar/average.rb
Overview
Average 平気(太陽軌道平均)
Instance Attribute Summary
Attributes inherited from Calculation::Solar::AbstractAverage
Class Method Summary collapse
-
.calc_first_solar_term_index(western_year:) ⇒ Integer
計算開始する二十四節気番号を求める.
-
.first_solar_term(western_year:) ⇒ SolarTerm
計算開始する二十四節気を求める.
Instance Method Summary collapse
-
#initialize(western_year:) ⇒ Average
constructor
初期化.
-
#set(annual_range:) ⇒ Array<Month>
冬至から数えた1年データの月ごとに二十四節気を割り当てる.
Constructor Details
#initialize(western_year:) ⇒ Average
初期化
30 31 32 33 |
# File 'lib/zakuro/version/senmyou/stella/solar/average.rb', line 30 def initialize(western_year:) solar_term = self.class.first_solar_term(western_year: western_year) super(solar_term: solar_term) end |
Class Method Details
.calc_first_solar_term_index(western_year:) ⇒ Integer
計算開始する二十四節気番号を求める
-
前提として入定気は冬至の手前にある
-
例えば、定気が大雪であれば入定気は大雪の範囲内にある
-
入定気は、定気の開始位置に重複しない限り、常に定気より後にある
-
基本的に定気の一つ前から起算すれば、当時から求めた11月(閏10/閏11月)に二十四節気を割り当てられる
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/zakuro/version/senmyou/stella/solar/average.rb', line 83 def calc_first_solar_term_index(western_year:) # 天正閏余 lunar_age = Origin::LunarAge.get(western_year: western_year) solar_location = Solar::Location.new(lunar_age: lunar_age) solar_location.run solar_term_index = solar_location.index # 入定気の一つ後の二十四節気まで戻す(ただし11月経朔が二十四節気上にある場合は戻さない) solar_term_index += 1 unless solar_location.remainder.day.zero? solar_term_index end |
.first_solar_term(western_year:) ⇒ SolarTerm
計算開始する二十四節気を求める
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/zakuro/version/senmyou/stella/solar/average.rb', line 54 def first_solar_term(western_year:) # 天正冬至 winter_solstice = Origin::WinterSolstice.get(western_year: western_year) # 二十四節気(冬至) solar_term = Cycle::SolarTerm.new(index: 0, remainder: winter_solstice) first_solar_term_index = calc_first_solar_term_index(western_year: western_year) # 対象の二十四節気まで戻す solar_term.prev_by_index(first_solar_term_index) solar_term end |
Instance Method Details
#set(annual_range:) ⇒ Array<Month>
冬至から数えた1年データの月ごとに二十四節気を割り当てる
42 43 44 |
# File 'lib/zakuro/version/senmyou/stella/solar/average.rb', line 42 def set(annual_range:) super(annual_range: annual_range) end |