class Zakuro::Daien::Monthly::LunarPhase

LunarPhase 月の位相

Constants

QUARTER

@return [Cycle::Remainder] 弦

Public Class Methods

new(western_year:) click to toggle source

初期化

@param [Integer] western_year 西暦年

# File lib/zakuro/version/daien/monthly/lunar_phase.rb, line 33
def initialize(western_year:)
  # 天正閏余
  lunar_age = Origin::LunarAge.get(western_year: western_year)

  super(
    quater: QUARTER,
    average_remainder: Origin::AverageNovember.get(western_year: western_year),
    solar_location: Solar::Location.new(lunar_age: lunar_age),
    lunar_location: Lunar::Location.new(
      western_year: western_year,
      lunar_age: Cycle::LunarRemainder.new(total: 0).add!(lunar_age)
    )
  )
end

Private Instance Methods

correction_moon_value() click to toggle source

月運動の補正値を得る

@return [Integer] 月運動の補正値

# File lib/zakuro/version/daien/monthly/lunar_phase.rb, line 92
def correction_moon_value
  @lunar_location.run

  remainder = @lunar_location.adjusted_remainder

  # debug("[lunar]remainder.format: #{remainder.format(form: '%d-%d-%.5f')}")
  # debug("[lunar]remainder.day: #{remainder.day}")
  # debug("[lunar]remainder.minute: #{remainder.minute}")

  Lunar::Value.get(remainder: remainder)
end
correction_solar_value() click to toggle source

太陽運動の補正値を得る

@return [Integer] 太陽運動の補正値

# File lib/zakuro/version/daien/monthly/lunar_phase.rb, line 77
def correction_solar_value
  @solar_location.run
  # debug("@solar_term.remainder: #{@solar_location.remainder.format(form: '%d-%d-%.5f')}")
  # debug("@solar_term.index: #{@solar_location.index}")

  Solar::Value.get(solar_location: @solar_location)
end
current_remainder() click to toggle source

現在の定朔を取得する

@return [Remainder] 定朔

# File lib/zakuro/version/daien/monthly/lunar_phase.rb, line 57
def current_remainder
  # debug("@average_remainder.format: #{@average_remainder.format(form: '%d-%d-%.5f')}")

  sum = correction_value
  adjusted = @average_remainder.add(
    Cycle::Remainder.new(day: 0, minute: sum, second: 0)
  )
  # TODO: 大衍暦では進朔するか
  # adjusted.up_on_new_moon!

  debug("result: #{adjusted.format}")

  adjusted
end