Sha256: fbfc4db4b55333053121e34b759a8c4ba2ebd0b612195e160f55beb15512ac9c

Contents?: true

Size: 1.8 KB

Versions: 7

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

require_relative '../../../../output/logger'

require_relative '../../const/number'

# :nodoc:
module Zakuro
  # :nodoc:
  module Daien
    # :nodoc:
    module Origin
      #
      # LunarAge 天正閏余
      #
      module LunarAge
        # @return [Integer] 朔望月
        SYNODIC_MONTH = Const::Number::Cycle::SYNODIC_MONTH
        # @return [Integer] 一年
        YEAR = Const::Number::Cycle::YEAR
        # @return [Integer] 積年
        TOTAL_YEAR = Const::Number::Stack::TOTAL_YEAR
        # @return [Integer] 暦の開始年
        BEGIN_YEAR = Const::Number::Stack::BEGIN_YEAR

        # @return [Output::Logger] ロガー
        LOGGER = Output::Logger.new(location: 'lunar_age')

        # :reek:TooManyStatements { max_statements: 7 }

        #
        # 対象年の天正閏余(冬至より前にある11月経朔との差 = 月齢)を算出する
        # 太陽と月の運動による補正値を算出し、その補正結果を返す
        #
        # @param [Integer] western_year 西暦年
        #
        # @return [Remainder] 天正閏余
        #
        def self.get(western_year:)
          # 積年の開始から対象年までの年数
          total = TOTAL_YEAR + western_year - BEGIN_YEAR

          # 12朔望月に対する1年の余り(単位:分)
          remainder_minute = YEAR - (SYNODIC_MONTH * 12)

          # 朔望月に含まれなかった余り(単位:年)
          remainder_year = total % SYNODIC_MONTH

          LOGGER.debug("[01]: #{remainder_year}")

          # 天正閏余
          lunar_age = remainder_minute * remainder_year % SYNODIC_MONTH

          LOGGER.debug("[02]: #{lunar_age}")

          # 大余・小余に変換する
          Cycle::Remainder.new(total: lunar_age)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
zakuro-0.7.2 lib/zakuro/version/daien/stella/origin/lunar_age.rb
zakuro-0.7.0 lib/zakuro/version/daien/stella/origin/lunar_age.rb
zakuro-0.6.1 lib/zakuro/version/daien/stella/origin/lunar_age.rb
zakuro-0.6.0 lib/zakuro/version/daien/stella/origin/lunar_age.rb
zakuro-0.5.0 lib/zakuro/version/daien/stella/origin/lunar_age.rb
zakuro-0.4.0 lib/zakuro/version/daien/stella/origin/lunar_age.rb
zakuro-0.3.0 lib/zakuro/version/daien/stella/origin/lunar_age.rb