mingpan 0.1.1 → 0.1.3
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 +116 -42
- package/dist/core/bazi/types.d.ts +0 -1
- package/dist/core/bazi/types.d.ts.map +1 -1
- package/dist/core/qimen/FlyingRule.d.ts +60 -0
- package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
- package/dist/core/qimen/FlyingRule.js +94 -0
- package/dist/core/qimen/FlyingRule.js.map +1 -0
- package/dist/core/qimen/GongMapping.d.ts +29 -0
- package/dist/core/qimen/GongMapping.d.ts.map +1 -0
- package/dist/core/qimen/GongMapping.js +83 -0
- package/dist/core/qimen/GongMapping.js.map +1 -0
- package/dist/core/qimen/RotatingRule.d.ts +76 -0
- package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
- package/dist/core/qimen/RotatingRule.js +126 -0
- package/dist/core/qimen/RotatingRule.js.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.js +79 -0
- package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
- package/dist/core/qimen/index.d.ts +10 -0
- package/dist/core/qimen/index.d.ts.map +1 -0
- package/dist/core/qimen/index.js +58 -0
- package/dist/core/qimen/index.js.map +1 -0
- package/dist/core/qimen/types.d.ts +19 -0
- package/dist/core/qimen/types.d.ts.map +1 -0
- package/dist/core/qimen/types.js +7 -0
- package/dist/core/qimen/types.js.map +1 -0
- package/dist/index.js +665 -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/output/qimenTextRenderer.d.ts +40 -0
- package/dist/output/qimenTextRenderer.d.ts.map +1 -0
- package/dist/output/qimenTextRenderer.js +363 -0
- package/dist/output/qimenTextRenderer.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/services/qimen/QimenService.d.ts +93 -0
- package/dist/services/qimen/QimenService.d.ts.map +1 -0
- package/dist/services/qimen/QimenService.js +427 -0
- package/dist/services/qimen/QimenService.js.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts +53 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js +105 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +56 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js +98 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +54 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js +117 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts +57 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js +115 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +50 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +86 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.js +431 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +118 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js +260 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
- package/dist/services/qimen/data/constants.d.ts +105 -0
- package/dist/services/qimen/data/constants.d.ts.map +1 -0
- package/dist/services/qimen/data/constants.js +295 -0
- package/dist/services/qimen/data/constants.js.map +1 -0
- package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
- package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/shensha-rules.js +397 -0
- package/dist/services/qimen/data/shensha-rules.js.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.js +365 -0
- package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
- package/dist/services/qimen/index.d.ts +20 -0
- package/dist/services/qimen/index.d.ts.map +1 -0
- package/dist/services/qimen/index.js +43 -0
- package/dist/services/qimen/index.js.map +1 -0
- package/dist/services/qimen/types.d.ts +390 -0
- package/dist/services/qimen/types.d.ts.map +1 -0
- package/dist/services/qimen/types.js +20 -0
- package/dist/services/qimen/types.js.map +1 -0
- package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
- package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
- package/dist/services/qimen/utils/gongUtils.js +164 -0
- package/dist/services/qimen/utils/gongUtils.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,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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 四課計算器
|
|
4
|
+
*
|
|
5
|
+
* 四課由日干支推演:
|
|
6
|
+
* - 一課:日干上神(日干寄宮的天盤地支)加日干
|
|
7
|
+
* - 二課:一課上神的天盤地支加一課上神
|
|
8
|
+
* - 三課:日支上神(日支的天盤地支)加日支
|
|
9
|
+
* - 四課:三課上神的天盤地支加三課上神
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SiKeCalculator = void 0;
|
|
13
|
+
const constants_1 = require("../data/constants");
|
|
14
|
+
class SiKeCalculator {
|
|
15
|
+
/**
|
|
16
|
+
* 計算四課
|
|
17
|
+
*/
|
|
18
|
+
static calculate(dayGan, dayZhi, tianDiPan) {
|
|
19
|
+
const { diToTian, diToJiang } = tianDiPan;
|
|
20
|
+
// 日干寄宮
|
|
21
|
+
const dayGanJiGong = constants_1.GAN_JI_GONG[dayGan];
|
|
22
|
+
// 一課:日干上神加日干
|
|
23
|
+
const yiKeShang = diToTian[dayGanJiGong];
|
|
24
|
+
const yiKe = this.buildSiKe(1, yiKeShang, dayGan, diToJiang[dayGanJiGong]);
|
|
25
|
+
// 二課:一課上神的天盤地支加一課上神
|
|
26
|
+
const erKeShang = diToTian[yiKeShang];
|
|
27
|
+
const erKe = this.buildSiKe(2, erKeShang, yiKeShang, diToJiang[yiKeShang]);
|
|
28
|
+
// 三課:日支上神加日支
|
|
29
|
+
const sanKeShang = diToTian[dayZhi];
|
|
30
|
+
const sanKe = this.buildSiKe(3, sanKeShang, dayZhi, diToJiang[dayZhi]);
|
|
31
|
+
// 四課:三課上神的天盤地支加三課上神
|
|
32
|
+
const siKeShang = diToTian[sanKeShang];
|
|
33
|
+
const siKe = this.buildSiKe(4, siKeShang, sanKeShang, diToJiang[sanKeShang]);
|
|
34
|
+
return {
|
|
35
|
+
list: [yiKe, erKe, sanKe, siKe],
|
|
36
|
+
dayGan,
|
|
37
|
+
dayZhi,
|
|
38
|
+
dayGanJiGong,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 構建單個課
|
|
43
|
+
*/
|
|
44
|
+
static buildSiKe(position, shangShen, xiaShen, tianJiang) {
|
|
45
|
+
// 計算上下關係
|
|
46
|
+
const relation = this.calculateRelation(shangShen, xiaShen);
|
|
47
|
+
return {
|
|
48
|
+
position,
|
|
49
|
+
shangShen,
|
|
50
|
+
xiaShen,
|
|
51
|
+
tianJiang,
|
|
52
|
+
relation,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 計算上下神關係
|
|
57
|
+
*/
|
|
58
|
+
static calculateRelation(shangShen, xiaShen) {
|
|
59
|
+
// 獲取五行
|
|
60
|
+
const shangWuXing = constants_1.ZHI_WUXING[shangShen];
|
|
61
|
+
let xiaWuXing;
|
|
62
|
+
// 下神可能是天干(日干)或地支
|
|
63
|
+
if (xiaShen in constants_1.GAN_WUXING) {
|
|
64
|
+
xiaWuXing = constants_1.GAN_WUXING[xiaShen];
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
xiaWuXing = constants_1.ZHI_WUXING[xiaShen];
|
|
68
|
+
}
|
|
69
|
+
// 查找關係
|
|
70
|
+
const relationKey = shangWuXing + xiaWuXing;
|
|
71
|
+
const relation = constants_1.WUXING_RELATION[relationKey];
|
|
72
|
+
switch (relation) {
|
|
73
|
+
case '尅':
|
|
74
|
+
return '上尅下';
|
|
75
|
+
case '被尅':
|
|
76
|
+
return '下賊上';
|
|
77
|
+
case '比和':
|
|
78
|
+
return '比和';
|
|
79
|
+
case '生':
|
|
80
|
+
return '上生下';
|
|
81
|
+
case '被生':
|
|
82
|
+
return '下生上';
|
|
83
|
+
default:
|
|
84
|
+
return '比和';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 分析四課關係統計
|
|
89
|
+
*/
|
|
90
|
+
static analyzeRelations(siKe) {
|
|
91
|
+
const stats = {
|
|
92
|
+
shangKeXia: 0,
|
|
93
|
+
xiaZeiShang: 0,
|
|
94
|
+
biHe: 0,
|
|
95
|
+
shangShengXia: 0,
|
|
96
|
+
xiaShengShang: 0,
|
|
97
|
+
};
|
|
98
|
+
for (const ke of siKe.list) {
|
|
99
|
+
switch (ke.relation) {
|
|
100
|
+
case '上尅下':
|
|
101
|
+
stats.shangKeXia++;
|
|
102
|
+
break;
|
|
103
|
+
case '下賊上':
|
|
104
|
+
stats.xiaZeiShang++;
|
|
105
|
+
break;
|
|
106
|
+
case '比和':
|
|
107
|
+
stats.biHe++;
|
|
108
|
+
break;
|
|
109
|
+
case '上生下':
|
|
110
|
+
stats.shangShengXia++;
|
|
111
|
+
break;
|
|
112
|
+
case '下生上':
|
|
113
|
+
stats.xiaShengShang++;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return stats;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.SiKeCalculator = SiKeCalculator;
|
|
121
|
+
//# sourceMappingURL=SiKeCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiKeCalculator.js","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/SiKeCalculator.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,iDAK2B;AAE3B,MAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,MAAe,EACf,MAAa,EACb,SAAoB;QAEpB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;QAE1C,OAAO;QACP,MAAM,YAAY,GAAG,uBAAW,CAAC,MAAM,CAAC,CAAC;QAEzC,aAAa;QACb,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAE3E,oBAAoB;QACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3E,aAAa;QACb,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,oBAAoB;QACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAE7E,OAAO;YACL,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;YAC/B,MAAM;YACN,MAAM;YACN,YAAY;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,SAAS,CACtB,QAAuB,EACvB,SAAgB,EAChB,OAAe,EACf,SAAyB;QAEzB,SAAS;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE5D,OAAO;YACL,QAAQ;YACR,SAAS;YACT,OAAO;YACP,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,iBAAiB,CAC9B,SAAgB,EAChB,OAAe;QAEf,OAAO;QACP,MAAM,WAAW,GAAG,sBAAU,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,SAAiB,CAAC;QAEtB,iBAAiB;QACjB,IAAI,OAAO,IAAI,sBAAU,EAAE,CAAC;YAC1B,SAAS,GAAG,sBAAU,CAAC,OAAkB,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,sBAAU,CAAC,OAAgB,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;QACP,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;QAC5C,MAAM,QAAQ,GAAG,2BAAe,CAAC,WAAW,CAAC,CAAC;QAE9C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,GAAG;gBACN,OAAO,KAAK,CAAC;YACf,KAAK,IAAI;gBACP,OAAO,KAAK,CAAC;YACf,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,OAAO,KAAK,CAAC;YACf,KAAK,IAAI;gBACP,OAAO,KAAK,CAAC;YACf;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAc;QAOpC,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,CAAC;YACP,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC;SACjB,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,KAAK;oBACR,KAAK,CAAC,UAAU,EAAE,CAAC;oBACnB,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,CAAC,WAAW,EAAE,CAAC;oBACpB,MAAM;gBACR,KAAK,IAAI;oBACP,KAAK,CAAC,IAAI,EAAE,CAAC;oBACb,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,CAAC,aAAa,EAAE,CAAC;oBACtB,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,CAAC,aAAa,EAAE,CAAC;oBACtB,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAzID,wCAyIC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 天地盤計算器
|
|
3
|
+
*
|
|
4
|
+
* 天地盤是大六壬的基礎,由月將加時辰起盤
|
|
5
|
+
*
|
|
6
|
+
* 算法:
|
|
7
|
+
* 1. 根據節氣確定月將
|
|
8
|
+
* 2. 月將加臨時辰,順布十二地支為天盤
|
|
9
|
+
* 3. 地盤固定為子丑寅卯辰巳午未申酉戌亥
|
|
10
|
+
* 4. 根據日干和晝夜確定貴人起點,順/逆布十二天將
|
|
11
|
+
*/
|
|
12
|
+
import type { DiZhi, TianGan, TianDiPan } from '../types';
|
|
13
|
+
export declare class TianDiPanCalculator {
|
|
14
|
+
/**
|
|
15
|
+
* 計算天地盤
|
|
16
|
+
*/
|
|
17
|
+
static calculate(jieqi: string, hourZhi: DiZhi, dayGan: TianGan): TianDiPan;
|
|
18
|
+
/**
|
|
19
|
+
* 根據節氣獲取月將
|
|
20
|
+
*/
|
|
21
|
+
private static getYueJiang;
|
|
22
|
+
/**
|
|
23
|
+
* 計算天盤
|
|
24
|
+
* 月將加臨時辰,順布十二地支
|
|
25
|
+
*/
|
|
26
|
+
private static calculateTianPan;
|
|
27
|
+
/**
|
|
28
|
+
* 計算天將排布
|
|
29
|
+
* 根據日干和晝夜確定貴人起點,然後順/逆布
|
|
30
|
+
*/
|
|
31
|
+
private static calculateTianJiang;
|
|
32
|
+
/**
|
|
33
|
+
* 建立地支到天盤的映射
|
|
34
|
+
*/
|
|
35
|
+
private static buildDiToTian;
|
|
36
|
+
/**
|
|
37
|
+
* 建立地支到天將的映射
|
|
38
|
+
*/
|
|
39
|
+
private static buildDiToJiang;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=TianDiPanCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TianDiPanCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/TianDiPanCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAkB,OAAO,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAUpF,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,OAAO,GACd,SAAS;IAgCZ;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAyB/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAuCjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAO9B"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 天地盤計算器
|
|
4
|
+
*
|
|
5
|
+
* 天地盤是大六壬的基礎,由月將加時辰起盤
|
|
6
|
+
*
|
|
7
|
+
* 算法:
|
|
8
|
+
* 1. 根據節氣確定月將
|
|
9
|
+
* 2. 月將加臨時辰,順布十二地支為天盤
|
|
10
|
+
* 3. 地盤固定為子丑寅卯辰巳午未申酉戌亥
|
|
11
|
+
* 4. 根據日干和晝夜確定貴人起點,順/逆布十二天將
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.TianDiPanCalculator = void 0;
|
|
15
|
+
const constants_1 = require("../data/constants");
|
|
16
|
+
class TianDiPanCalculator {
|
|
17
|
+
/**
|
|
18
|
+
* 計算天地盤
|
|
19
|
+
*/
|
|
20
|
+
static calculate(jieqi, hourZhi, dayGan) {
|
|
21
|
+
// 1. 確定月將
|
|
22
|
+
const yueJiang = this.getYueJiang(jieqi);
|
|
23
|
+
const yueJiangName = constants_1.YUE_JIANG_MAP[yueJiang];
|
|
24
|
+
// 2. 計算天盤(月將加臨時辰)
|
|
25
|
+
const tianPan = this.calculateTianPan(yueJiang, hourZhi);
|
|
26
|
+
// 3. 地盤固定
|
|
27
|
+
const diPan = [...constants_1.DI_ZHI];
|
|
28
|
+
// 4. 確定晝夜
|
|
29
|
+
const dayNight = constants_1.DAY_NIGHT_MAP[hourZhi];
|
|
30
|
+
// 5. 計算天將排布
|
|
31
|
+
const tianJiang = this.calculateTianJiang(dayGan, dayNight, tianPan);
|
|
32
|
+
// 6. 建立地支對應關係
|
|
33
|
+
const diToTian = this.buildDiToTian(diPan, tianPan);
|
|
34
|
+
const diToJiang = this.buildDiToJiang(diPan, tianJiang);
|
|
35
|
+
return {
|
|
36
|
+
tianPan,
|
|
37
|
+
diPan,
|
|
38
|
+
tianJiang,
|
|
39
|
+
yueJiang,
|
|
40
|
+
yueJiangName,
|
|
41
|
+
diToTian,
|
|
42
|
+
diToJiang,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 根據節氣獲取月將
|
|
47
|
+
*/
|
|
48
|
+
static getYueJiang(jieqi) {
|
|
49
|
+
const yueJiang = constants_1.JIEQI_YUE_JIANG[jieqi];
|
|
50
|
+
if (!yueJiang) {
|
|
51
|
+
// 默認返回子(神後)
|
|
52
|
+
console.warn(`未知節氣: ${jieqi},使用默認月將`);
|
|
53
|
+
return '子';
|
|
54
|
+
}
|
|
55
|
+
return yueJiang;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 計算天盤
|
|
59
|
+
* 月將加臨時辰,順布十二地支
|
|
60
|
+
*/
|
|
61
|
+
static calculateTianPan(yueJiang, hourZhi) {
|
|
62
|
+
// 找到時辰在地支中的位置
|
|
63
|
+
const hourIndex = constants_1.DI_ZHI.indexOf(hourZhi);
|
|
64
|
+
// 找到月將在地支中的位置
|
|
65
|
+
const yueJiangIndex = constants_1.DI_ZHI.indexOf(yueJiang);
|
|
66
|
+
// 天盤:從時辰位置開始,月將加臨
|
|
67
|
+
const tianPan = [];
|
|
68
|
+
for (let i = 0; i < 12; i++) {
|
|
69
|
+
// 從月將開始順布
|
|
70
|
+
const index = (yueJiangIndex + i) % 12;
|
|
71
|
+
tianPan.push(constants_1.DI_ZHI[index]);
|
|
72
|
+
}
|
|
73
|
+
// 重新排列:使天盤對應地盤從時辰開始
|
|
74
|
+
const result = [];
|
|
75
|
+
for (let i = 0; i < 12; i++) {
|
|
76
|
+
const diPanIndex = (hourIndex + i) % 12;
|
|
77
|
+
result[diPanIndex] = tianPan[i];
|
|
78
|
+
}
|
|
79
|
+
// 返回按地盤順序排列的天盤
|
|
80
|
+
return constants_1.DI_ZHI.map((_, i) => result[i]);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 計算天將排布
|
|
84
|
+
* 根據日干和晝夜確定貴人起點,然後順/逆布
|
|
85
|
+
*/
|
|
86
|
+
static calculateTianJiang(dayGan, dayNight, tianPan) {
|
|
87
|
+
// 1. 確定貴人起點
|
|
88
|
+
const guirenConfig = constants_1.GUIREN_START[dayGan];
|
|
89
|
+
const guirenStart = dayNight === '晝' ? guirenConfig.day : guirenConfig.night;
|
|
90
|
+
// 2. 找到貴人在天盤中的位置(貴人臨地盤某支)
|
|
91
|
+
const guirenTianPanZhi = tianPan[constants_1.DI_ZHI.indexOf(guirenStart)];
|
|
92
|
+
// 3. 確定順逆
|
|
93
|
+
// 貴人在巳午未申酉戌(陽位)則逆布,在亥子丑寅卯辰(陰位)則順布
|
|
94
|
+
const yangPositions = ['巳', '午', '未', '申', '酉', '戌'];
|
|
95
|
+
const isReverse = yangPositions.includes(guirenTianPanZhi);
|
|
96
|
+
// 4. 排布天將
|
|
97
|
+
const tianJiang = new Array(12);
|
|
98
|
+
const guirenIndex = constants_1.DI_ZHI.indexOf(guirenStart);
|
|
99
|
+
if (isReverse) {
|
|
100
|
+
// 逆布
|
|
101
|
+
const reversedJiang = ['貴', '后', '陰', '玄', '常', '虎', '空', '龍', '勾', '合', '雀', '蛇'];
|
|
102
|
+
for (let i = 0; i < 12; i++) {
|
|
103
|
+
const targetIndex = (guirenIndex + i) % 12;
|
|
104
|
+
tianJiang[targetIndex] = reversedJiang[i];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// 順布
|
|
109
|
+
for (let i = 0; i < 12; i++) {
|
|
110
|
+
const targetIndex = (guirenIndex + i) % 12;
|
|
111
|
+
tianJiang[targetIndex] = constants_1.TIAN_JIANG[i];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return tianJiang;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 建立地支到天盤的映射
|
|
118
|
+
*/
|
|
119
|
+
static buildDiToTian(diPan, tianPan) {
|
|
120
|
+
const result = {};
|
|
121
|
+
for (let i = 0; i < 12; i++) {
|
|
122
|
+
result[diPan[i]] = tianPan[i];
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 建立地支到天將的映射
|
|
128
|
+
*/
|
|
129
|
+
static buildDiToJiang(diPan, tianJiang) {
|
|
130
|
+
const result = {};
|
|
131
|
+
for (let i = 0; i < 12; i++) {
|
|
132
|
+
result[diPan[i]] = tianJiang[i];
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.TianDiPanCalculator = TianDiPanCalculator;
|
|
138
|
+
//# sourceMappingURL=TianDiPanCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TianDiPanCalculator.js","sourceRoot":"","sources":["../../../../src/services/daliuren/calculators/TianDiPanCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 大六壬常量數據
|
|
3
|
+
*
|
|
4
|
+
* 參考來源:
|
|
5
|
+
* - kentang2017/kinliuren (MIT License)
|
|
6
|
+
* - 《大六壬大全》
|
|
7
|
+
* - 《六壬粹言》
|
|
8
|
+
*/
|
|
9
|
+
import type { TianGan, DiZhi, TianJiangShort, YueJiang, WuXing } from '../types';
|
|
10
|
+
/** 十天干 */
|
|
11
|
+
export declare const TIAN_GAN: TianGan[];
|
|
12
|
+
/** 十二地支 */
|
|
13
|
+
export declare const DI_ZHI: DiZhi[];
|
|
14
|
+
/** 十二天將(順序) */
|
|
15
|
+
export declare const TIAN_JIANG: TianJiangShort[];
|
|
16
|
+
/** 十二天將全稱 */
|
|
17
|
+
export declare const TIAN_JIANG_FULL: Record<TianJiangShort, string>;
|
|
18
|
+
/** 月將名稱對應地支 */
|
|
19
|
+
export declare const YUE_JIANG_MAP: Record<DiZhi, YueJiang>;
|
|
20
|
+
/** 天干五行 */
|
|
21
|
+
export declare const GAN_WUXING: Record<TianGan, WuXing>;
|
|
22
|
+
/** 地支五行 */
|
|
23
|
+
export declare const ZHI_WUXING: Record<DiZhi, WuXing>;
|
|
24
|
+
/** 五行生剋關係 */
|
|
25
|
+
export declare const WUXING_RELATION: Record<string, string>;
|
|
26
|
+
/** 六親對應 */
|
|
27
|
+
export declare const LIUQIN_MAP: Record<string, string>;
|
|
28
|
+
/** 日干寄宮(天干寄於地支) */
|
|
29
|
+
export declare const GAN_JI_GONG: Record<TianGan, DiZhi>;
|
|
30
|
+
/** 節氣對應月將 */
|
|
31
|
+
export declare const JIEQI_YUE_JIANG: Record<string, DiZhi>;
|
|
32
|
+
/**
|
|
33
|
+
* 貴人起點(晝夜)
|
|
34
|
+
* 甲戊庚牛羊,乙己鼠猴鄉,丙丁豬雞位,壬癸蛇兔藏,六辛逢馬虎
|
|
35
|
+
*/
|
|
36
|
+
export declare const GUIREN_START: Record<string, {
|
|
37
|
+
day: DiZhi;
|
|
38
|
+
night: DiZhi;
|
|
39
|
+
}>;
|
|
40
|
+
/** 晝夜判斷(時辰) */
|
|
41
|
+
export declare const DAY_NIGHT_MAP: Record<DiZhi, '晝' | '夜'>;
|
|
42
|
+
/** 六甲旬空 */
|
|
43
|
+
export declare const XUN_KONG: Record<string, [DiZhi, DiZhi]>;
|
|
44
|
+
/** 六十甲子 */
|
|
45
|
+
export declare const JIA_ZI_60: string[];
|
|
46
|
+
/** 地支相沖 */
|
|
47
|
+
export declare const ZHI_CHONG: Record<DiZhi, DiZhi>;
|
|
48
|
+
/** 地支相刑 */
|
|
49
|
+
export declare const ZHI_XING: Record<DiZhi, DiZhi>;
|
|
50
|
+
/** 地支六合 */
|
|
51
|
+
export declare const ZHI_HE: Record<DiZhi, DiZhi>;
|
|
52
|
+
/** 地支相害 */
|
|
53
|
+
export declare const ZHI_HAI: Record<DiZhi, DiZhi>;
|
|
54
|
+
/** 日馬(根據日支) */
|
|
55
|
+
export declare const RI_MA: Record<DiZhi, DiZhi>;
|
|
56
|
+
/** 月馬(根據日支) */
|
|
57
|
+
export declare const YUE_MA_MAP: Record<string, DiZhi>;
|
|
58
|
+
/** 八專日干支 */
|
|
59
|
+
export declare const BA_ZHUAN_DAYS: string[];
|
|
60
|
+
/** 日干支同位 */
|
|
61
|
+
export declare const GAN_ZHI_SAME_POSITION: string[];
|
|
62
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/services/daliuren/data/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMjF,UAAU;AACV,eAAO,MAAM,QAAQ,EAAE,OAAO,EAAuD,CAAC;AAEtF,WAAW;AACX,eAAO,MAAM,MAAM,EAAE,KAAK,EAAiE,CAAC;AAE5F,eAAe;AACf,eAAO,MAAM,UAAU,EAAE,cAAc,EAAiE,CAAC;AAEzG,aAAa;AACb,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAa1D,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAajD,CAAC;AAMF,WAAW;AACX,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAM9C,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAO5C,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWlD,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7C,CAAC;AAMF,mBAAmB;AACnB,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAW9C,CAAC;AAMF,aAAa;AACb,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAyBjD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAWrE,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAGlD,CAAC;AAMF,WAAW;AACX,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAOnD,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,SAAS,EAAE,MAAM,EAM1B,CAAC;AAML,WAAW;AACX,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAO1C,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAKzC,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAOvC,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAOxC,CAAC;AAMF,eAAe;AACf,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAItC,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAG5C,CAAC;AAMF,YAAY;AACZ,eAAO,MAAM,aAAa,UAAmD,CAAC;AAE9E,YAAY;AACZ,eAAO,MAAM,qBAAqB,UAAiC,CAAC"}
|