Module: Zakuro::Version::Daien::Lunar::Adjustment
- Defined in:
- lib/zakuro/version/daien/stella/lunar/adjustment.rb
Overview
Adjustment 補正値情報
Defined Under Namespace
Constant Summary collapse
- DAY_LIMIT =
『歴代天文律暦等志彙編 七』中華書房 p.2230
遠/近の地点での中間
{ 7 => 2701, 14 => 2363, 21 => 2024, 28 => 1686 }.freeze
- LIST =
Note:
7日、14日、21日、28日の小余は DAY_LIMIT を参照のこと
『歴代天文律暦等志彙編 七』中華書房 p.2228-2230
[ Row.new(day: 1, range: Range.new, value: Value.new(per: +297, stack: 0)), Row.new(day: 2, range: Range.new, value: Value.new(per: +259, stack: +297)), Row.new(day: 3, range: Range.new, value: Value.new(per: +220, stack: +556)), Row.new(day: 4, range: Range.new, value: Value.new(per: +180, stack: +776)), Row.new(day: 5, range: Range.new, value: Value.new(per: +139, stack: +956)), Row.new(day: 6, range: Range.new, value: Value.new(per: +97, stack: +1095)), Row.new(day: 7, range: Range.new(max: DAY_LIMIT[7]), value: Value.new(per: +48, stack: +1192)), Row.new(day: 7, range: Range.new(min: DAY_LIMIT[7]), value: Value.new(per: -6, stack: +1240)), # stack: +1192 + 48 Row.new(day: 8, range: Range.new, value: Value.new(per: -64, stack: +1234)), Row.new(day: 9, range: Range.new, value: Value.new(per: -106, stack: +1170)), Row.new(day: 10, range: Range.new, value: Value.new(per: -148, stack: +1064)), Row.new(day: 11, range: Range.new, value: Value.new(per: -189, stack: +916)), Row.new(day: 12, range: Range.new, value: Value.new(per: -229, stack: +727)), Row.new(day: 13, range: Range.new, value: Value.new(per: -267, stack: +498)), Row.new(day: 14, range: Range.new(max: DAY_LIMIT[14]), value: Value.new(per: -231, stack: +231)), Row.new(day: 14, range: Range.new(min: DAY_LIMIT[14]), value: Value.new(per: -66, stack: 0)), # stack: +232 - 231 Row.new(day: 15, range: Range.new, value: Value.new(per: -289, stack: -66)), Row.new(day: 16, range: Range.new, value: Value.new(per: -250, stack: -355)), Row.new(day: 17, range: Range.new, value: Value.new(per: -211, stack: -605)), Row.new(day: 18, range: Range.new, value: Value.new(per: -171, stack: -816)), Row.new(day: 19, range: Range.new, value: Value.new(per: -130, stack: -987)), Row.new(day: 20, range: Range.new, value: Value.new(per: -87, stack: -1117)), Row.new(day: 21, range: Range.new(max: DAY_LIMIT[21]), value: Value.new(per: -36, stack: -1204)), Row.new(day: 21, range: Range.new(min: DAY_LIMIT[21]), value: Value.new(per: +18, stack: -1240)), # stack: -1204 - 36 Row.new(day: 22, range: Range.new, value: Value.new(per: +73, stack: -1222)), Row.new(day: 23, range: Range.new, value: Value.new(per: +116, stack: -1149)), Row.new(day: 24, range: Range.new, value: Value.new(per: +157, stack: -1033)), Row.new(day: 25, range: Range.new, value: Value.new(per: +198, stack: -876)), Row.new(day: 26, range: Range.new, value: Value.new(per: +237, stack: -678)), Row.new(day: 27, range: Range.new, value: Value.new(per: +276, stack: -441)), Row.new(day: 28, range: Range.new(max: DAY_LIMIT[28]), value: Value.new(per: +165, stack: -165)) ].freeze
Class Method Summary collapse
-
.minus_minute(day:, minute:) ⇒ Integer
小余の下げ幅を求める.
-
.specify(day:, minute:) ⇒ Row
月軌道の補正に必要な基本値を引き当てる.
Class Method Details
.minus_minute(day:, minute:) ⇒ Integer
小余の下げ幅を求める
234 235 236 237 238 239 240 241 242 |
# File 'lib/zakuro/version/daien/stella/lunar/adjustment.rb', line 234 def 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:) ⇒ Row
月軌道の補正に必要な基本値を引き当てる
215 216 217 218 219 220 221 222 |
# File 'lib/zakuro/version/daien/stella/lunar/adjustment.rb', line 215 def 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 |