mingpan 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -7
- package/dist/core/bazi/types.d.ts +0 -1
- package/dist/core/bazi/types.d.ts.map +1 -1
- package/dist/index.js +398 -164
- package/dist/index.js.map +1 -1
- package/dist/output/daliurenTextRenderer.d.ts +23 -0
- package/dist/output/daliurenTextRenderer.d.ts.map +1 -0
- package/dist/output/daliurenTextRenderer.js +109 -0
- package/dist/output/daliurenTextRenderer.js.map +1 -0
- package/dist/output/liuyaoTextRenderer.d.ts +12 -0
- package/dist/output/liuyaoTextRenderer.d.ts.map +1 -0
- package/dist/output/liuyaoTextRenderer.js +148 -0
- package/dist/output/liuyaoTextRenderer.js.map +1 -0
- package/dist/output/meihuaTextRenderer.d.ts +12 -0
- package/dist/output/meihuaTextRenderer.d.ts.map +1 -0
- package/dist/output/meihuaTextRenderer.js +53 -0
- package/dist/output/meihuaTextRenderer.js.map +1 -0
- package/dist/services/bazi/types.d.ts +0 -2
- package/dist/services/bazi/types.d.ts.map +1 -1
- package/dist/services/bazi/types.js.map +1 -1
- package/dist/services/daliuren/DaliurenService.d.ts +24 -0
- package/dist/services/daliuren/DaliurenService.d.ts.map +1 -0
- package/dist/services/daliuren/DaliurenService.js +67 -0
- package/dist/services/daliuren/DaliurenService.js.map +1 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.d.ts +87 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.js +443 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.js.map +1 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.d.ts +33 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.js +92 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.js.map +1 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.d.ts +35 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.js +121 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.js.map +1 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts +41 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.js +138 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -0
- package/dist/services/daliuren/data/constants.d.ts +62 -0
- package/dist/services/daliuren/data/constants.d.ts.map +1 -0
- package/dist/services/daliuren/data/constants.js +240 -0
- package/dist/services/daliuren/data/constants.js.map +1 -0
- package/dist/services/daliuren/index.d.ts +11 -0
- package/dist/services/daliuren/index.d.ts.map +1 -0
- package/dist/services/daliuren/index.js +33 -0
- package/dist/services/daliuren/index.js.map +1 -0
- package/dist/services/daliuren/types.d.ts +152 -0
- package/dist/services/daliuren/types.d.ts.map +1 -0
- package/dist/services/daliuren/types.js +17 -0
- package/dist/services/daliuren/types.js.map +1 -0
- package/dist/services/liuyao/LiuyaoService.d.ts +37 -0
- package/dist/services/liuyao/LiuyaoService.d.ts.map +1 -0
- package/dist/services/liuyao/LiuyaoService.js +214 -0
- package/dist/services/liuyao/LiuyaoService.js.map +1 -0
- package/dist/services/liuyao/calculators/FushenCalculator.d.ts +40 -0
- package/dist/services/liuyao/calculators/FushenCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/FushenCalculator.js +124 -0
- package/dist/services/liuyao/calculators/FushenCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.d.ts +37 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.js +86 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.d.ts +24 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.js +75 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.d.ts +29 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.js +58 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.d.ts +55 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.js +87 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.d.ts +43 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.js +100 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.d.ts +30 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.js +58 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.js.map +1 -0
- package/dist/services/liuyao/data/guagong.d.ts +94 -0
- package/dist/services/liuyao/data/guagong.d.ts.map +1 -0
- package/dist/services/liuyao/data/guagong.js +317 -0
- package/dist/services/liuyao/data/guagong.js.map +1 -0
- package/dist/services/liuyao/index.d.ts +13 -0
- package/dist/services/liuyao/index.d.ts.map +1 -0
- package/dist/services/liuyao/index.js +29 -0
- package/dist/services/liuyao/index.js.map +1 -0
- package/dist/services/liuyao/types.d.ts +154 -0
- package/dist/services/liuyao/types.d.ts.map +1 -0
- package/dist/services/liuyao/types.js +11 -0
- package/dist/services/liuyao/types.js.map +1 -0
- package/dist/services/meihua/MeihuaService.d.ts +32 -0
- package/dist/services/meihua/MeihuaService.d.ts.map +1 -0
- package/dist/services/meihua/MeihuaService.js +176 -0
- package/dist/services/meihua/MeihuaService.js.map +1 -0
- package/dist/services/meihua/calculators/BianguaCalculator.d.ts +21 -0
- package/dist/services/meihua/calculators/BianguaCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/BianguaCalculator.js +46 -0
- package/dist/services/meihua/calculators/BianguaCalculator.js.map +1 -0
- package/dist/services/meihua/calculators/HuguaCalculator.d.ts +22 -0
- package/dist/services/meihua/calculators/HuguaCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/HuguaCalculator.js +46 -0
- package/dist/services/meihua/calculators/HuguaCalculator.js.map +1 -0
- package/dist/services/meihua/calculators/QiguaCalculator.d.ts +40 -0
- package/dist/services/meihua/calculators/QiguaCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/QiguaCalculator.js +105 -0
- package/dist/services/meihua/calculators/QiguaCalculator.js.map +1 -0
- package/dist/services/meihua/calculators/TiyongCalculator.d.ts +34 -0
- package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/TiyongCalculator.js +105 -0
- package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -0
- package/dist/services/meihua/data/bagua.d.ts +19 -0
- package/dist/services/meihua/data/bagua.d.ts.map +1 -0
- package/dist/services/meihua/data/bagua.js +81 -0
- package/dist/services/meihua/data/bagua.js.map +1 -0
- package/dist/services/meihua/index.d.ts +11 -0
- package/dist/services/meihua/index.d.ts.map +1 -0
- package/dist/services/meihua/index.js +27 -0
- package/dist/services/meihua/index.js.map +1 -0
- package/dist/services/meihua/types.d.ts +95 -0
- package/dist/services/meihua/types.d.ts.map +1 -0
- package/dist/services/meihua/types.js +6 -0
- package/dist/services/meihua/types.js.map +1 -0
- package/dist/shared/types.d.ts +0 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/utils/timeNormalization.d.ts +48 -0
- package/dist/utils/timeNormalization.d.ts.map +1 -0
- package/dist/utils/timeNormalization.js +69 -0
- package/dist/utils/timeNormalization.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 三傳計算器
|
|
4
|
+
*
|
|
5
|
+
* 三傳是大六壬的核心,由四課通過九宗門推演:
|
|
6
|
+
*
|
|
7
|
+
* 九宗門(取初傳的方法):
|
|
8
|
+
* 1. 賊尅:有一個下賊上或上尅下,取之為初傳
|
|
9
|
+
* 2. 比用:有多個賊尅,取與日干陰陽相同者
|
|
10
|
+
* 3. 涉害:比用不能決,看涉害深淺
|
|
11
|
+
* 4. 遙尅:四課無賊尅,看遙尅
|
|
12
|
+
* 5. 昴星:無賊尅無遙尅,陽日取酉上神,陰日取從魁(酉)
|
|
13
|
+
* 6. 別責:昴星不能用,陽日取日干合神,陰日取日支三合
|
|
14
|
+
* 7. 八專:日干支同位,特殊處理
|
|
15
|
+
* 8. 伏吟:月將與時辰相同
|
|
16
|
+
* 9. 返吟:天地盤對沖
|
|
17
|
+
*
|
|
18
|
+
* 中傳、末傳:初傳的天盤地支為中傳,中傳的天盤地支為末傳
|
|
19
|
+
*
|
|
20
|
+
* 特殊情況:
|
|
21
|
+
* - 返吟八專(絕嗣):日干支同位 + 四課全是下賊上
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.SanChuanCalculator = void 0;
|
|
25
|
+
const SiKeCalculator_1 = require("./SiKeCalculator");
|
|
26
|
+
const constants_1 = require("../data/constants");
|
|
27
|
+
class SanChuanCalculator {
|
|
28
|
+
/**
|
|
29
|
+
* 計算三傳
|
|
30
|
+
*/
|
|
31
|
+
static calculate(siKe, tianDiPan, dayGanZhi, hourZhi) {
|
|
32
|
+
const { diToTian, diToJiang, yueJiang } = tianDiPan;
|
|
33
|
+
const dayGan = dayGanZhi[0];
|
|
34
|
+
const dayZhi = dayGanZhi[1];
|
|
35
|
+
// 分析四課關係
|
|
36
|
+
const stats = SiKeCalculator_1.SiKeCalculator.analyzeRelations(siKe);
|
|
37
|
+
// 判斷特殊情況
|
|
38
|
+
const isFuYin = yueJiang === hourZhi; // 伏吟
|
|
39
|
+
const isFanYin = this.checkFanYin(tianDiPan); // 返吟
|
|
40
|
+
const isBaZhuan = constants_1.BA_ZHUAN_DAYS.includes(dayGanZhi); // 八專
|
|
41
|
+
const isGanZhiSamePos = constants_1.GAN_ZHI_SAME_POSITION.includes(dayGanZhi);
|
|
42
|
+
// 確定初傳和格局
|
|
43
|
+
let chuChuanZhi;
|
|
44
|
+
let geJu;
|
|
45
|
+
let geJuDetail;
|
|
46
|
+
// 特殊情況:返吟八專(絕嗣)
|
|
47
|
+
// 日干支同位 + 四課全是下賊上 -> 返吟·絕嗣
|
|
48
|
+
const isFanYinBaZhuan = isGanZhiSamePos && stats.xiaZeiShang === 4;
|
|
49
|
+
// 九宗門判斷
|
|
50
|
+
if (isFanYin || isFanYinBaZhuan) {
|
|
51
|
+
// 返吟課(包括返吟八專)
|
|
52
|
+
const result = this.handleFanYin(siKe, tianDiPan, dayGan, dayZhi, stats, isFanYinBaZhuan);
|
|
53
|
+
chuChuanZhi = result.chuChuan;
|
|
54
|
+
geJu = '返吟';
|
|
55
|
+
geJuDetail = result.detail;
|
|
56
|
+
}
|
|
57
|
+
else if (isFuYin) {
|
|
58
|
+
// 伏吟課
|
|
59
|
+
const result = this.handleFuYin(siKe, tianDiPan, dayGan, dayZhi, stats);
|
|
60
|
+
chuChuanZhi = result.chuChuan;
|
|
61
|
+
geJu = '伏吟';
|
|
62
|
+
geJuDetail = result.detail;
|
|
63
|
+
}
|
|
64
|
+
else if (isBaZhuan && stats.shangKeXia === 0 && stats.xiaZeiShang === 0) {
|
|
65
|
+
// 八專課
|
|
66
|
+
const result = this.handleBaZhuan(siKe, tianDiPan, dayGan, dayZhi);
|
|
67
|
+
chuChuanZhi = result.chuChuan;
|
|
68
|
+
geJu = '八專';
|
|
69
|
+
geJuDetail = result.detail;
|
|
70
|
+
}
|
|
71
|
+
else if (stats.xiaZeiShang === 1 && stats.shangKeXia === 0) {
|
|
72
|
+
// 賊尅(重審):只有一個下賊上
|
|
73
|
+
const ke = siKe.list.find(k => k.relation === '下賊上');
|
|
74
|
+
chuChuanZhi = ke.shangShen;
|
|
75
|
+
geJu = '賊尅';
|
|
76
|
+
geJuDetail = '重審';
|
|
77
|
+
}
|
|
78
|
+
else if (stats.shangKeXia === 1 && stats.xiaZeiShang === 0) {
|
|
79
|
+
// 賊尅(元首):只有一個上尅下
|
|
80
|
+
const ke = siKe.list.find(k => k.relation === '上尅下');
|
|
81
|
+
chuChuanZhi = ke.shangShen;
|
|
82
|
+
geJu = '賊尅';
|
|
83
|
+
geJuDetail = '元首';
|
|
84
|
+
}
|
|
85
|
+
else if (stats.xiaZeiShang >= 1) {
|
|
86
|
+
// 有下賊上,優先取下賊上
|
|
87
|
+
const result = this.handleMultipleZeiKe(siKe, tianDiPan, dayGan, dayZhi, '下賊上');
|
|
88
|
+
chuChuanZhi = result.chuChuan;
|
|
89
|
+
geJu = result.geJu;
|
|
90
|
+
geJuDetail = result.detail;
|
|
91
|
+
}
|
|
92
|
+
else if (stats.shangKeXia >= 2) {
|
|
93
|
+
// 多個上尅下
|
|
94
|
+
const result = this.handleMultipleZeiKe(siKe, tianDiPan, dayGan, dayZhi, '上尅下');
|
|
95
|
+
chuChuanZhi = result.chuChuan;
|
|
96
|
+
geJu = result.geJu;
|
|
97
|
+
geJuDetail = result.detail;
|
|
98
|
+
}
|
|
99
|
+
else if (stats.shangKeXia === 0 && stats.xiaZeiShang === 0) {
|
|
100
|
+
// 無賊尅,嘗試遙尅、昴星、別責
|
|
101
|
+
const result = this.handleNoZeiKe(siKe, tianDiPan, dayGan, dayZhi);
|
|
102
|
+
chuChuanZhi = result.chuChuan;
|
|
103
|
+
geJu = result.geJu;
|
|
104
|
+
geJuDetail = result.detail;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// 默認取第一課上神
|
|
108
|
+
chuChuanZhi = siKe.list[0].shangShen;
|
|
109
|
+
geJu = '賊尅';
|
|
110
|
+
geJuDetail = '元首';
|
|
111
|
+
}
|
|
112
|
+
// 計算中傳、末傳
|
|
113
|
+
let zhongChuanZhi;
|
|
114
|
+
let moChuanZhi;
|
|
115
|
+
if (isFanYin) {
|
|
116
|
+
// 返吟課:中傳以初沖,末傳用中沖
|
|
117
|
+
zhongChuanZhi = constants_1.ZHI_CHONG[chuChuanZhi];
|
|
118
|
+
moChuanZhi = constants_1.ZHI_CHONG[zhongChuanZhi];
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// 普通課:用天盤推演
|
|
122
|
+
zhongChuanZhi = diToTian[chuChuanZhi];
|
|
123
|
+
moChuanZhi = diToTian[zhongChuanZhi];
|
|
124
|
+
}
|
|
125
|
+
// 構建三傳信息
|
|
126
|
+
const chuChuan = this.buildChuanInfo('初傳', chuChuanZhi, diToJiang, dayGan, dayGanZhi);
|
|
127
|
+
const zhongChuan = this.buildChuanInfo('中傳', zhongChuanZhi, diToJiang, dayGan, dayGanZhi);
|
|
128
|
+
const moChuan = this.buildChuanInfo('末傳', moChuanZhi, diToJiang, dayGan, dayGanZhi);
|
|
129
|
+
return {
|
|
130
|
+
chuChuan,
|
|
131
|
+
zhongChuan,
|
|
132
|
+
moChuan,
|
|
133
|
+
geJu,
|
|
134
|
+
geJuDetail,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 構建傳信息
|
|
139
|
+
*/
|
|
140
|
+
static buildChuanInfo(position, diZhi, diToJiang, dayGan, dayGanZhi) {
|
|
141
|
+
// 計算六親
|
|
142
|
+
const dayWuXing = constants_1.GAN_WUXING[dayGan];
|
|
143
|
+
const chuanWuXing = constants_1.ZHI_WUXING[diZhi];
|
|
144
|
+
const relationKey = dayWuXing + chuanWuXing;
|
|
145
|
+
const relation = constants_1.WUXING_RELATION[relationKey] || '比和';
|
|
146
|
+
const liuQin = constants_1.LIUQIN_MAP[relation] || '兄弟';
|
|
147
|
+
// 計算旬空
|
|
148
|
+
const xunKong = this.getXunKong(dayGanZhi, diZhi);
|
|
149
|
+
return {
|
|
150
|
+
position,
|
|
151
|
+
diZhi,
|
|
152
|
+
tianJiang: diToJiang[diZhi],
|
|
153
|
+
liuQin,
|
|
154
|
+
xunKong,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 獲取旬空
|
|
159
|
+
*/
|
|
160
|
+
static getXunKong(dayGanZhi, diZhi) {
|
|
161
|
+
// 找到日干支所在的旬
|
|
162
|
+
const dayIndex = constants_1.JIA_ZI_60.indexOf(dayGanZhi);
|
|
163
|
+
const xunStart = Math.floor(dayIndex / 10) * 10;
|
|
164
|
+
const xunHead = constants_1.JIA_ZI_60[xunStart];
|
|
165
|
+
const kongPair = constants_1.XUN_KONG[xunHead];
|
|
166
|
+
if (kongPair && kongPair.includes(diZhi)) {
|
|
167
|
+
return constants_1.TIAN_GAN[constants_1.DI_ZHI.indexOf(diZhi) % 10] || diZhi;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* 檢查是否返吟
|
|
173
|
+
*/
|
|
174
|
+
static checkFanYin(tianDiPan) {
|
|
175
|
+
// 天地盤對沖:每個地支上的天盤地支都是其對沖
|
|
176
|
+
let chongCount = 0;
|
|
177
|
+
for (let i = 0; i < 12; i++) {
|
|
178
|
+
const diZhi = constants_1.DI_ZHI[i];
|
|
179
|
+
const tianZhi = tianDiPan.diToTian[diZhi];
|
|
180
|
+
if (constants_1.ZHI_CHONG[diZhi] === tianZhi) {
|
|
181
|
+
chongCount++;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return chongCount >= 6; // 至少一半對沖
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* 處理多個賊尅
|
|
188
|
+
*/
|
|
189
|
+
static handleMultipleZeiKe(siKe, tianDiPan, dayGan, dayZhi, targetRelation) {
|
|
190
|
+
const matchingKe = siKe.list.filter(k => k.relation === targetRelation);
|
|
191
|
+
if (matchingKe.length === 1) {
|
|
192
|
+
return {
|
|
193
|
+
chuChuan: matchingKe[0].shangShen,
|
|
194
|
+
geJu: '賊尅',
|
|
195
|
+
detail: targetRelation === '下賊上' ? '重審' : '元首',
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// 比用:取與日干陰陽相同者
|
|
199
|
+
const dayGanYinYang = this.getYinYang(dayGan);
|
|
200
|
+
const sameYinYangKe = matchingKe.filter(k => this.getYinYang(k.shangShen) === dayGanYinYang);
|
|
201
|
+
if (sameYinYangKe.length === 1) {
|
|
202
|
+
return {
|
|
203
|
+
chuChuan: sameYinYangKe[0].shangShen,
|
|
204
|
+
geJu: '比用',
|
|
205
|
+
detail: '知一',
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// 涉害:看涉害深淺
|
|
209
|
+
// 從上神的地盤位置數到上神本身,計算經過的尅數
|
|
210
|
+
const candidates = sameYinYangKe.length > 0 ? sameYinYangKe : matchingKe;
|
|
211
|
+
const sheHaiResults = candidates.map(ke => {
|
|
212
|
+
const depth = this.calculateSheHaiDepth(ke.shangShen, ke.xiaShen, tianDiPan);
|
|
213
|
+
return { ke, depth };
|
|
214
|
+
});
|
|
215
|
+
// 取涉害最深者
|
|
216
|
+
sheHaiResults.sort((a, b) => b.depth - a.depth);
|
|
217
|
+
// 確定細分格局
|
|
218
|
+
let detail = '涉害';
|
|
219
|
+
if (sheHaiResults.length >= 2 && sheHaiResults[0].depth === sheHaiResults[1].depth) {
|
|
220
|
+
// 涉害相同,取先見者(課序靠前)
|
|
221
|
+
detail = '察微';
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
detail = '見機';
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
chuChuan: sheHaiResults[0].ke.shangShen,
|
|
228
|
+
geJu: '涉害',
|
|
229
|
+
detail,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 計算涉害深度
|
|
234
|
+
* 從上神的地盤位置開始,逆數到上神本身,計算經過的尅數
|
|
235
|
+
*
|
|
236
|
+
* 涉害深淺算法:
|
|
237
|
+
* 1. 找到上神在地盤的位置(即上神本身的地支)
|
|
238
|
+
* 2. 從該位置逆時針數到上神,計算途中被上神所尅的地支數量
|
|
239
|
+
*/
|
|
240
|
+
static calculateSheHaiDepth(shangShen, xiaShen, tianDiPan) {
|
|
241
|
+
// 上神的五行
|
|
242
|
+
const shangWuXing = constants_1.ZHI_WUXING[shangShen];
|
|
243
|
+
// 從上神的地盤位置(即上神本身)開始,逆數到上神在天盤的位置
|
|
244
|
+
// 實際上是從 xiaShen(下神,即上神所臨的地盤位置)逆數到 shangShen
|
|
245
|
+
const startIndex = constants_1.DI_ZHI.indexOf(xiaShen);
|
|
246
|
+
const endIndex = constants_1.DI_ZHI.indexOf(shangShen);
|
|
247
|
+
let count = 0;
|
|
248
|
+
let currentIndex = startIndex;
|
|
249
|
+
// 逆時針數(從地盤位置數到上神)
|
|
250
|
+
while (currentIndex !== endIndex) {
|
|
251
|
+
const currentZhi = constants_1.DI_ZHI[currentIndex];
|
|
252
|
+
const currentWuXing = constants_1.ZHI_WUXING[currentZhi];
|
|
253
|
+
// 檢查上神是否尅當前地支
|
|
254
|
+
const relationKey = shangWuXing + currentWuXing;
|
|
255
|
+
if (constants_1.WUXING_RELATION[relationKey] === '尅') {
|
|
256
|
+
count++;
|
|
257
|
+
}
|
|
258
|
+
// 逆時針移動
|
|
259
|
+
currentIndex = (currentIndex - 1 + 12) % 12;
|
|
260
|
+
}
|
|
261
|
+
return count;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* 處理無賊尅情況
|
|
265
|
+
*/
|
|
266
|
+
static handleNoZeiKe(siKe, tianDiPan, dayGan, dayZhi) {
|
|
267
|
+
const dayGanYinYang = this.getYinYang(dayGan);
|
|
268
|
+
// 遙尅:四課上神與日干有尅的關係
|
|
269
|
+
const dayWuXing = constants_1.GAN_WUXING[dayGan];
|
|
270
|
+
for (const ke of siKe.list) {
|
|
271
|
+
const keWuXing = constants_1.ZHI_WUXING[ke.shangShen];
|
|
272
|
+
const relation = constants_1.WUXING_RELATION[keWuXing + dayWuXing];
|
|
273
|
+
if (relation === '尅') {
|
|
274
|
+
return {
|
|
275
|
+
chuChuan: ke.shangShen,
|
|
276
|
+
geJu: '遙尅',
|
|
277
|
+
detail: '蒿矢',
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
if (relation === '被尅') {
|
|
281
|
+
return {
|
|
282
|
+
chuChuan: ke.shangShen,
|
|
283
|
+
geJu: '遙尅',
|
|
284
|
+
detail: '彈射',
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// 昴星:陽日取酉上神,陰日取從魁
|
|
289
|
+
if (dayGanYinYang === '陽') {
|
|
290
|
+
return {
|
|
291
|
+
chuChuan: tianDiPan.diToTian['酉'],
|
|
292
|
+
geJu: '昴星',
|
|
293
|
+
detail: '虎視',
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
return {
|
|
298
|
+
chuChuan: tianDiPan.diToTian['酉'],
|
|
299
|
+
geJu: '昴星',
|
|
300
|
+
detail: '冬蛇掩目',
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* 處理返吟
|
|
306
|
+
*
|
|
307
|
+
* 返吟課取三傳規則:
|
|
308
|
+
* 1. 有賊尅用賊尅,中傳以初沖,末傳用中沖
|
|
309
|
+
* 2. 無賊尅,取驛馬為初傳,支上神為中傳,干上神為末傳
|
|
310
|
+
*
|
|
311
|
+
* 返吟八專(絕嗣):
|
|
312
|
+
* - 日干支同位 + 四課全是下賊上
|
|
313
|
+
* - 取驛馬為初傳
|
|
314
|
+
*/
|
|
315
|
+
static handleFanYin(siKe, tianDiPan, dayGan, dayZhi, stats, isFanYinBaZhuan = false) {
|
|
316
|
+
// 返吟八專(絕嗣):直接取驛馬
|
|
317
|
+
if (isFanYinBaZhuan) {
|
|
318
|
+
const yiMa = this.getYiMa(dayZhi);
|
|
319
|
+
return {
|
|
320
|
+
chuChuan: yiMa,
|
|
321
|
+
detail: '絕嗣',
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
// 有賊尅(下賊上)用賊尅
|
|
325
|
+
if (stats.xiaZeiShang > 0) {
|
|
326
|
+
const matchingKe = siKe.list.filter(k => k.relation === '下賊上');
|
|
327
|
+
if (matchingKe.length === 1) {
|
|
328
|
+
return {
|
|
329
|
+
chuChuan: matchingKe[0].shangShen,
|
|
330
|
+
detail: '無依',
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
// 多個下賊上,取與日干陰陽相同者
|
|
334
|
+
const dayGanYinYang = this.getYinYang(dayGan);
|
|
335
|
+
const sameYinYangKe = matchingKe.filter(k => this.getYinYang(k.shangShen) === dayGanYinYang);
|
|
336
|
+
if (sameYinYangKe.length >= 1) {
|
|
337
|
+
return {
|
|
338
|
+
chuChuan: sameYinYangKe[0].shangShen,
|
|
339
|
+
detail: '無依',
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
return {
|
|
343
|
+
chuChuan: matchingKe[0].shangShen,
|
|
344
|
+
detail: '無依',
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
// 有上尅下用上尅下
|
|
348
|
+
if (stats.shangKeXia > 0) {
|
|
349
|
+
const matchingKe = siKe.list.filter(k => k.relation === '上尅下');
|
|
350
|
+
if (matchingKe.length === 1) {
|
|
351
|
+
return {
|
|
352
|
+
chuChuan: matchingKe[0].shangShen,
|
|
353
|
+
detail: '無依',
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
// 多個上尅下,取與日干陰陽相同者
|
|
357
|
+
const dayGanYinYang = this.getYinYang(dayGan);
|
|
358
|
+
const sameYinYangKe = matchingKe.filter(k => this.getYinYang(k.shangShen) === dayGanYinYang);
|
|
359
|
+
if (sameYinYangKe.length >= 1) {
|
|
360
|
+
return {
|
|
361
|
+
chuChuan: sameYinYangKe[0].shangShen,
|
|
362
|
+
detail: '無依',
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
chuChuan: matchingKe[0].shangShen,
|
|
367
|
+
detail: '無依',
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
// 無賊尅,取驛馬為初傳
|
|
371
|
+
// 驛馬:寅午戌馬在申,申子辰馬在寅,巳酉丑馬在亥,亥卯未馬在巳
|
|
372
|
+
const yiMa = this.getYiMa(dayZhi);
|
|
373
|
+
return {
|
|
374
|
+
chuChuan: yiMa,
|
|
375
|
+
detail: '無親',
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* 獲取驛馬
|
|
380
|
+
* 寅午戌馬在申,申子辰馬在寅,巳酉丑馬在亥,亥卯未馬在巳
|
|
381
|
+
*/
|
|
382
|
+
static getYiMa(dayZhi) {
|
|
383
|
+
const yiMaMap = {
|
|
384
|
+
'寅': '申', '午': '申', '戌': '申',
|
|
385
|
+
'申': '寅', '子': '寅', '辰': '寅',
|
|
386
|
+
'巳': '亥', '酉': '亥', '丑': '亥',
|
|
387
|
+
'亥': '巳', '卯': '巳', '未': '巳',
|
|
388
|
+
};
|
|
389
|
+
return yiMaMap[dayZhi];
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* 處理伏吟
|
|
393
|
+
*/
|
|
394
|
+
static handleFuYin(siKe, tianDiPan, dayGan, dayZhi, stats) {
|
|
395
|
+
const dayGanYinYang = this.getYinYang(dayGan);
|
|
396
|
+
const dayGanJiGong = constants_1.GAN_JI_GONG[dayGan];
|
|
397
|
+
// 伏吟課:陽日取日干寄宮刑神,陰日取日支刑神
|
|
398
|
+
if (dayGanYinYang === '陽') {
|
|
399
|
+
return {
|
|
400
|
+
chuChuan: dayGanJiGong,
|
|
401
|
+
detail: '自任',
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
return {
|
|
406
|
+
chuChuan: dayZhi,
|
|
407
|
+
detail: '杜傳',
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* 處理八專
|
|
413
|
+
*/
|
|
414
|
+
static handleBaZhuan(siKe, tianDiPan, dayGan, dayZhi) {
|
|
415
|
+
const dayGanYinYang = this.getYinYang(dayGan);
|
|
416
|
+
// 八專課:陽日順數兩位,陰日逆數兩位
|
|
417
|
+
const dayZhiIndex = constants_1.DI_ZHI.indexOf(dayZhi);
|
|
418
|
+
let targetIndex;
|
|
419
|
+
if (dayGanYinYang === '陽') {
|
|
420
|
+
targetIndex = (dayZhiIndex + 2) % 12;
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
targetIndex = (dayZhiIndex - 2 + 12) % 12;
|
|
424
|
+
}
|
|
425
|
+
return {
|
|
426
|
+
chuChuan: constants_1.DI_ZHI[targetIndex],
|
|
427
|
+
detail: '帷簿',
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* 獲取陰陽
|
|
432
|
+
*/
|
|
433
|
+
static getYinYang(ganOrZhi) {
|
|
434
|
+
const yangGan = ['甲', '丙', '戊', '庚', '壬'];
|
|
435
|
+
const yangZhi = ['子', '寅', '辰', '午', '申', '戌'];
|
|
436
|
+
if (yangGan.includes(ganOrZhi) || yangZhi.includes(ganOrZhi)) {
|
|
437
|
+
return '陽';
|
|
438
|
+
}
|
|
439
|
+
return '陰';
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
exports.SanChuanCalculator = SanChuanCalculator;
|
|
443
|
+
//# sourceMappingURL=SanChuanCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SanChuanCalculator.js","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/SanChuanCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 神煞計算器
|
|
3
|
+
*
|
|
4
|
+
* 計算大六壬中的各種神煞
|
|
5
|
+
*/
|
|
6
|
+
import type { ShenSha } from '../types';
|
|
7
|
+
export declare class ShenShaCalculator {
|
|
8
|
+
/**
|
|
9
|
+
* 計算神煞
|
|
10
|
+
*/
|
|
11
|
+
static calculate(dayGanZhi: string): ShenSha;
|
|
12
|
+
/**
|
|
13
|
+
* 日馬
|
|
14
|
+
*/
|
|
15
|
+
private static getRiMa;
|
|
16
|
+
/**
|
|
17
|
+
* 月馬
|
|
18
|
+
*/
|
|
19
|
+
private static getYueMa;
|
|
20
|
+
/**
|
|
21
|
+
* 丁馬(根據旬首)
|
|
22
|
+
*/
|
|
23
|
+
private static getDingMa;
|
|
24
|
+
/**
|
|
25
|
+
* 華蓋
|
|
26
|
+
*/
|
|
27
|
+
private static getHuaGai;
|
|
28
|
+
/**
|
|
29
|
+
* 閃電
|
|
30
|
+
*/
|
|
31
|
+
private static getShanDian;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ShenShaCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShenShaCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/ShenShaCalculator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAS,OAAO,EAAE,MAAM,UAAU,CAAC;AAG/C,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAY5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;IAoBvB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAkBxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IASxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAQ3B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 神煞計算器
|
|
4
|
+
*
|
|
5
|
+
* 計算大六壬中的各種神煞
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ShenShaCalculator = void 0;
|
|
9
|
+
const constants_1 = require("../data/constants");
|
|
10
|
+
class ShenShaCalculator {
|
|
11
|
+
/**
|
|
12
|
+
* 計算神煞
|
|
13
|
+
*/
|
|
14
|
+
static calculate(dayGanZhi) {
|
|
15
|
+
const dayZhi = dayGanZhi[1];
|
|
16
|
+
return {
|
|
17
|
+
riMa: this.getRiMa(dayZhi),
|
|
18
|
+
yueMa: this.getYueMa(dayZhi),
|
|
19
|
+
dingMa: this.getDingMa(dayGanZhi),
|
|
20
|
+
huaGai: this.getHuaGai(dayZhi),
|
|
21
|
+
shanDian: this.getShanDian(dayZhi),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 日馬
|
|
26
|
+
*/
|
|
27
|
+
static getRiMa(dayZhi) {
|
|
28
|
+
return constants_1.RI_MA[dayZhi];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 月馬
|
|
32
|
+
*/
|
|
33
|
+
static getYueMa(dayZhi) {
|
|
34
|
+
// 根據日支所屬三合局確定月馬
|
|
35
|
+
const sanHeMap = {
|
|
36
|
+
'寅申': ['寅', '申'],
|
|
37
|
+
'卯酉': ['卯', '酉'],
|
|
38
|
+
'辰戌': ['辰', '戌'],
|
|
39
|
+
'巳亥': ['巳', '亥'],
|
|
40
|
+
'午子': ['午', '子'],
|
|
41
|
+
'丑未': ['丑', '未'],
|
|
42
|
+
};
|
|
43
|
+
for (const [key, zhis] of Object.entries(sanHeMap)) {
|
|
44
|
+
if (zhis.includes(dayZhi)) {
|
|
45
|
+
return constants_1.YUE_MA_MAP[key];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return '寅'; // 默認
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 丁馬(根據旬首)
|
|
52
|
+
*/
|
|
53
|
+
static getDingMa(dayGanZhi) {
|
|
54
|
+
// 找到日干支所在的旬
|
|
55
|
+
const dayIndex = constants_1.JIA_ZI_60.indexOf(dayGanZhi);
|
|
56
|
+
const xunStart = Math.floor(dayIndex / 10) * 10;
|
|
57
|
+
// 丁馬對應表
|
|
58
|
+
const dingMaMap = {
|
|
59
|
+
0: '卯', // 甲子旬
|
|
60
|
+
10: '丑', // 甲戌旬
|
|
61
|
+
20: '亥', // 甲申旬
|
|
62
|
+
30: '酉', // 甲午旬
|
|
63
|
+
40: '未', // 甲辰旬
|
|
64
|
+
50: '巳', // 甲寅旬
|
|
65
|
+
};
|
|
66
|
+
return dingMaMap[xunStart] || '卯';
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 華蓋
|
|
70
|
+
*/
|
|
71
|
+
static getHuaGai(dayZhi) {
|
|
72
|
+
const huaGaiMap = {
|
|
73
|
+
'子': '戌', '丑': '丑', '寅': '戌', '卯': '未',
|
|
74
|
+
'辰': '戌', '巳': '丑', '午': '戌', '未': '未',
|
|
75
|
+
'申': '戌', '酉': '丑', '戌': '戌', '亥': '未',
|
|
76
|
+
};
|
|
77
|
+
return huaGaiMap[dayZhi];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 閃電
|
|
81
|
+
*/
|
|
82
|
+
static getShanDian(dayZhi) {
|
|
83
|
+
const shanDianMap = {
|
|
84
|
+
'子': '辰', '丑': '辰', '寅': '未', '卯': '未',
|
|
85
|
+
'辰': '戌', '巳': '戌', '午': '丑', '未': '丑',
|
|
86
|
+
'申': '寅', '酉': '寅', '戌': '卯', '亥': '卯',
|
|
87
|
+
};
|
|
88
|
+
return shanDianMap[dayZhi];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.ShenShaCalculator = ShenShaCalculator;
|
|
92
|
+
//# sourceMappingURL=ShenShaCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShenShaCalculator.js","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/ShenShaCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 四課計算器
|
|
3
|
+
*
|
|
4
|
+
* 四課由日干支推演:
|
|
5
|
+
* - 一課:日干上神(日干寄宮的天盤地支)加日干
|
|
6
|
+
* - 二課:一課上神的天盤地支加一課上神
|
|
7
|
+
* - 三課:日支上神(日支的天盤地支)加日支
|
|
8
|
+
* - 四課:三課上神的天盤地支加三課上神
|
|
9
|
+
*/
|
|
10
|
+
import type { DiZhi, TianGan, SiKeInfo, TianDiPan } from '../types';
|
|
11
|
+
export declare class SiKeCalculator {
|
|
12
|
+
/**
|
|
13
|
+
* 計算四課
|
|
14
|
+
*/
|
|
15
|
+
static calculate(dayGan: TianGan, dayZhi: DiZhi, tianDiPan: TianDiPan): SiKeInfo;
|
|
16
|
+
/**
|
|
17
|
+
* 構建單個課
|
|
18
|
+
*/
|
|
19
|
+
private static buildSiKe;
|
|
20
|
+
/**
|
|
21
|
+
* 計算上下神關係
|
|
22
|
+
*/
|
|
23
|
+
private static calculateRelation;
|
|
24
|
+
/**
|
|
25
|
+
* 分析四課關係統計
|
|
26
|
+
*/
|
|
27
|
+
static analyzeRelations(siKe: SiKeInfo): {
|
|
28
|
+
shangKeXia: number;
|
|
29
|
+
xiaZeiShang: number;
|
|
30
|
+
biHe: number;
|
|
31
|
+
shangShengXia: number;
|
|
32
|
+
xiaShengShang: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=SiKeCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiKeCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/SiKeCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAwB,QAAQ,EAAE,SAAS,EAAU,MAAM,UAAU,CAAC;AAQlG,qBAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,GACnB,QAAQ;IA8BX;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAkBxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAmChC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG;QACvC,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB;CA+BF"}
|