Skip to content
ikotomePublic

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

meiri(命理)

四柱推命の命式を計算するRubyライブラリです。生年月日時から四柱(年柱・月柱・日柱・時柱)を求め、通変星・十二運を導き出します。

特徴

  • 暦データ不要 — 月柱の境界となる節入り時刻を、太陽黄経の天文計算(VSOP87切り詰め級数 + ΔT補正 + 二分法探索)でその場で算出します。万年暦のデータファイルを同梱していません
  • 精度 — 2024年の12節すべてで国立天文台の暦要項と30秒以内で一致することをテストで確認しています
  • 2層構造 — 暦の計算(Meiri::Mannenreki)と四柱推命の解釈(Meiri::ShityuSuimei)を分離した設計です

インストール

Gemfileに追加:

gem 'meiri'

または直接インストール:

$ gem install meiri

使い方

require 'meiri'

# 1981年8月7日 22:00生まれ 男性
chart = Meiri::ShityuSuimei::Chart.new(year: 1981, month: 8, day: 7, hour: 22, min: 0, gender: :male)

# 四柱: [天干index, 地支index] のペア(甲=0〜癸=9、子=0〜亥=11)
chart.year_pillar   # => [7, 9]   辛酉
chart.month_pillar  # => [1, 7]   乙未
chart.day_pillar    # => [3, 5]   丁巳
chart.hour_pillar   # => [7, 11]  辛亥

# 通変星: 日干から見た各柱の天干との関係(10種)
chart.year_tsuhensei   # => :偏財
chart.month_tsuhensei  # => :偏印
chart.hour_tsuhensei   # => :偏財

# 十二運: 日干から見た各柱の地支の運勢ステージ(12種)
chart.year_juniun   # => :長生
chart.month_juniun  # => :冠帯
chart.day_juniun    # => :帝旺
chart.hour_juniun   # => :胎

indexから干支の名前に変換するには定数を使います:

stem, branch = chart.year_pillar
Meiri::Mannenreki::Constants::TENKAN[stem]   # => :辛
Meiri::Mannenreki::Constants::TISHI[branch]  # => :酉

時刻がわからない場合は hour / min を省略できます(正午として扱います)。

計算の仕組み

四柱推命では月の切り替わりが暦の月ではなく「節入り」(太陽黄経が15°刻みの特定の角度に達する瞬間)で決まります。meiriはこの節入り時刻を、

  1. Meeus『Astronomical Algorithms』のVSOP87切り詰め級数で太陽の視黄経を計算し
  2. ΔT(地球時と世界時の差)をNASAの多項式近似で補正し
  3. 目標の黄経に達する時刻を二分法で探索する

という手順でその場で求めています。対応範囲は1900〜2050年です。

  • 年柱: 立春を境界として (西暦 - 4) % 60
  • 月柱: 節入りで月支を決定し、五虎遁で月干を導出
  • 日柱: ユリウス日から (JD + 49) % 60
  • 時柱: 時支と五子遁による時干

今後の予定

  • 蔵干
  • 干合・支合・支冲
  • 大運・歳運
  • 流派差のアダプタ対応

開発

$ bundle install
$ bundle exec rspec    # テスト
$ bundle exec rubocop  # コードチェック

ライセンス

MIT License

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ikotome/meiri.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages