
简介传统数术排盘涉及复杂的历法推算与规则联动奇门遁甲需处理阴阳遁、三元局数及四层盘转动大六壬则依赖月将加时、四课三传与九宗门取用。理解这些算法原理不仅能让排盘过程透明可验也能为构建自动化排盘工具提供工程化思路。通过干支历法、节气切换等基础模型将抽象的口诀转化为结构化数据结构实现从时间输入到盘面输出的完整链路。无论是用于古籍研究、教学演示还是开发跨平台排盘工具掌握核心算法拆解都能显著提升准确性与可维护性。本文以 qimen_star-master 为例剖析奇门遁甲与大六壬排盘的核心算法设计与实践中的易错细节。 排盘这种事儿看起来是把日期时间塞进公式里就能出结果实际上里面全是坑。奇门遁甲要处理阴阳遁、二十四节气、三元符头、天盘地盘神盘人盘四层联动大六壬又要面对月将过宫、十二天将、九宗门取传。几十个规则缠在一起手工推算慢不说错一个环节整张盘就废了。qimen_star-master 这个项目就是把奇门遁甲和大六壬的排盘逻辑完整落成代码。它解决的不只是“快速出盘”的问题——更重要的是把推算过程拆开每一步都能对照古籍验证让学的人知道盘式是怎么来的让用的人不用再抱着万年历和排盘表来回翻。这篇文章想聊聊我在做这个工具时对两个排盘体系核心算法的拆解思路以及那些纸面上看不见的坑。1. 整体设计思路为什么要把两个排盘系统放进同一套框架要做这个项目最初的想法很朴素。我在学奇门遁甲的时候几乎每次排盘都要翻半天资料——先查万年历确定四柱再找节气定局数然后背值符值使的转入规则中间稍不留神就会把阳遁的顺布和阴遁的逆布搞混。后来开始接触大六壬发现又是另一套逻辑月将要按节气过宫天地盘要月将加时四课三传更是像解谜题一样层层递进。市面上能找到的排盘工具不少但很多都是“黑盒”只给结果不给过程。这对初学者来说很痛苦——你看到一个盘不知道为什么是这个局不知道值符为什么落在这个宫位也没法去核验。所以这个项目定位很明确做一个把排盘过程“透明化”的工具。奇门遁甲和大六壬虽然在规则上千差万别但它们有一个共同点——都是基于时间、干支、九宫或十二宫的天文历法模型。把这两套体系放进同一个框架里一方面可以复用干支、节气、时辰这些底层能力另一方面也能在实现过程中互相校验。比如奇门要精确判定节气时点大六壬的月将过宫同样也要用节气——这两种历法数据被两个系统共享处理一次就能同时受益。1.1 排盘工具的定位“能出盘”和“能看懂盘”是两码事拿到一张排盘结果很多人第一反应是“准不准”。但作为开发者我更关心的是“对不对”——这个盘的四柱是否精确到时辰局数是否按节气正确切换九星八门的转动有没有遵循阳顺阴逆的规则。市面上的工具大多只输出最终盘面缺少中间推导过程。而在 qimen_star-master 里我坚持把每一步中间结果都暴露出来地盘三奇六仪布阵可以单独查看四课三传的取用可以追溯到是贼克还是比用这样无论是自学还是研究都能看出完整逻辑链。从代码结构上说这意味着排盘引擎不能只返回一个渲染好的盘面而要返回一个带中间状态的“数据对象”。每个环节都有对应的字段记录比如奇门的地盘、天盘、八门、八神是四层独立数组大六壬的天地盘、四课、三传也是逐项生成。这样设计的最大好处是每一步都可以单独写单元测试哪个环节算错了打开调试信息一眼就能定位。另外这个项目要兼顾两类用户。一类是初学者希望通过工具反推排盘规则因为过程清晰比死记硬背口诀效率高得多另一类是研究古籍的爱好者需要结合具体案例反复推演。所以项目除了给出最终盘面还提供了一个“过程模式”像逐步演示一样展示天盘怎么转、门怎么飞这对理解规则很有帮助。1.2 技术架构算法与界面分离先做引擎再做展示排盘引擎的本质是一个“输入时间输出结构化盘面”的纯计算模块。所以我在架构上没打算把界面和算法耦合在一起。核心引擎用纯函数实现不依赖业务状态输入一个时间对象输出一个完整的盘面数据结构。展示层单独做这样命令行、网页端、小程序都可以复用同一套引擎。底层时间处理是所有排盘算法的地基。干支纪年以立春为界月柱以十二节为界日柱和时柱又涉及到子时的换日问题——这些边界规则如果不统一会在不同排盘系统里引发连锁错误。所以我在项目里单独封装了一个时间历法模块统一处理公历、农历、干支、节气、时辰五套时间体系的换算。这个模块只做一件事接收一个标准时间戳输出五套体系的完整映射。后续奇门和大六壬的算法都调用它不再各自处理时间逻辑。数据层的设计也花了不少心思。节气数据既可以内置静态表也可以通过天文算法实时计算。静态表速度快但受限于年份范围天文算法灵活但依赖复杂。我的做法是默认内置了一份覆盖1900年到2100年的节气表同时预留了天文算法接口。实际使用时如果排盘日期超出内置范围引擎会自动切换成天文计算保证任意时间都能排盘。这个“静态表兜底算法扩展”的双轨设计在实测中非常稳定也避开了纯算法在精度边界上的隐患。2. 奇门遁甲排盘算法拆解从四柱到四层盘奇门遁甲的排盘过程概括起来就是先算出时间四柱再根据节气和日干支定出阴阳遁和局数然后在九宫格内依次布地盘、天盘、人盘、神盘。整个流程环环相扣任何一个环节出错后面全盘皆输。2.1 三奇六仪、九宫八卦与阴阳遁的对应关系在实现之前必须先把底层模型弄清楚。奇门遁甲用的核心坐标系是九宫格它与洛书数字、后天八卦方位一一对应坎一宫在北、坤二宫在西南、震三宫在东、巽四宫在东南、中五宫居中、乾六宫在西北、兑七宫在西、艮八宫在东北、离九宫在南。这个宫位顺序决定了地盘三奇六仪布阵时的移动方向。三奇六仪是十个天干在盘面上的排布方式三奇是乙、丙、丁六仪是戊、己、庚、辛、壬、癸。布阵的时候阳遁顺布、阴遁逆布本质上是把这十个天干按九宫顺序依次放入宫位。这里有个容易混淆的点布地盘是从“戊”开始不是从“甲”开始。原因是甲作为元帅隐遁在六仪之下所以实际参与排布的只有九个干戊到癸加乙丙丁正好对应九个宫位。关于阴阳遁的确认我提供一个我实际用的判断逻辑以冬至和夏至为分界。冬至之后到夏至之前用阳遁夏至之后到冬至之前用阴遁。具体局数则取决于当日干支与节气的三元对应关系。每个节气分上元、中元、下元各管五天分别对应不同的局数以下是部分节气对应的三元局数示例。节气上元中元下元冬至阳一局阳七局阳四局惊蛰阳一局阳七局阳四局清明阳四局阳一局阳七局夏至阴九局阴三局阴六局白露阴九局阴三局阴六局立秋阴二局阴五局阴八局这些对应关系是一张固定表项目里直接建成配置数据。但理解了原理才知道这张表是怎么来的每个节气的地气升降方向不同阴阳遁随之变化而三元局数则按六十甲子的三元符头循环推演。2.2 时家奇门排盘流程定局、布仪、找值符值使具体排盘时我按以下顺序推进。第一步排出四柱。年柱以立春为界月柱以节气为界日柱通过基准日推算时柱按五鼠遁口诀起时干。四柱确定后从日柱干支判断符头结合节气三元表定出当前时辰的局数。第二步布地盘三奇六仪。假如是阳遁一局就从坎一宫开始布戊然后按九宫顺序顺布己入坤二宫、庚入震三宫、辛入巽四宫、壬入中五宫、癸入乾六宫、丁入兑七宫、丙入艮八宫、乙入离九宫。如果是阴遁九局则从离九宫开始布戊逆布己入艮八宫、庚入兑七宫、辛入乾六宫、壬入中五宫、癸入巽四宫、丁入震三宫、丙入坤二宫、乙入坎一宫。第三步找值符和值使。这一步的关键是确定当前时辰的旬首。比如甲子旬的旬首是戊甲戌旬的旬首是己甲申旬的旬首是庚依此类推。旬首对应的六仪落在哪个宫位这个宫位对应的九星就是值符对应的八门就是值使。例如旬首是甲申庚庚落震三宫震宫的天冲星就是值符伤门就是值使。第四步转天盘、人盘、神盘。天盘转动规则是“值符随时干”把值符星转到时干所落的宫位其余八星按九宫顺序跟随转动阳遁顺转阴遁逆转。人盘八门则是“值使随时宫”从值使门原在的宫位起按阳顺阴逆数到当前时辰对应的宫位确定值使门的位置其余七门依次排列。神盘八神从值符开始按值符、腾蛇、太阴、六合、白虎、玄武、九地、九天的顺序阳遁顺排、阴遁逆排值符神永远跟值符星。整个流程看起来不复杂但每一步都暗藏陷阱。值符随时干中的“时干”指的是时干在地盘上的位置不是天盘位置这个细节我在调试时反复确认过。八神不分阴阳遁但有些流派会把勾陈和玄武、白虎和朱雀的称呼互换这又是一个坑。2.3 排盘环节中最容易出错的三个细节第一个细节是子时的换日规则。传统上子时分为早子时23:00-24:00和晚子时00:00-01:00但排盘时多数流派把23点以后归入次日。这个切分直接影响日柱和时柱的组合进而影响到局数和值符值使的确定。项目里我默认采用“23点换日”的规则并做了配置项方便用户根据自己学习的流派切换。这个问题没有绝对的对错但工具必须在内部保持一致否则同样的时间两次排盘结果不同用户就会失去信任。第二个细节是置闰与拆补。奇门遁甲在季节交接时会出现节气和符头不同步的情况由此产生置闰法和拆补法两种处理方式。置闰法在特定条件下要补一个“超神”的局拆补法则是把节气三元按实际天数切碎补齐。不同流派用的方法不同同一个时间点用置闰法和拆补法排出来的盘是有差异的。这个项目把两种规则都实现了因为我在实际学习时发现很多案例对照不下来根本原因就是规则选择不一致。第三个细节是中五宫的寄宫问题。中五宫没有对应八卦方位天禽星和死门在中五宫时需要寄到其他宫位。常见做法是阳遁寄艮八宫阴遁寄坤二宫也有流派直接寄坤二宫。虽然只是一个小宫位的处理但在八门和九星的转动中会产生连锁影响。项目里我按流派做了可配置处理这也是排盘工具必须考虑到的兼容性问题。3. 大六壬排盘算法拆解从月将加时到三传九宗门大六壬和奇门遁甲不一样它的底层不是九宫而是十二地支的环状模型。整个排盘围绕“月将加时”展开先构建天地盘再推出四课最后根据九宗门规则取三传。3.1 月将过宫与天地盘的构建要理解大六壬首先要理解月将。月将本质上代表太阳在一年中所处的星次位置传统上按中气过宫划分。从冬至到大寒用子将神后大寒到雨水用丑将大吉雨水到春分用亥将登明春分到谷雨用戌将河魁……以此类推。这里要注意月将并不是农历月份而是以节气中气为分界的十二星次。实现的时候我直接把节气表和中气过宫映射关系做成数据表避免手工记忆出错。天盘的构建规则是“月将加时”。地盘是一个固定的十二地支环从子到亥顺时针排列。所谓加时就是把当前时辰对应的地支作为天盘起点将当月的月将放到这个起点上然后其余十一个天盘地支按顺时针顺序依次排列。例如雨水后用亥将登明若占时是午时就把亥加到午的位置接下来戌加未、酉加申……这样天盘的十二地支就确定下来了。天地盘构建完成后整个盘面的信息核心就是“上神”——即每个地盘地支之上对应的天盘地支。比如地盘寅上面的天盘是戌那么寅的上神就是戌。四课的推演就是从这个上下对应关系中提取出来的。这里有个实现小技巧地盘顺序、月将顺序、时辰顺序都是固定的环状数组加时操作本质上是数组的循环移位用模运算就可以高效完成不用写一堆判断。3.2 四课推导与三传取用的优先级四课是大六壬断事的基础框架。第一课是日干的上神第二课是日干上神的上神第三课是日支的上神第四课是日支上神的上神。听起来绕实际推算却很机械先根据日干确定寄宫甲寄寅、乙寄辰、丙戊寄巳、丁己寄未、庚寄申、辛寄戌、壬寄亥、癸寄丑看这个寄宫对应的天盘地支是什么这就是第一课再找这个天盘地支的上神就是第二课。日支同理求出第三课、第四课。求完四课就要取三传了。这里的核心是九宗门它本质上是一套优先级判定机制。按照顺序先看四课中是否有下贼上或上克下有则取贼克多选时用比用如果没有再看涉害深浅再没有看遥克关系再往下依次是昴星、别责、八专、返吟、伏吟。每一层都有严格的触发条件。比如返吟课适用于天地盘完全对冲的情况伏吟则是天地盘地支完全相同。实现时我把它做成了一个链式判断函数集合每种课体一个函数按顺序依次调用命中即返回。在这个环节涉害课的“深浅”判断最麻烦。简单说涉害课要比较四课中受克的天盘上神哪一个受克的程度更深。这个深度不是看一眼就能确定的需要从天盘上神在地盘的起始位置开始逆推其被克顺序的步数。代码里我用了一个循环模拟“逐步逆推”的过程每一步都要判断是否受克最后统计被克次数和路径长度。这一步是整个大六壬排盘中计算量最大、也最容易出 bug 的地方。3.3 十二天将与贵人的昼夜之分三传确定后还要把十二天将加临到三传和四课对应的位置上。十二天将的顺序是贵人、本文还有配套的精品资源点击获取