getHuoLingIndex function

Map<String, int> getHuoLingIndex(
  1. EarthlyBranchName earthlyBranchName,
  2. int timeIndex
)

获取火星铃星索引(按年支以及时支)

  • 申子辰人寅戌扬
  • 寅午戌人丑卯方
  • 巳酉丑人卯戌位
  • 亥卯未人酉戌房

起火铃二耀先据出生年支,依口诀定火铃起子时位。

例如壬辰年卯时生人,据申子辰人寅戌扬口诀,故火星在寅宫起子时,铃星在戌宫起子时,顺数至卯时,即火星在巳,铃星在丑。

@param earthlyBranchName 地支 @param timeIndex 时辰序号 @returns 火星、铃星索引

Implementation

Map<String, int> getHuoLingIndex(
  EarthlyBranchName earthlyBranchName,
  int timeIndex,
) {
  var huoIndex = -1;
  var lingIndex = -1;
  final fixedTimeIndex = fixIndex(timeIndex);
  switch (earthlyBranchName) {
    case EarthlyBranchName.yinEarthly:
    case EarthlyBranchName.wuEarthly:
    case EarthlyBranchName.xuEarthly:
      huoIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.chouEarthly) + fixedTimeIndex;
      lingIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.maoEarthly) + fixedTimeIndex;
      break;
    case EarthlyBranchName.shenEarthly:
    case EarthlyBranchName.ziEarthly:
    case EarthlyBranchName.chenEarthly:
      huoIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.yinEarthly) + fixedTimeIndex;
      lingIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.xuEarthly) + fixedTimeIndex;
      break;
    case EarthlyBranchName.siEarthly:
    case EarthlyBranchName.youEarthly:
    case EarthlyBranchName.chouEarthly:
      huoIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.maoEarthly) + fixedTimeIndex;
      lingIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.xuEarthly) + fixedTimeIndex;
      break;
    case EarthlyBranchName.haiEarthly:
    case EarthlyBranchName.weiEarthly:
    case EarthlyBranchName.maoEarthly:
      huoIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.youEarthly) + fixedTimeIndex;
      lingIndex =
          fixEarthlyBranchIndex(EarthlyBranchName.xuEarthly) + fixedTimeIndex;
      break;
  }
  return {"huoIndex": fixIndex(huoIndex), "lingIndex": fixIndex(lingIndex)};
}