奇門遁甲與太乙神數、大六壬合稱為三式,以九宮八卦式盤推測萬事萬物,融合古代天文地理、兵法謀略等學說于一體,最早來源于古代的行軍打仗、排兵布陣,姜子牙、劉伯溫、諸葛亮等人都有研究,《三國演義》和《水滸傳》中軍師諸葛亮和吳用都有借助奇門遁甲之法排兵布陣的案例,這里不多啰嗦,感興趣的同學可以自己去看看原著,也是十分精彩的。
因為排盤方法不像七政四余、紫微斗數、鐵板神數這么復雜,所以相對來說,在民間的流傳和發(fā)展要優(yōu)于以上兩者,經過歷代長遠的發(fā)展,逐步演變?yōu)榭梢灶A測萬事萬物,以下是部分排盤算法:
if (shizhuStr.equals("甲子")) { //六儀轉換,甲子戊,甲戌己,甲申庚,甲午辛,甲辰壬,甲寅癸
shizhuYi = "戊";
} else if (shizhuStr.equals("甲戌")) {
shizhuYi = "己";
} else if (shizhuStr.equals("甲申")) {
shizhuYi = "庚";
} else if (shizhuStr.equals("甲午")) {
shizhuYi = "辛";
} else if (shizhuStr.equals("甲辰")) {
shizhuYi = "壬";
} else if (shizhuStr.equals("甲寅")) {
shizhuYi = "癸";
} else {
shizhuYi = shizhuStr.substring(0, 1);
}
//排地盤
for (int i = 0; i < 9; i++) {
if (yindun) {
qimenUnits[Gongweis[(juIndex[sanyuan] - i + 9) % 9]].setDipan(QiYis[i]);
} else {
qimenUnits[Gongweis[(juIndex[sanyuan] + i) % 9]].setDipan(QiYis[i]);
}
}
for (int i = 0; i < 9; i++) {
if (qimenUnits[i].getDipan().equals(qimenUtil.xunshou(shizhuStr).substring(2, 3))) {
primaryxunshouluogong = i;
break;
}
}
for (int i = 0; i < 9; i++) {
if (qimenUnits[i].getDipan().equals(shizhuYi)) {
dishiganIndex = i;
break;
}
}
//落在中五宮的話調整到坤二宮
xunshouLuogong = primaryxunshouluogong == 8 ? 5 : primaryxunshouluogong;
zhifuTv.setText(Zhifus[primaryxunshouluogong]);
zhishiTv.setText(Zhishis[primaryxunshouluogong]);
xunshouTv.setText(qimenUtil.xunshou(shizhuStr)); //旬首,以時干來求
String zhifu;
zhifu = Zhifus[primaryxunshouluogong];
zhifu = zhifu.equals("天禽") ? "天芮" : zhifu;
int luocha = qimenUtil.luocha(shizhuStr, qimenUtil.xunshou(shizhuStr).substring(0, 2));
if (yindun) {
primaryZhishiluogon = Gongweis[(gongweiList.indexOf(primaryxunshouluogong) - luocha + 9) % 9];
zhishiLuogong = primaryZhishiluogon == 8 ? 5 : primaryZhishiluogon;
} else {
primaryZhishiluogon = Gongweis[(gongweiList.indexOf(primaryxunshouluogong) + luocha) % 9];
zhishiLuogong = primaryZhishiluogon == 8 ? 5 : primaryZhishiluogon;
}
dishiganIndex = dishiganIndex == 8 ? 5 : dishiganIndex;
String xingUnit = "";
for (int i = 0; i < 8; i++) { //從值符開始排八神,值符跟著時干地盤開始排
if (yindun) {
qimenUnits[(dishiganIndex - i + 8) % 8].setShen(Shens[i]);
} else {
qimenUnits[(dishiganIndex + i) % 8].setShen(Shens[i]);
}
xingUnit = Xings[(xingList.indexOf(zhifu) + i) % 8];
if (xingUnit.equals("天芮")) {
qimenUnits[(dishiganIndex + i) % 8].setXing("禽芮");
qimenUnits[(dishiganIndex + i) % 8].setZhonggongdipan(qimenUnits[8].getDipan());
} else {
qimenUnits[(dishiganIndex + i) % 8].setXing(xingUnit);
qimenUnits[(dishiganIndex + i) % 8].setZhonggongdipan("");
}
qimenUnits[(dishiganIndex + i) % 8].setTianpan(qimenUnits[xingList.indexOf(Xings[(xingList.indexOf(zhifu) + i) % 8])].getDipan());
// qimenUnits[(dishiganIndex + i) % 8].setTianpan(QiYis[(Arrays.asList(QiYis).indexOf(qimenUtil.xunshou(shizhuStr).substring(2, 3)) + i) % 9]);
qimenUnits[(zhishiLuogong + i) % 8].setMen(Mens[(menList.indexOf(Zhishis[primaryxunshouluogong]) + i) % 8]);
}
paiAngan(showAngan.isChecked());
for (int i = 0; i < 8 ; i++) {
String state = qimenUtil.menState(qimenUnits[i].getGong(), qimenUnits[i].getMen());
state = state.substring(state.length() - 1); //取最后一個字
String stateString = "";
switch (state) {
case "制":
stateString = "宮制門";
break;
case "迫":
stateString = "門迫宮";
break;
case "和":
stateString = "門生宮";
break;
case "義":
stateString = "宮生門";
break;
case "比":
stateString = "門比合宮";
break;
}
keyings[i].setText(GongStrs[i] + "宮 " + stateString + "\n" + qimenUtil.geju(qimenUnits[i].getTianpan(), qimenUnits[i].getDipan()) + "\n"
+ qimenUtil.geju(qimenUnits[i].getAngan(), qimenUnits[i].getDipan()));
}
private void paiAngan(boolean show) { //排暗干
if (show) {
for (int i = 0; i < 8; i++) { //排左下角的八神:值符跟著地盤旬首,陽遁順排,陰遁逆排
if (yindun) {
qimenUnits[(xunshouLuogong - i + 8) % 8].setXiaozhifu(Xiaoshens[i]);
} else {
qimenUnits[(xunshouLuogong + i) % 8].setXiaozhifu(Xiaoshens[i]);
}
}
//排暗干:1、時干隨值使,陽順陰逆。2、時干與值使門落宮的地盤奇儀相同則時干入中宮。
for (int i = 0; i < 9; i++) {
if (yindun) { //陰遁逆排
if (qimenUnits[zhishiLuogong].getDipan().equals(shizhuYi)) {
qimenUnits[Gongweis[(5 - i + 9) % 9]].setAngan(QiYis[(qiyiList.indexOf(shizhuYi) + i) % 9]);
} else {
qimenUnits[Gongweis[(gongweiList.indexOf(primaryZhishiluogon) - i + 9) % 9]].setAngan(QiYis[(qiyiList.indexOf(shizhuYi) + i) % 9]);
}
} else { //陽遁順排
if (qimenUnits[zhishiLuogong].getDipan().equals(shizhuYi)) {
qimenUnits[Gongweis[(5 + i) % 9]].setAngan(QiYis[(qiyiList.indexOf(shizhuYi) + i) % 9]);
} else {
qimenUnits[Gongweis[(gongweiList.indexOf(primaryZhishiluogon) + i) % 9]].setAngan(QiYis[(qiyiList.indexOf(shizhuYi) + i) % 9]);
}
}
}
} else {
for (int i = 0; i < 8; i++) {
qimenUnits[i].setXiaozhifu("");
}
for (int i = 0; i < 9; i++) {
qimenUnits[i].setAngan("");
}
}
}

Screenshot_20220708_185901.jpg