陈胤辰中原商设
首页
简介
讲师介绍开课资讯
课程
运算思维与程序设计自然科学与人工智能程序语言导论
互动
变量交换三门问题下注模拟器数字推盘汉诺塔
编程
JS 基础教学JavaSciptP5.js (上课用)
应用
人体系统玄学系统建筑系统

语言

繁体中文简体中文English

陈胤辰

中原大学商业设计系
资宸科技

快速链接

  • 讲师介绍
  • 开课资讯
  • 互动游戏
  • JavaScipt

联系 & 社群

© 2026 陈胤辰。版权所有。

Built with Next.js & Tailwind CSS

🌌 系統概論🔮 排盤引擎📊 資料結構⚡ 四化狀態機🤖 規則引擎

玄學系統 · 資料結構

十二宮位 — 環狀陣列與模數運算

「安命宮」的邏輯就是 % 12。調整生月與時辰,看命宮如何在陣列中跳動。

6 月
未時 (idx=7)
子(0)午(6)亥(11)
步驟演示 0/5

命宮演算法

命宮 index=(12+ 生月(6)+ 2− 時辰(7)+ 1)%12= 2

1D 環狀陣列 [0…11] — 地支索引

idx=0子
idx=1丑
idx=2寅命宮
idx=3卯
idx=4辰
idx=5巳
idx=6午
idx=7未
idx=8申
idx=9酉
idx=10戌
idx=11亥

2D 命盤網格(同一資料,不同視圖)

子福德
丑父母
寅命宮★
卯兄弟
辰夫妻
巳子女
午財帛
未疾厄
申遷移
酉交友
戌官祿
亥田宅
本命
資訊

資料結構對應

12 地支 = size-12 的環狀陣列 (Circular Array)

安命宮 ≡ 模數定址

const branches = [
  "子","丑","寅","卯","辰","巳",
  "午","未","申","酉","戌","亥"
];

// 2. 命宮演算法 (農曆月、農曆時)
// 寅月是起點(index=2),逆數時辰
function getMainPalace(
  lunarMonth: number,
  hourIndex: number
): number {
  return (12 + lunarMonth + 2
            - hourIndex + 1) % 12;
}

// 3. 這就是 Modulo 定址!
// 無論生月/時怎麼加減,
// % 12 確保結果永遠落在 [0,11]

陣列索引 vs 宮位名稱

宮名由命宮位置决定,偏移量查表即可:

const PALACES = [
  "命宮","兄弟","夫妻",
  "子女","財帛","疾厄",
  "遷移","交友","官祿",
  "田宅","福德","父母"
];

function getPalaceName(
  branchIdx: number,
  mainIdx: number
): string {
  return PALACES[
    (12 - mainIdx + branchIdx) % 12
  ];
}

關鍵洞察

→

命盤本質是一個 size=12 的環狀陣列,每個元素(宮位)存放一組星曜(物件)

→

安星訣 = Modulo Arithmetic(同餘運算),確保索引不溢出

→

2D 網格只是 1D 環狀陣列的 視圖(View),底層資料一致

→

天干地支 60 甲子 = 10 × 12 的最小公倍數哈希空間