lib/zakuro/version/senmyou/stella/solar/average.rb in zakuro-0.9.4 vs lib/zakuro/version/senmyou/stella/solar/average.rb in zakuro-1.0.0

- old
+ new

@@ -11,87 +11,90 @@ require_relative './location' # :nodoc: module Zakuro # :nodoc: - module Senmyou + module Version # :nodoc: - module Solar - # - # Average 平気(太陽軌道平均) - # - class Average < Calculation::Solar::AbstractAverage + module Senmyou + # :nodoc: + module Solar # - # 初期化 + # Average 平気(太陽軌道平均) # - # @param [Integer] western_year 西暦年 - # - def initialize(western_year:) - solar_term = self.class.first_solar_term(western_year: western_year) - super(solar_term: solar_term) - end - - # - # 冬至から数えた1年データの月ごとに二十四節気を割り当てる - # - # @param [Array<Month>] annual_range 1年データ - # - # @return [Array<Month>] 1年データ - # - def set(annual_range:) - super(annual_range: annual_range) - end - - class << self + class Average < Calculation::Solar::AbstractAverage # - # 計算開始する二十四節気を求める + # 初期化 # # @param [Integer] western_year 西暦年 # - # @return [SolarTerm] 二十四節気 + def initialize(western_year:) + solar_term = self.class.first_solar_term(western_year: western_year) + super(solar_term: solar_term) + end + # - def first_solar_term(western_year:) - # 天正冬至 - winter_solstice = Origin::WinterSolstice.get(western_year: western_year) + # 冬至から数えた1年データの月ごとに二十四節気を割り当てる + # + # @param [Array<Month>] annual_range 1年データ + # + # @return [Array<Month>] 1年データ + # + def set(annual_range:) + super(annual_range: annual_range) + end - # 二十四節気(冬至) - solar_term = Cycle::SolarTerm.new(index: 0, remainder: winter_solstice) + class << self + # + # 計算開始する二十四節気を求める + # + # @param [Integer] western_year 西暦年 + # + # @return [SolarTerm] 二十四節気 + # + def first_solar_term(western_year:) + # 天正冬至 + winter_solstice = Origin::WinterSolstice.get(western_year: western_year) - first_solar_term_index = calc_first_solar_term_index(western_year: western_year) + # 二十四節気(冬至) + solar_term = Cycle::SolarTerm.new(index: 0, remainder: winter_solstice) - # 対象の二十四節気まで戻す - solar_term.prev_by_index(first_solar_term_index) + first_solar_term_index = calc_first_solar_term_index(western_year: western_year) - solar_term - end + # 対象の二十四節気まで戻す + solar_term.prev_by_index(first_solar_term_index) - # :reek:TooManyStatements { max_statements: 6 } + solar_term + end - # - # 計算開始する二十四節気番号を求める - # - # * 前提として入定気は冬至の手前にある - # * 例えば、定気が大雪であれば入定気は大雪の範囲内にある - # * 入定気は、定気の開始位置に重複しない限り、常に定気より後にある - # * 基本的に定気の一つ前から起算すれば、当時から求めた11月(閏10/閏11月)に二十四節気を割り当てられる - # - # @param [Integer] western_year 西暦年 - # - # @return [Integer] 二十四節気番号 - # - def calc_first_solar_term_index(western_year:) - # 天正閏余 - lunar_age = Origin::LunarAge.get(western_year: western_year) + # :reek:TooManyStatements { max_statements: 6 } - solar_location = Solar::Location.new(lunar_age: lunar_age) - solar_location.run + # + # 計算開始する二十四節気番号を求める + # + # * 前提として入定気は冬至の手前にある + # * 例えば、定気が大雪であれば入定気は大雪の範囲内にある + # * 入定気は、定気の開始位置に重複しない限り、常に定気より後にある + # * 基本的に定気の一つ前から起算すれば、当時から求めた11月(閏10/閏11月)に二十四節気を割り当てられる + # + # @param [Integer] western_year 西暦年 + # + # @return [Integer] 二十四節気番号 + # + def calc_first_solar_term_index(western_year:) + # 天正閏余 + lunar_age = Origin::LunarAge.get(western_year: western_year) - solar_term_index = solar_location.index + solar_location = Solar::Location.new(lunar_age: lunar_age) + solar_location.run - # 入定気の一つ後の二十四節気まで戻す(ただし11月経朔が二十四節気上にある場合は戻さない) - solar_term_index += 1 unless solar_location.remainder.day.zero? + solar_term_index = solar_location.index - solar_term_index + # 入定気の一つ後の二十四節気まで戻す(ただし11月経朔が二十四節気上にある場合は戻さない) + solar_term_index += 1 unless solar_location.remainder.day.zero? + + solar_term_index + end end end end end end