getYearlyStarIndex function
获取年系星的索引,包括 咸池,华盖,孤辰,寡宿, 天厨,破碎,天才,天寿,蜚蠊, 龙池,凤阁,天哭,天虚, 天官,天福
-
安天才天寿
- 天才由命宫起子,顺行至本生年支安之。天寿由身宫起子,顺行至本生年支安之。
-
安破碎
- 子午卯酉年安巳宫,寅申巳亥年安酉宫,辰戍丑未年安丑宫。
-
安天厨
- 甲丁食蛇口,乙戊辛马方。丙从鼠口得,己食于猴房。庚食虎头上,壬鸡癸猪堂。
-
安蜚蠊
- 子丑寅年在申酉戍,卯辰巳年在巳午未,午未申年在寅卯辰,酉戍亥年在亥子丑。
-
安龙池凤阁
- 龙池从辰宫起子,顺至本生年支安之。凤阁从戍宫起子,逆行至本生年支安之。
-
安天哭天虚
- 天哭天虚起午宫,午宫起子两分踪,哭逆行兮虚顺转,数到生年便停留。
-
安天官天福
- 甲喜羊鸡乙龙猴,丙年蛇鼠一窝谋。丁虎擒猪戊玉兔,
- 己鸡居然与虎俦。庚猪马辛鸡蛇走,壬犬马癸马蛇游。
-
安截路空亡(截空)
- 甲己之年申酉,乙庚之年午未,
- 丙辛之年辰巳,丁壬之年寅卯,
- 戊癸之年子丑。
-
安天空
- 生年支顺数的前一位就是。 @param solarDate 阳历日期 @param timeIndex 时辰序号 @param fixLeap 是否修复闰月,假如当月不是闰月则不生效
Implementation
Map<String, int> getYearlyStarIndex(AstrolabeParams params) {
final config = getConfig();
final heavenlyStemEarthlyBranch = getHeavenlyStemAndEarthlyBranchSolarDate(
params.solarDate,
params.timeIndex,
config.horoscopeDivide,
);
final soulAndBody = getSoulAndBody(params);
HeavenlyStemName heavenlyStem = getMyHeavenlyStemNameFrom(
heavenlyStemEarthlyBranch.yearly[0] ?? "Heavenly",
);
EarthlyBranchName earthlyBranchName = getMyEarthlyBranchNameFrom(
heavenlyStemEarthlyBranch.yearly[1] ?? "Earthly",
);
Map<String, int> huaXuanMaps = getHuaGaiXianChiIndex(earthlyBranchName);
Map<String, int> guGuaMaps = getGuGuaIndex(earthlyBranchName);
int huaGaiIndex = huaXuanMaps["hgIdx"] ?? -1;
int xianChiIndex = huaXuanMaps["xcIdx"] ?? -1;
int guChenIndex = guGuaMaps["guChenIndex"] ?? -1;
int guasuIndex = guGuaMaps["guaSuIndex"] ?? -1;
int tianCaiIndex = fixIndex(
soulAndBody.soulIndex + earthlyBranches.indexOf(earthlyBranchName.key),
);
int tianShouIndex = fixIndex(
soulAndBody.bodyIndex + earthlyBranches.indexOf(earthlyBranchName.key),
);
final index = heavenlyStems.indexOf(heavenlyStem.key);
String tianEarthBranch =
[
siEarthly,
wuEarthly,
ziEarthly,
siEarthly,
wuEarthly,
shenEarthly,
yinEarthly,
wuEarthly,
youEarthly,
haiEarthly,
][index];
int tianChuIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(tianEarthBranch)),
);
int pusuiEarthBranchIndex =
earthlyBranches.indexOf(earthlyBranchName.key) % 3;
String posuiEarthBranch =
[siEarthly, chouEarthly, youEarthly][pusuiEarthBranchIndex];
int posuiIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(posuiEarthBranch)),
);
int feilianbranchIndex = earthlyBranches.indexOf(earthlyBranchName.key);
String feilianBranch =
[
shenEarthly,
youEarthly,
xuEarthly,
siEarthly,
wuEarthly,
weiEarthly,
yinEarthly,
maoEarthly,
chenEarthly,
haiEarthly,
ziEarthly,
chouEarthly,
][feilianbranchIndex];
int feiLianIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(feilianBranch)),
);
int longChinIndex = fixIndex(
fixEarthlyBranchIndex(EarthlyBranchName.chenEarthly) +
earthlyBranches.indexOf(earthlyBranchName.key),
);
int fenGeIndex = fixIndex(
fixEarthlyBranchIndex(EarthlyBranchName.xuEarthly) -
earthlyBranches.indexOf(earthlyBranchName.key),
);
int tianKuIndex = fixIndex(
fixEarthlyBranchIndex(EarthlyBranchName.wuEarthly) -
earthlyBranches.indexOf(earthlyBranchName.key),
);
int tianXuIndex = fixIndex(
fixEarthlyBranchIndex(EarthlyBranchName.wuEarthly) +
earthlyBranches.indexOf(earthlyBranchName.key),
);
int tianGuanBranchIndex = heavenlyStems.indexOf(heavenlyStem.key);
String tianGuanBranch =
[
weiEarthly,
chenEarthly,
siEarthly,
yinEarthly,
maoEarthly,
youEarthly,
haiEarthly,
youEarthly,
xuEarthly,
wuEarthly,
][tianGuanBranchIndex];
int tianGuanIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(tianGuanBranch)),
);
int tianFuBranchIndex = heavenlyStems.indexOf(heavenlyStem.key);
String tianFuEarthlyBranch =
[
youEarthly,
shenEarthly,
ziEarthly,
haiEarthly,
maoEarthly,
yinEarthly,
wuEarthly,
siEarthly,
wuEarthly,
siEarthly,
][tianFuBranchIndex];
int tianFuIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(tianFuEarthlyBranch)),
);
int tianDeIndex = fixIndex(
fixEarthlyBranchIndex(EarthlyBranchName.youEarthly) +
earthlyBranches.indexOf(earthlyBranchName.key),
);
int yueDeIndex = fixIndex(
fixEarthlyBranchIndex(EarthlyBranchName.siEarthly) +
earthlyBranches.indexOf(earthlyBranchName.key),
);
int tianKongIndex = fixIndex(
fixEarthlyBranchIndex(
getMyEarthlyBranchNameFrom(heavenlyStemEarthlyBranch.yearly[1]),
) +
1,
);
int jieLuHeanvelyIndex = heavenlyStems.indexOf(heavenlyStem.key) % 5;
String jieLuEarthlyBranch =
[
shenEarthly,
wuEarthly,
chenEarthly,
yinEarthly,
ziEarthly,
][jieLuHeanvelyIndex];
int jieLuIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(jieLuEarthlyBranch)),
);
int kongWangEarthlyIndex = heavenlyStems.indexOf(heavenlyStem.key) % 5;
String kongWangEarthlyBranch =
[
youEarthly,
weiEarthly,
siEarthly,
maoEarthly,
chouEarthly,
][kongWangEarthlyIndex];
int kongWangIndex = fixIndex(
fixEarthlyBranchIndex(getMyEarthlyBranchNameFrom(kongWangEarthlyBranch)),
);
int xunKongIndex = fixIndex(
fixEarthlyBranchIndex(
getMyEarthlyBranchNameFrom(heavenlyStemEarthlyBranch.yearly[1]),
) +
heavenlyStems.indexOf(guiHeavenly) -
heavenlyStems.indexOf(heavenlyStem.key) +
1,
);
// 判断命主出生年年支阴阳属性,如果结果为0则为阳,否则为阴
final yinyang = earthlyBranches.indexOf(earthlyBranchName.key) % 2;
if (yinyang != xunKongIndex % 2) {
xunKongIndex = fixIndex(xunKongIndex + 1);
}
// int tianShangIndex = fixIndex(
// palaces.indexOf("friendsPalace") + soulAndBody.soulIndex,
// );
// int tianShiIndex = fixIndex(
// palaces.indexOf("healthPalace") + soulAndBody.soulIndex,
// );
/// 中州派没有截路空亡,只有一颗截空星
/// 生年阳干在阳宫,阴干在阴宫
final jiekongIndex = yinyang == 0 ? jieLuIndex : kongWangIndex;
final jieshaAdjIndex = getJieShaAdjIndex(earthlyBranchName);
final nianjieIndex =
getNianJieIndex(
getMyEarthlyBranchNameFrom(heavenlyStemEarthlyBranch.yearly[1]),
)['nianJieIndex'] ??
-1;
final daHaoIndex = getDaHaoIndex(earthlyBranchName);
print('dahaoindex $daHaoIndex');
final genderYinYang = [GenderName.male, GenderName.female];
final sameYinYang =
yinyang == genderYinYang.indexOf(params.gender ?? GenderName.male);
int tianShangIndex = fixIndex(
palaces.indexOf(PalaceName.friendsPalace.key) + soulAndBody.soulIndex,
);
int tianShiIndex = fixIndex(
palaces.indexOf(PalaceName.healthPalace.key) + soulAndBody.soulIndex,
);
if (config.algorithm == Algorithm.zhongZhou && !sameYinYang) {
// 中州派的天使天伤与通行版本不一样
// 天伤奴仆、天使疾厄、夹迁移宫最易寻得
// 凡阳男阴女,皆依此诀,但若为阴男阳女,则改为天伤居疾厄、天使居奴仆。
var temp = tianShiIndex;
tianShiIndex = tianShangIndex;
tianShangIndex = temp;
}
return {
"xianChiIndex": xianChiIndex,
"huaGaiIndex": huaGaiIndex,
"guChenIndex": guChenIndex,
"guaSuIndex": guasuIndex,
"tianCaiIndex": tianCaiIndex,
"tianShouIndex": tianShouIndex,
"tianChuIndex": tianChuIndex,
"poSuiIndex": posuiIndex,
"feiLianIndex": feiLianIndex,
"longChiIndex": longChinIndex,
"fenGeIndex": fenGeIndex,
"tianKuIndex": tianKuIndex,
"tianXuIndex": tianXuIndex,
"tianGuanIndex": tianGuanIndex,
"tianFuIndex": tianFuIndex,
"tianDeIndex": tianDeIndex,
"yueDeIndex": yueDeIndex,
"tianKongIndex": tianKongIndex,
"jieLuIndex": jieLuIndex,
"kongWangIndex": kongWangIndex,
"xunKongIndex": xunKongIndex,
"tianShangIndex": tianShangIndex,
"tianShiIndex": tianShiIndex,
'jieKongIndex': jiekongIndex,
'jieShaAdjIndex': jieshaAdjIndex,
'nianJieIndex': nianjieIndex,
'daHaoIndex': daHaoIndex,
};
}