module Zakuro::Daien::Lunar::Adjustment

Adjustment 補正値情報

Constants

DAY_LIMIT

『歴代天文律暦等志彙編 七』中華書房 p.2230

遠/近の地点での中間

@return [Hash<Integer>] 遠/近の地点での中間

LIST

『歴代天文律暦等志彙編 七』中華書房 p.2228-2230

@note 7日、14日、21日、28日の小余は DAY_LIMIT を参照のこと

@return [Array<Row>] 月の補正値情報

Public Class Methods

minus_minute(day:, minute:) click to toggle source

小余の下げ幅を求める

@param [Integer] day 大余 @param [Integer] minute 小余

@return [Integer] 小余の下げ幅

# File lib/zakuro/version/daien/stella/lunar/adjustment.rb, line 228
def self.minus_minute(day:, minute:)
  limit = DAY_LIMIT.fetch(day, -1)
  # 該当なし
  return minute if limit == -1

  return minute unless minute > limit

  minute - limit
end
specify(day:, minute:) click to toggle source

月軌道の補正に必要な基本値を引き当てる

@param [True, False] forward 進(遠地点より数える)/退(近地点より数える) @param [Integer] day 大余 @param [Integer] minute 小余

@return [Row] 補正値

# File lib/zakuro/version/daien/stella/lunar/adjustment.rb, line 209
def self.specify(day:, minute:)
  LIST.each do |row|
    # NOTE: 範囲が重複している場合、最初に引き当てたほうを優先する
    return row if row.match?(day: day, minute: minute)
  end

  raise ArgumentError.new, "invalid parameter: #{day}/#{minute}"
end