Module: Zakuro::Version::Daien::Origin::LunarAge

Defined in:
lib/zakuro/version/daien/stella/origin/lunar_age.rb

Overview

LunarAge 天正閏余

Constant Summary collapse

SYNODIC_MONTH =

Returns 朔望月.

Returns:

  • (Integer)

    朔望月

Const::Number::Cycle::SYNODIC_MONTH
YEAR =

Returns 一年.

Returns:

  • (Integer)

    一年

Const::Number::Cycle::YEAR
TOTAL_YEAR =

Returns 積年.

Returns:

  • (Integer)

    積年

Const::Number::Stack::TOTAL_YEAR
BEGIN_YEAR =

Returns 暦の開始年.

Returns:

  • (Integer)

    暦の開始年

Const::Number::Stack::BEGIN_YEAR
LOGGER =

Returns ロガー.

Returns:

Output::Logger.new(location: 'lunar_age')

Class Method Summary collapse

Class Method Details

.get(western_year:) ⇒ Remainder

対象年の天正閏余(冬至より前にある11月経朔との差 = 月齢)を算出する太陽と月の運動による補正値を算出し、その補正結果を返す

Parameters:

  • western_year (Integer)

    西暦年

Returns:

  • (Remainder)

    天正閏余



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/zakuro/version/daien/stella/origin/lunar_age.rb', line 42

def 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