fix: reverse Rahu degree in eight-karaka ranking
(cherry picked from commit 197672e3f1c5d06fe44f0da196d36f6cf4a856cf)
This commit is contained in:
+13
-5
@@ -132,21 +132,29 @@ def calc_chara_karaka_7(planet_degrees: Dict[str, float]) -> Dict:
|
||||
|
||||
|
||||
def calc_chara_karaka_8(planet_degrees: Dict[str, float]) -> Dict:
|
||||
"""计算8星制Chara Karaka(含Rahu,Ketu排除)。"""
|
||||
"""计算8星制Chara Karaka(含Rahu,Ketu排除)。
|
||||
|
||||
8星制按传统规则以 ``30 - Rahu 的星座内度数`` 排序;其余行星
|
||||
使用原始星座内度数。原始值和排序值都保留在结果中,便于审计。
|
||||
"""
|
||||
planets = {}
|
||||
for pname, deg in planet_degrees.items():
|
||||
if pname == 'Ketu':
|
||||
continue
|
||||
planets[pname] = deg
|
||||
sorted_planets = sorted(planets.items(), key=lambda x: x[1], reverse=True)
|
||||
raw_degree = float(deg) % 30.0
|
||||
effective_degree = (30.0 - raw_degree) % 30.0 if pname == 'Rahu' else raw_degree
|
||||
planets[pname] = (raw_degree, effective_degree)
|
||||
sorted_planets = sorted(planets.items(), key=lambda x: x[1][1], reverse=True)
|
||||
results = {}
|
||||
for rank, (pname, deg) in enumerate(sorted_planets, 1):
|
||||
for rank, (pname, (raw_degree, effective_degree)) in enumerate(sorted_planets, 1):
|
||||
if rank > 8:
|
||||
break
|
||||
karaka = KARAKA_8[rank]
|
||||
results[karaka] = {
|
||||
'planet': pname,
|
||||
'degree_in_sign': round(deg, 4),
|
||||
'degree_in_sign': round(raw_degree, 4),
|
||||
'effective_degree_in_sign': round(effective_degree, 4),
|
||||
'rahu_reverse_applied': pname == 'Rahu',
|
||||
'rank': rank,
|
||||
'domain': KARAKA_DOMAINS.get(karaka, ''),
|
||||
'cn_name': KARAKA_CN.get(karaka, karaka),
|
||||
|
||||
Reference in New Issue
Block a user