getMajorStar function

List<List<FunctionalStar>> getMajorStar(
  1. String solarDateStr,
  2. int timeIndex, [
  3. bool? fixLeap
])

安主星,寅宫下标为0,若下标对应的数组为空数组则表示没有星耀

安紫微诸星诀

  • 紫微逆去天机星,隔一太阳武曲辰,
  • 连接天同空二宫,廉贞居处方是真。

安天府诸星诀

  • 天府顺行有太阴,贪狼而后巨门临,
  • 随来天相天梁继,七杀空三是破军。

@param solarDateStr 公历日期 YYYY-MM-DD @param timeIndex 时辰索引【0~12】 @param fixLeap 是否调整农历闰月(若该月不是闰月则不会生效) @returns {Array<Star[]>} 从寅宫开始每一个宫的星耀

Implementation

List<List<FunctionalStar>> getMajorStar(
  String solarDateStr,
  int timeIndex, [
  bool? fixLeap,
]) {
  var indexMaps = getStartIndex(solarDateStr, timeIndex);
  int ziweiIndex = indexMaps["ziweiIndex"] ?? -1;
  int tianFuIndex = indexMaps["tianfuIndex"] ?? -1;

  final heavenlyStemBranch = getHeavenlyStemAndEarthlyBranchSolarDate(
    solarDateStr,
    timeIndex,
    getConfig().yearDivide,
  );
  final stars = initStars();

  const ziweiGroup = [
    ziWeiMaj,
    tianJiMaj,
    '',
    taiYangMaj,
    wuQuMaj,
    tianTongMaj,
    '',
    '',
    lianZhenMaj,
  ];
  const tianfuGroup = [
    tianFuMaj,
    taiYinMaj,
    tanLangMaj,
    juMenMaj,
    tianXiangMaj,
    tianLiangMaj,
    qiShaMaj,
    '',
    '',
    '',
    poJunMaj,
  ];
  for (int i = 0; i < ziweiGroup.length; i++) {
    final element = ziweiGroup[i];
    if (element.isNotEmpty) {
      final star = FunctionalStar(
        Star(
          name: getStarNameFrom(element),
          type: StarType.major,
          scope: Scope.origin,
          brightness: getBrightness(
            getStarNameFrom(element),
            fixIndex(ziweiIndex - i),
          ),
          mutagen: getMutagen(
            getStarNameFrom(element),
            getMyHeavenlyStemNameFrom(heavenlyStemBranch.yearly[0]),
          ),
        ),
      );
      stars[fixIndex(ziweiIndex - i)].add(star);
    }
  }

  for (int i = 0; i < tianfuGroup.length; i++) {
    final element = tianfuGroup[i];
    if (element.isNotEmpty) {
      final star = FunctionalStar(
        Star(
          name: getStarNameFrom(element),
          type: StarType.major,
          scope: Scope.origin,
          brightness: getBrightness(
            getStarNameFrom(element),
            fixIndex(tianFuIndex + i),
          ),
          mutagen: getMutagen(
            getStarNameFrom(element),
            getMyHeavenlyStemNameFrom(heavenlyStemBranch.yearly[0]),
          ),
        ),
      );
      stars[fixIndex(tianFuIndex + i)].add(star);
    }
  }

  return stars;
}