fix(varga): source D5/D6/D8/D11 from PVR 6.2 (BUG-1260, upstream f32472b5)
This commit is contained in:
@@ -159,6 +159,14 @@ class DivisionalChartsCalculator:
|
||||
Returns:
|
||||
分盘中的黄道度数(0-360)
|
||||
"""
|
||||
# D5/D6/D8/D11 share the sourced PVR mapping in varga.calc_varga.
|
||||
if division in (5, 6, 8, 11):
|
||||
try:
|
||||
from varga import calc_varga
|
||||
except ImportError:
|
||||
from scripts.varga import calc_varga
|
||||
point = calc_varga(degree, division)
|
||||
return point['sign_idx'] * 30 + point['degree_in_sign']
|
||||
# 获取星座索引和星座内度数
|
||||
sign_index = int(degree // 30)
|
||||
sign_degree = degree % 30
|
||||
@@ -445,44 +453,20 @@ class DivisionalChartsCalculator:
|
||||
return self._calculate_d12(d12_sign, d12_deg)
|
||||
|
||||
def _calculate_d5(self, sign_index: int, sign_degree: float) -> float:
|
||||
"""D5 Panchamsa - 名声/权力分盘"""
|
||||
part = int(sign_degree // 6)
|
||||
if sign_index in self.ODD_SIGNS:
|
||||
varga_sign = (sign_index + part) % 12
|
||||
else:
|
||||
varga_sign = (sign_index + 8 + part) % 12
|
||||
varga_degree = (sign_degree % 6) * 5
|
||||
return varga_sign * 30 + varga_degree
|
||||
"""PVR 6.2.5 mapping shared with varga.calc_varga."""
|
||||
return self._calculate_varga_position(sign_index * 30 + sign_degree, 5)
|
||||
|
||||
def _calculate_d6(self, sign_index: int, sign_degree: float) -> float:
|
||||
"""D6 Shashthamsa - 健康/敌人分盘"""
|
||||
part = int(sign_degree // 5)
|
||||
if sign_index in self.ODD_SIGNS:
|
||||
varga_sign = (sign_index + part) % 12
|
||||
else:
|
||||
varga_sign = (sign_index + 6 + part) % 12
|
||||
varga_degree = (sign_degree % 5) * 6
|
||||
return varga_sign * 30 + varga_degree
|
||||
"""PVR 6.2.6 mapping shared with varga.calc_varga."""
|
||||
return self._calculate_varga_position(sign_index * 30 + sign_degree, 6)
|
||||
|
||||
def _calculate_d8(self, sign_index: int, sign_degree: float) -> float:
|
||||
"""D8 Ashtamsa - 突发事件分盘"""
|
||||
part = int(sign_degree // 3.75)
|
||||
if sign_index in self.ODD_SIGNS:
|
||||
varga_sign = (sign_index + part) % 12
|
||||
else:
|
||||
varga_sign = (sign_index + 8 + part) % 12
|
||||
varga_degree = (sign_degree % 3.75) * 8
|
||||
return varga_sign * 30 + varga_degree
|
||||
"""PVR 6.2.8 mapping shared with varga.calc_varga."""
|
||||
return self._calculate_varga_position(sign_index * 30 + sign_degree, 8)
|
||||
|
||||
def _calculate_d11(self, sign_index: int, sign_degree: float) -> float:
|
||||
"""D11 Rudramsa - 破坏/转化分盘"""
|
||||
part = int(sign_degree // (30/11))
|
||||
if sign_index in self.ODD_SIGNS:
|
||||
varga_sign = (sign_index + part) % 12
|
||||
else:
|
||||
varga_sign = (sign_index + 8 + part) % 12
|
||||
varga_degree = (sign_degree % (30/11)) * 11
|
||||
return varga_sign * 30 + varga_degree
|
||||
"""PVR 6.2.11 mapping shared with varga.calc_varga."""
|
||||
return self._calculate_varga_position(sign_index * 30 + sign_degree, 11)
|
||||
|
||||
def _calculate_generic_varga(self, sign_index: int, sign_degree: float, division: int) -> float:
|
||||
"""通用分盘算法(适用于其他分盘)"""
|
||||
|
||||
Reference in New Issue
Block a user