getLuYangTuoMaIndex function

Map<String, int> getLuYangTuoMaIndex(
  1. HeavenlyStemName heavenlyStemName,
  2. EarthlyBranchName earthlyBranchName
)

按年干支计算禄存、擎羊,陀罗、天马的索引

定禄存、羊、陀诀(按年干)

  • 甲禄到寅宫,乙禄居卯府。
  • 丙戊禄在巳,丁己禄在午。
  • 庚禄定居申,辛禄酉上补。
  • 壬禄亥中藏,癸禄居子户。
  • 禄前羊刃当,禄后陀罗府。

安天马(按年支),天马只会出现在四马地【寅申巳亥】

  • 寅午戍流马在申,申子辰流马在寅。
  • 巳酉丑流马在亥,亥卯未流马在巳。

@param heavenlyStemName 天干 @param earthlyBranchName 地支 @returns 禄存、擎羊,陀罗、天马的索引

Implementation

Map<String, int> getLuYangTuoMaIndex(
  HeavenlyStemName heavenlyStemName,
  EarthlyBranchName earthlyBranchName,
) {
  int luIndex = -1; // 禄存索引
  int maIndex = 0; // 天马索引
  switch (earthlyBranchName) {
    case EarthlyBranchName.yinEarthly:
    case EarthlyBranchName.wuEarthly:
    case EarthlyBranchName.xuEarthly:
      maIndex = fixEarthlyBranchIndex(EarthlyBranchName.shenEarthly);
      break;
    case EarthlyBranchName.shenEarthly:
    case EarthlyBranchName.ziEarthly:
    case EarthlyBranchName.chenEarthly:
      maIndex = fixEarthlyBranchIndex(EarthlyBranchName.yinEarthly);
      break;
    case EarthlyBranchName.siEarthly:
    case EarthlyBranchName.youEarthly:
    case EarthlyBranchName.chouEarthly:
      maIndex = fixEarthlyBranchIndex(EarthlyBranchName.haiEarthly);
      break;
    case EarthlyBranchName.haiEarthly:
    case EarthlyBranchName.maoEarthly:
    case EarthlyBranchName.weiEarthly:
      maIndex = fixEarthlyBranchIndex(EarthlyBranchName.siEarthly);
      break;
  }

  switch (heavenlyStemName) {
    case HeavenlyStemName.jiaHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.yinEarthly);
      break;
    case HeavenlyStemName.yiHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.maoEarthly);
      break;
    case HeavenlyStemName.bingHeavenly:
    case HeavenlyStemName.wuHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.siEarthly);
      break;
    case HeavenlyStemName.dingHeavenly:
    case HeavenlyStemName.jiHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.wuEarthly);
      break;
    case HeavenlyStemName.gengHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.shenEarthly);
      break;
    case HeavenlyStemName.xinHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.youEarthly);
      break;
    case HeavenlyStemName.renHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.haiEarthly);
      break;
    case HeavenlyStemName.guiHeavenly:
      luIndex = fixEarthlyBranchIndex(EarthlyBranchName.ziEarthly);
      break;
  }
  return {
    'luIndex': luIndex,
    'maIndex': maIndex,
    'yangIndex': fixIndex(luIndex + 1),
    'tuoIndex': fixIndex(luIndex - 1),
  };
}