Module: Zakuro::Version::Senmyou::Lunar::Adjustment

Defined in:
lib/zakuro/version/senmyou/stella/lunar/adjustment.rb

Overview

Adjustment 補正値情報

Defined Under Namespace

Classes: Range, Row, Value

Constant Summary collapse

HALF_DAYS =

Returns 遠/近の地点での中間.

Returns:

  • (Integer)

    遠/近の地点での中間

[7].freeze
LIST =

Returns 月の補正値情報.

Returns:

  • (Array<Row>)

    月の補正値情報

[
  Row.new(forward: true, day: 1, range: Range.new, value: Value.new(per: +830, stack: 0)),
  Row.new(forward: true, day: 2, range: Range.new, value: Value.new(per: +726, stack: +830)),
  Row.new(forward: true, day: 3, range: Range.new, value: Value.new(per: +606, stack: +1556)),
  Row.new(forward: true, day: 4, range: Range.new, value: Value.new(per: +471, stack: +2162)),
  Row.new(forward: true, day: 5, range: Range.new, value: Value.new(per: +337, stack: +2633)),
  Row.new(forward: true, day: 6, range: Range.new, value: Value.new(per: +202, stack: +2970)),
  Row.new(forward: true, day: 7, range: Range.new(max: Range::HALF), value: Value.new(per: +53, stack: +3172)),
  Row.new(forward: true, day: 7, range: Range.new(min: Range::HALF), value: Value.new(per: -7, stack: +3225)), # +3172 + 53(初益)
  Row.new(forward: true, day: 8, range: Range.new, value: Value.new(per: -82, stack: +3218)),
  Row.new(forward: true, day: 9, range: Range.new, value: Value.new(per: -224, stack: +3136)),
  Row.new(forward: true, day: 10, range: Range.new, value: Value.new(per: -366, stack: +2912)),
  Row.new(forward: true, day: 11, range: Range.new, value: Value.new(per: -509, stack: +2546)),
  Row.new(forward: true, day: 12, range: Range.new, value: Value.new(per: -643, stack: +2037)),
  Row.new(forward: true, day: 13, range: Range.new, value: Value.new(per: -748, stack: +1394)),
  Row.new(forward: true, day: 14, range: Range.new(max: Range::LAST), value: Value.new(per: -646, stack: +646)), # 14日の小余は常に6529以下
  Row.new(forward: false, day: 1, range: Range.new, value: Value.new(per: -830, stack: 0)),
  Row.new(forward: false, day: 2, range: Range.new, value: Value.new(per: -726, stack: -830)),
  Row.new(forward: false, day: 3, range: Range.new, value: Value.new(per: -598, stack: -1556)),
  Row.new(forward: false, day: 4, range: Range.new, value: Value.new(per: -464, stack: -2154)),
  Row.new(forward: false, day: 5, range: Range.new, value: Value.new(per: -329, stack: -2618)),
  Row.new(forward: false, day: 6, range: Range.new, value: Value.new(per: -195, stack: -2947)),
  Row.new(forward: false, day: 7, range: Range.new(max: Range::HALF), value: Value.new(per: -53, stack: -3142)),
  Row.new(forward: false, day: 7, range: Range.new(min: Range::HALF), value: Value.new(per: +7, stack: -3195)), # -3142 - 53(初益)
  Row.new(forward: false, day: 8, range: Range.new, value: Value.new(per: +82, stack: -3188)),
  Row.new(forward: false, day: 9, range: Range.new, value: Value.new(per: +225, stack: -3106)),
  Row.new(forward: false, day: 10, range: Range.new, value: Value.new(per: +366, stack: -2881)),
  Row.new(forward: false, day: 11, range: Range.new, value: Value.new(per: +501, stack: -2515)),
  Row.new(forward: false, day: 12, range: Range.new, value: Value.new(per: +628, stack: -2014)),
  Row.new(forward: false, day: 13, range: Range.new, value: Value.new(per: +740, stack: -1386)),
  Row.new(forward: false, day: 14, range: Range.new(max: Range::LAST), value: Value.new(per: +646, stack: -646)) # 14日の小余は常に6529以下
].freeze

Class Method Summary collapse

Class Method Details

.minus_minute(day:, minute:) ⇒ Integer

小余の下げ幅を求める

Parameters:

  • day (Integer)

    大余

  • minute (Integer)

    小余

Returns:

  • (Integer)

    小余の下げ幅



234
235
236
237
238
239
240
# File 'lib/zakuro/version/senmyou/stella/lunar/adjustment.rb', line 234

def minus_minute(day:, minute:)
  return minute unless HALF_DAYS.include?(day)

  return minute unless minute > Range::HALF

  minute - Range::HALF
end

.specify(forward:, day:, minute:) ⇒ Row

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

Parameters:

  • forward (True, False)

    進(遠地点より数える)/退(近地点より数える)

  • day (Integer)

    大余

  • minute (Integer)

    小余

Returns:

  • (Row)

    補正値

Raises:

  • (ArgumentError)

    引数エラー



215
216
217
218
219
220
221
222
# File 'lib/zakuro/version/senmyou/stella/lunar/adjustment.rb', line 215

def specify(forward:, day:, minute:)
  LIST.each do |row|
    # NOTE: 範囲が重複している場合、最初に引き当てたほうを優先する
    return row if row.match?(forward: forward, day: day, minute: minute)
  end

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